observability-mcp
About
One MCP server that connects to any observability backend through pluggable connectors, normalizes the data, adds intelligent analysis, and provides a web UI for configuration.
Details
- Author
- thotischner
- Categories
- Other, Developer Tools
Jump to
Setup
Install observability-mcp in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/thotischner/observability-mcp
Follow the installation instructions in the repository README, then restart your MCP client.
The unified observability gateway for AI agents.
One MCP server that connects to any observability backend through pluggable connectors, normalizes the data, adds robust anomaly analysis, and provides a web UI for configuration.
One MCP endpoint, every backend — so an agent triaging an incident asks one normalized question instead of juggling N vendor servers and their query languages.
0/10 → 10/10:the same 8B local model goes from hallucinating blast-radius answers to exactly correct ones once it gets this gateway's topology tools —measured, not asserted.
npx @thotischner/observability-mcp # start (UI on :3000) claude mcp add observability --transport http http://localhost:3000/mcp # wire into Claude
Twelve read-only tools (readOnlyHint: trueon every one) · server-side filter/aggregate so agents getnumbers, not haystacks·For-Agents guide
📖Full documentation site:https://thotischner.github.io/observability-mcp/
🔌Open in MCP Inspector— one-line interactive explorer:
npx --yes @modelcontextprotocol/inspector \ --config <(npx --yes @thotischner/observability-mcp inspector-config)
On a real Kubernetes-platform-team question ("which other pods share a node withpayment-serviceso we know what else falls over if that node goes down?"), the same local model produces wildly different answers depending on the tools you hand it:
Raw JSON for both arms, plus three more scenarios (single-service RCA, in-namespace blast radius, scenarios where topology doesnothelp), live indocs/benchmark-astronomy-shop.md. The harness is inscripts/benchmark-rca.mjs; re-run withmake benchmark-up && make benchmark-run.
We don't claim universal speedup — the doc spells out exactly where the topology tools help (graph-shaped questions) and where they don't (pure single-metric drill-downs).
npx @thotischner/observability-mcp # then open http://localhost:3000
Wire it into Claude Code with one CLI call:
claude mcp add observability --transport http http://localhost:3000/mcp
…or commit it to your repo as.mcp.json(works the same in Claude Desktop / Cursor):
{ "mcpServers": { "observability": { "transport": { "type": "http", "url": "http://localhost:3000/mcp" } } } }
The server starts withzero sources. Add Prometheus/Loki via the Web UI orPROMETHEUS_URL/LOKI_URLenv vars.
If you'd rather have the snippets above printed by a Make target — including custom-host / custom-port substitution — usemake connect-claude-codeormake connect-cursor.make doctorround-trips a real MCP handshake against a running server, reports the live governance posture (auth mode, redaction, audit-log persistence, per-identity rate cap), and tells you what to fix if it can't.
Multi-user / production?Seedocs/access-control.mdfor the opt-in basic-mode login + RBAC + audit log + per-identity rate limit setup. All off by default; the demo above is unchanged.
SSO via OIDC?make demo-oidcboots a Keycloak + an OIDC-flavored mcp-server on port3001with three pre-provisioned users (admin/operator/viewer, password = username, DEMO ONLY). Seedocs/auth-oidc.mdfor production Keycloak / Authentik / Auth0 / Azure AD setups.
External RBAC via OPA?make demo-opaboots an Open Policy Agent with an example Rego policy + an OPA-backed mcp-server on port3002. Seedocs/policy-engines.mdfor the built-in / file / OPA backend trade-offs and migration paths.
Curated MCP Products?SetOMCP_PRODUCTS_FILEto a YAML catalog (config/products.yaml.example) and ship per-tenant/per-agent tool bundles instead of "everything, all the time". RBAC-gated, audited, hot-editable. Details indocs/products.md.
Want the full chaos-engineering demo (Prometheus + Loki + 3 example services + the autonomous agent)? Clone and run:
make demo # equivalent to: docker compose --profile demo up --build --wait
Or run thesovereign quickstart— one command, fully on-prem, zero external calls: it starts the stack, injects a real incident, and shows side by side what an agent getswithoutvswiththe analysis layer (a wall of raw numbers vs a scored verdict that pinpoints the culprit). The optional agent reasons over it with alocalmodel (Ollama):
Seemake helpfor all canonical workflows.
Every observability vendor ships its own MCP server — Prometheus, Grafana, Datadog, Elastic, each siloed. An AI agent triaging an incident across systems must juggle N separate servers and learn each query language (PromQL, LogQL, …). There is no unified abstraction layer.
observability-mcpis that layer: one MCP endpoint that normalizes every backend and answers in plain service/metric/log terms, plus an analysis engine that flags anomalies the agent would otherwise have to reconstruct from raw queries itself.
Who it's for:SRE / platform teams running Prometheus + Loki who use an AI agent (Claude, local LLMs, …) for incident triage. The gateway's leverage is largest when the agent isnota frontier model — a smaller or local model that can't reliably hand-write PromQL/LogQL benefits most from normalized tools and pre-computed analysis. A strong frontier model can query raw backends competently on its own; there the value is consistency and the analysis engine, not query convenience. We state this honestly rather than claiming a universal speedup.
- 🔍 Inspect — see, learn & enforce agent behavior— a live service-mesh-style graph of every MCP tool call, an AppArmor-style learning workflow that derives a behavior profile from real traffic, and an enforce mode that blocks calls outside the accepted baseline.Jump to Inspect ↓
- Unified gateway— Single MCP endpoint for all your observability backends.
- Cross-signal analysis— Correlates metrics and logs automatically. Robust anomaly detection (median/MAD baseline, trend detection for slow ramps, warmup + dwell to suppress flapping) and weighted health scoring.
- Web UI— Sources, services, health monitoring, configuration. Real-time, dark theme.
- prom-client defaults— Works out of the box with the standard Node.js Prometheus instrumentation. Dynamic label resolution probesjob/service/app/service_nameso service filtering Just Works.
- Loki label fallback— Discovers services throughservice_name/service/job/app/container, including Docker-shipped streams with leading slashes.
- Pluggable connectors— One interface, any query language (PromQL, LogQL, Flux, KQL...). Seedocs/connectors.md.
- Auth & TLS— Basic, Bearer, custom CA, mTLS. See[docs/auth-and-tls.md.
- Multi-backend— Multiple instances of the same type, no problem.
Inspect — see, learn & enforce agent behavior
You handed an agent (or a CI bot, or a leaked credential) a key to your observability backends.Inspectanswers the question RBAC can't:is this callnormalfor this identity, compared to what it has actually been doing?
…
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





