observability-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@observability-mcpcorrelate recent deployments with failed requests"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Azure Incident Investigation
A two-part portfolio project: a read-only MCP server exposing Azure observability tools, and an autonomous agent that drives those tools to investigate incidents and produce a synthesised root-cause report. A free, self-built, minimal take on the idea behind Microsoft's Azure SRE Agent — and, like that tool's "Reader mode", strictly read-only throughout.
you ──"symptom"──▶ incident-agent ──MCP (stdio/HTTP)──▶ observability-mcp ──▶ Azure
(Claude Agent SDK) (9 read-only tools) (App Insights,
│ App Service,
└── streams its reasoning + tool calls live, Activity Log)
then emits a Markdown root-cause reportThe two components
Directory | What it is |
The tool layer. A Model Context Protocol server (TypeScript, stdio or Streamable HTTP) exposing 9 read-only tools over Application Insights telemetry, App Service deployment history, App Service Plan metrics, and the Azure Activity Log — all correlated on | |
The investigator. A standalone agent (Claude Agent SDK) that connects to the MCP server as a client and autonomously drives its tools — starting narrow, widening the time window, localising the onset, identifying what changed, and confirming on a trace — before writing an evidence-backed report. Read-only by construction. |
Each directory is a self-contained npm project with its own README covering
setup, configuration, and how to run it. Start with
observability-mcp/ (the tools), then
incident-agent/ (the agent that drives them).
Related MCP server: incident-copilot
Design principles
Read-only, always. Every tool calls only
list*/get*/ query APIs; the agent routes every tool call through a single deny-by-default gate. Nothing in this project can modify, restart, scale, or delete anything.No secrets in code or config. Azure access is
DefaultAzureCredential(youraz loginlocally; a managed identity when deployed). See each component's README for the auth and security model.Runs locally or hosted. The MCP server speaks stdio for local use and Streamable HTTP for hosting (e.g. Azure Container Apps); the agent connects to either.
This is a lab / portfolio project — safe to run and read, but deliberately not production-hardened. See each component's "Security model" notes before deploying anywhere reachable.
Infrastructure & deployment
Infrastructure/ holds the Bicep that deploys the MCP server to
Azure Container Apps — the managed environment, the user-assigned identity, and
its discrete, per-resource RBAC (Reader on exactly the allowlisted App
Services / Container Apps / Log Analytics workspaces, never RG-wide except the
deliberate Activity Log exception). The identity's access is defined once, here, at
deploy time; it is never expanded at runtime from an alert payload.
Image: built by
.github/workflows/build-image.ymland pushed to GitHub Container Registry (ghcr.io/<owner>/observability-mcp-server). The package is public, so the Container App pulls it anonymously — no registry credentials. (After the first workflow run, set the package visibility to Public and link it to the repo.)Parameters: copy
Infrastructure/main.parameters.example.jsontomain.parameters.local.json(gitignored) and fill in your real subscription / resource IDs. Never commit real values — the example is the only parameters file in git.Deploy:
az deployment group create -g <rg> -f Infrastructure/main.bicep -p Infrastructure/main.parameters.local.json.
The three allowed* params also drive the agent's resource-scope gate: they're
emitted as Bicep outputs for the agent job / trigger Function (not yet built) to
consume as ALLOWED_* env vars — same source, defined once. See the
incident-agent README.
License
MIT.
Related MCP Connectors
Read-only MCP server for AIStatusDashboard status, incidents, metrics, and fallback recommendations.
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
Guarded MCP server for agent-readable business truth, provenance, readiness, and discovery.
MCP server for Appcircle mobile CI/CD platform.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that exposes core Azure services as read-mostly tools any MCP client can call, including Blob Storage, Key Vault, Service Bus, and Resource Manager.1MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for investigating cloud incidents and managing approvals. Provides read-only tools to list incidents, investigate incidents, and list approvals, keeping remediation behind human approval.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server providing read-only operational tools (logs, metrics, traces, service health, config) for troubleshooting an environment, with one exception for toggling chaos scenarios.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that provides guarded, audited, read-only access to ops tooling (alerts, metrics, logs, deploys, runbooks) and a triage agent that diagnoses incidents end-to-end with CI-verified root cause analysis.MIT