@@ -41,6 +41,165 @@ Example : MCP server configuration
4141
4242 helm upgrade robusta robusta/robusta --values=generated_values.yaml --set clusterName=< YOUR_CLUSTER_NAME>
4343
44+
45+ Example : Working with Stdio MCP servers
46+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47+
48+ MCP currently supports three transport mechanisms: stdio, Server-Sent Events (SSE), and Streamable HTTP.
49+ At this time, HolmesGPT is compatible only with MCP servers that use SSE.
50+ However, many existing MCP servers—such as Dynatrace MCP—rely exclusively on the stdio transport.
51+ To overcome this incompatibility, tools like Supergateway can act as a bridge by converting stdio-based MCPs into SSE-compatible endpoints.
52+
53+ For this demo we will use
54+ * `Dynatrace MCP <https://github.com/dynatrace-oss/dynatrace-mcp >`_ .
55+ * `Supergateway <https://github.com/supercorp-ai/supergateway >`_ - runs MCP stdio-based servers over SSE.
56+
57+ Check out supergatway docs to find out other useful flags.
58+
59+ **See it in action **
60+
61+ .. raw :: html
62+
63+ <div >
64+ <a href =" https://www.loom.com/share/1b290511b79942c7b1d672a2a4cde105" >
65+ <img style =" max-width :300px ;" src =" https://cdn.loom.com/sessions/thumbnails/1b290511b79942c7b1d672a2a4cde105-ed4eed3f9d70b125-full-play.gif" >
66+ </a >
67+ </div >
68+
69+ 1. Run stdio MCP as SSE
70+ """"""""""""""""""""""""""""""
71+ .. md-tab-set ::
72+
73+ .. md-tab-item :: Docker
74+
75+ This command runs the Dynatrace MCP server locally via Docker using Supergateway to wrap it with SSE support.
76+ Credentials (e.g., API keys) should be stored in a .env file passed to Docker using --env-file.
77+ you can change `"npx -y @dynatrace-oss/dynatrace-mcp-server@latest /" ` to your specific MCP.
78+
79+ .. code-block :: shell
80+
81+ docker run --env-file .env -it --rm -p 8003:8003 supercorp/supergateway \
82+ --stdio " npx -y @dynatrace-oss/dynatrace-mcp-server@latest /" \
83+ --port 8003 \
84+ --logLevel debug
85+
86+ Once the container starts, you should see logs similar to:
87+
88+ .. code-block :: shell
89+
90+ [supergateway] Starting...
91+ [supergateway] Supergateway is supported by Supermachine (hosted MCPs) - https://supermachine.ai
92+ [supergateway] - outputTransport: sse
93+ [supergateway] - Headers: (none)
94+ [supergateway] - port: 8003
95+ [supergateway] - stdio: npx -y @dynatrace-oss/dynatrace-mcp-server@latest /
96+ [supergateway] - ssePath: /sse
97+ [supergateway] - messagePath: /message
98+ [supergateway] - CORS: disabled
99+ [supergateway] - Health endpoints: (none)
100+ [supergateway] Listening on port 8003
101+ [supergateway] SSE endpoint: http://localhost:8003/sse
102+ [supergateway] POST messages: http://localhost:8003/message
103+
104+ .. md-tab-item :: Kubernetes Pod
44105
106+ | This will run dynatrace MCP server as a pod in your cluster.
107+ | credentials are passed as env vars.
108+
109+ .. code-block :: yaml
110+
111+ apiVersion : v1
112+ kind : Pod
113+ metadata :
114+ name : dynatrace-mcp
115+ labels :
116+ app : dynatrace-mcp
117+ spec :
118+ containers :
119+ - name : supergateway
120+ image : supercorp/supergateway
121+ env :
122+ - name : DT_ENVIRONMENT
123+ value : https://abcd1234.apps.dynatrace.com
124+ - name : OAUTH_CLIENT_ID
125+ value : dt0s02.SAMPLE
126+ - name : OAUTH_CLIENT_SECRET
127+ valueFrom :
128+ secretKeyRef :
129+ name : dynatrace-credentials
130+ key : client_secret
131+ ports :
132+ - containerPort : 8003
133+ args :
134+ - " --stdio"
135+ - " npx -y @dynatrace-oss/dynatrace-mcp-server@latest /"
136+ - " --port"
137+ - " 8003"
138+ - " --logLevel"
139+ - " debug"
140+ stdin : true
141+ tty : true
142+ ---
143+ apiVersion : v1
144+ kind : Service
145+ metadata :
146+ name : dynatrace-mcp
147+ spec :
148+ selector :
149+ app : dynatrace-mcp
150+ ports :
151+ - protocol : TCP
152+ port : 8003
153+ targetPort : 8003
154+ type : ClusterIP
155+
156+
157+ 2. Add MCP server to holmes config.
158+ """"""""""""""""""""""""""""""""""""""
159+
160+ With the MCP server running in SSE mode, we need to let HolmesGPT know of the mcp server.
161+ Use this config according to your use case.
162+
163+ **Configuration: **
164+
165+ .. md-tab-set ::
45166
167+ .. md-tab-item :: Holmes CLI
168+
169+ Use a config file, and pass it when running cli commands.
170+
171+ **custom_toolset.yaml: **
172+
173+ .. code-block :: yaml
174+
175+ mcp_servers :
176+ mcp_server_1 :
177+ description : " Dynatrace observability platform. Bring real-time observability data directly into your development workflow."
178+ url : " http://localhost:8003/sse"
179+
180+ You can now use Holmes via the CLI with your configured MCP server. For example:
181+
182+ .. code-block :: bash
183+
184+ holmes ask -t custom_toolset.yaml " Using dynatrace what issues do I have in my cluster?"
185+
186+ .. md-tab-item :: Robusta Helm Chart
187+
188+ **Helm Values: **
189+
190+ .. code-block :: yaml
191+
192+ holmes :
193+ mcp_servers :
194+ mcp_server_1 :
195+ description : " Dynatrace observability platform. Bring real-time observability data directly into your development workflow."
196+ url : " http://dynatrace-mcp.default.svc.cluster.local:8003"
197+
198+
199+ Update your Helm values with the provided YAML configuration, then apply the changes with Helm upgrade:
200+
201+ .. code-block :: bash
202+
203+ helm upgrade robusta robusta/robusta --values=generated_values.yaml --set clusterName=< YOUR_CLUSTER_NAME>
46204
205+ 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? *.
0 commit comments