Remote MCP ServersΒΆ
Warning
Remote MCP servers are in Tech Preview stage.
HolmesGPT can integrate with remote MCP servers using SSE mode. This capability enables HolmesGPT to access external data sources and tools in real time. This guide provides step-by-step instructions for configuring HolmesGPT to connect with remote MCP servers over SSE.
Example : MCP server configurationΒΆ
Helm Values:
holmes:
mcp_servers:
mcp_server_1:
# human-readable description of the mcp server (this is not seen by the AI model - its just for users)
description: "Remote mcp server"
url: "http://example.com:8000/sse"
mcp_server_2:
description: "MCP server that runs in my cluster"
url: "http://<service-name>.<namespace>.svc.cluster.local:<service-port>"
config:
headers:
key: "{{ env.my_mcp_server_key }}" # You can use holmes environment variables as headers for the MCP server requests.
Update your Helm values with the provided YAML configuration, then apply the changes with Helm upgrade:
helm upgrade robusta robusta/robusta --values=generated_values.yaml --set clusterName=<YOUR_CLUSTER_NAME>
Example : Working with Stdio MCP serversΒΆ
MCP currently supports three transport mechanisms: stdio, Server-Sent Events (SSE), and Streamable HTTP. At this time, HolmesGPT is compatible only with MCP servers that use SSE. However, many existing MCP serversβsuch as Dynatrace MCPβrely exclusively on the stdio transport. To overcome this incompatibility, tools like Supergateway can act as a bridge by converting stdio-based MCPs into SSE-compatible endpoints.
- For this demo we will use
Supergateway - runs MCP stdio-based servers over SSE.
Check out supergatway docs to find out other useful flags.
See it in action
1. Run stdio MCP as SSEΒΆ
This command runs the Dynatrace MCP server locally via Docker using Supergateway to wrap it with SSE support. Credentials (e.g., API keys) should be stored in a .env file passed to Docker using --env-file. you can change "npx -y @dynatrace-oss/dynatrace-mcp-server@latest /" to your specific MCP.
docker run --env-file .env -it --rm -p 8003:8003 supercorp/supergateway \
--stdio "npx -y @dynatrace-oss/dynatrace-mcp-server@latest /" \
--port 8003 \
--logLevel debug
Once the container starts, you should see logs similar to:
[supergateway] Starting...
[supergateway] Supergateway is supported by Supermachine (hosted MCPs) - https://supermachine.ai
[supergateway] - outputTransport: sse
[supergateway] - Headers: (none)
[supergateway] - port: 8003
[supergateway] - stdio: npx -y @dynatrace-oss/dynatrace-mcp-server@latest /
[supergateway] - ssePath: /sse
[supergateway] - messagePath: /message
[supergateway] - CORS: disabled
[supergateway] - Health endpoints: (none)
[supergateway] Listening on port 8003
[supergateway] SSE endpoint: http://localhost:8003/sse
[supergateway] POST messages: http://localhost:8003/message
apiVersion: v1
kind: Pod
metadata:
name: dynatrace-mcp
labels:
app: dynatrace-mcp
spec:
containers:
- name: supergateway
image: supercorp/supergateway
env:
- name: DT_ENVIRONMENT
value: https://abcd1234.apps.dynatrace.com
- name: OAUTH_CLIENT_ID
value: dt0s02.SAMPLE
- name: OAUTH_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: dynatrace-credentials
key: client_secret
ports:
- containerPort: 8003
args:
- "--stdio"
- "npx -y @dynatrace-oss/dynatrace-mcp-server@latest /"
- "--port"
- "8003"
- "--logLevel"
- "debug"
stdin: true
tty: true
---
apiVersion: v1
kind: Service
metadata:
name: dynatrace-mcp
spec:
selector:
app: dynatrace-mcp
ports:
- protocol: TCP
port: 8003
targetPort: 8003
type: ClusterIP
2. Add MCP server to holmes config.ΒΆ
With the MCP server running in SSE mode, we need to let HolmesGPT know of the mcp server. Use this config according to your use case.
Configuration:
Use a config file, and pass it when running cli commands.
custom_toolset.yaml:
mcp_servers:
mcp_server_1:
description: "Dynatrace observability platform. Bring real-time observability data directly into your development workflow."
url: "http://localhost:8003/sse"
You can now use Holmes via the CLI with your configured MCP server. For example:
holmes ask -t custom_toolset.yaml "Using dynatrace what issues do I have in my cluster?"
Helm Values:
holmes:
mcp_servers:
mcp_server_1:
description: "Dynatrace observability platform. Bring real-time observability data directly into your development workflow."
url: "http://dynatrace-mcp.default.svc.cluster.local:8003"
Update your Helm values with the provided YAML configuration, then apply the changes with Helm upgrade:
helm upgrade robusta robusta/robusta --values=generated_values.yaml --set clusterName=<YOUR_CLUSTER_NAME>
After the deployment is complete, you can open the HolmesGPT chat in the Robusta SaaS UI and ask questions like Using dynatrace what issues do I have in my cluster?.