You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -192,11 +192,24 @@ and calls real MCP tools to investigate live incidents:
192
192
|**`execute_dql`**| Fetch logs / events / spans / metrics via Grail DQL as investigation evidence |
193
193
|**`find_entity_by_name`**| Resolve the affected monitored entity |
194
194
195
-
A single MCP server process + session is spawned and reused, so the OAuth login happens once.
195
+
A single MCP server process + session is spawned and reused, so the interactive Dynatrace
196
+
OAuth login happens **once** per run.
197
+
198
+
**Two live paths, by design — read this if you're judging:**
199
+
200
+
| Where it runs | Live Dynatrace path | Why |
201
+
|:---|:---|:---|
202
+
|**Locally** (your machine / the demo video) |**Official MCP server** — `list_problems`, `execute_dql`, `find_entity_by_name` fire against the tenant | The MCP server authenticates through an **interactive browser OAuth** login (Dynatrace SSO) |
203
+
|**Hosted** (Cloud Run, the judging URL) |**Dynatrace REST API** against the same tenant | Cloud Run is **headless** — it can't open a browser for the MCP OAuth flow, so the deployed service uses Dynatrace's token-based REST API for always-on, never-expiring operation |
204
+
205
+
Both talk to real Dynatrace data; the agent code is identical and simply selects the path at
206
+
startup. The MCP integration is shown live in the demo video and lives in
207
+
[`dynatrace_mcp.py`](backend/connectors/dynatrace_mcp.py); the hosted URL proves the same agent
208
+
running as a real Google Cloud product.
209
+
196
210
`DEMO_MODE=true` uses a deterministic simulation ([`scenarios.py`](backend/connectors/scenarios.py))
197
-
so the system also runs with **zero accounts**; a classic Dynatrace REST client remains as a
198
-
legacy fallback. Live values are unit-normalized; anything that can't be resolved is hidden
199
-
rather than shown wrong.
211
+
so the system also runs with **zero accounts**. Live values are unit-normalized; anything that
212
+
can't be resolved is hidden rather than shown wrong.
0 commit comments