Skip to main content
Glama
dev-hops

observability-mcp

by dev-hops

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 report

The two components

Directory

What it is

observability-mcp/

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 operation_Id. Auth via DefaultAzureCredential (no secrets in code).

incident-agent/

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 (your az login locally; 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.yml and 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.json to main.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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server providing read-only operational tools (logs, metrics, traces, service health, config) for troubleshooting an environment, with one exception for toggling chaos scenarios.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP 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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dev-hops/azure-incident-investigation'

If you have feedback or need assistance with the MCP directory API, please join our Discord server