This started as a complaint, not an idea. Every place we've shipped software had the same 2am ritual: an observability alert fires, someone opens the problem card and stares at it, someone else greps git log for whatever deployed that afternoon, a third person opens the merge request and scrolls the diff hoping something looks guilty. Three tabs, three people — and the answer was usually sitting in plain sight the whole time. The alert and the commit just lived in tools that never talk to each other.
When the hackathon put a Dynatrace track in front of us, the pitch wrote itself: stop building another dashboard that shows you the incident — build the engineer that works it. The agent should do exactly what the senior on-call does: read the Davis problem, find what deployed in the same window, read that diff, and say "roll back MR !1" with the evidence attached. Except in seconds, and without waking anyone up.
Building it on real partner backends — not mocks — was where the actual work went, and the scars are in the code:
- The Dynatrace MCP server gates
send_eventbehind a human-approval prompt that silently auto-declines in a headless service. We lost an evening to "Operation cancelled" before writing a schema-aware auto-approve callback (shared/mcp_client.py) that reads the server's elicit schema and fills the required fields — it works against any MCP server, not just this one. - Davis takes 20–60 seconds to promote a custom alerrt into a real problem. Our first runs raced it and lost, so the cycle falls back to querying the raw events until Davis catches up.
- DQL results came back as markdown with a JSON code-fence buried inside, not as records. There's a parser for that now in
integrations/dynatrace/real.py, and we're not proud of how long it took to notice. - Gemini would nail the root-cause analysis and then occasionally drop the suspect commit from its structured output — the one field the whole correlation story hangs on. The pipeline now pins it back deterministically after the model call.
The result is the loop we always wanted at 2am: a real Davis problem, a real Gemini RCA, a real review note on a real merge request, one verdict on one screen, about seventy seconds end to end. Click the button and watch it work.
Built With
- dyntracemcp
- firestore
- gitlabduomcp
- google-cloud
- googleadk
- nextjs