Skip to content

Commit 7331d2a

Browse files
committed
MCP & LIVE LOGIC
1 parent d9b4e05 commit 7331d2a

1 file changed

Lines changed: 18 additions & 5 deletions

File tree

README.md

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ cd frontend && npm install && npm run dev
170170
|:------|:-----------|
171171
| **Agents / Backend** | Python 3.11 · FastAPI · asyncio · Server-Sent Events |
172172
| **Reasoning** | Google **Gemini 2.5 Flash** on **Vertex AI** (Google Cloud), via the `google-genai` SDK |
173-
| **Observability** | **Dynatrace** via the official **MCP server** `list_problems` · `execute_dql` · `find_entity_by_name` |
173+
| **Observability** | **Dynatrace** official **MCP server** (`list_problems` · `execute_dql` · `find_entity_by_name`) locally; **REST API** headless on Cloud Run |
174174
| **Frontend** | React 18 + Vite · Tailwind CSS · Framer Motion · **Three.js** (3D hero) · **D3** force-directed graph |
175175
| **Auth** | Firebase Authentication (Google + email) with graceful demo fallback |
176176
| **Persistence** | **Google Cloud Firestore** · graceful in-memory fallback |
@@ -192,11 +192,24 @@ and calls real MCP tools to investigate live incidents:
192192
| **`execute_dql`** | Fetch logs / events / spans / metrics via Grail DQL as investigation evidence |
193193
| **`find_entity_by_name`** | Resolve the affected monitored entity |
194194

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+
196210
`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.
200213

201214
### Environment variables & going live
202215

0 commit comments

Comments
 (0)