openstatus logoPricingDashboard

Connect Openstatus to Claude Desktop (MCP Setup Guide)

May 08, 2026 | by openstatus | [education]

TL;DR — Drop a small mcp-remote block into claude_desktop_config.json, restart Claude Desktop, and the assistant can drive your status pages: list incidents, draft updates, and schedule maintenance from the chat window. Every mutation is audit-logged under actor_type = 'mcp' and notifications never fire unless you explicitly approve.


Claude Desktop speaks the Model Context Protocol (MCP) — the open standard for letting AI assistants reach external services with explicit approval on every call. This guide wires the openstatus MCP server into Claude Desktop so you can list status pages, post incident updates, resolve reports, and schedule maintenance windows without leaving the chat window.

Why connect Openstatus to Claude Desktop?

If your incident workflow already runs through chat, Claude Desktop is the right drafting surface. Concrete scenarios:

  • Drafting customer-facing copy — turn engineer shorthand ("payment-api spiking p99 to 6s") into the calm, structured update your subscribers expect, then approve and post it without leaving the chat.
  • On-call summaries — "Summarize the last 7 days of incidents on my API page" in seconds, useful for weekly reviews and handoffs.
  • Read-only audits — issue a read-scoped key to a teammate; their Claude Desktop sees only the list_* tools and cannot mutate anything.

The same key works with Claude Code, Cursor, ChatGPT, and any other MCP-compatible client.

Prerequisites

  • An openstatus account with at least one status page.
  • Claude Desktop installed and signed in.
  • Node.js 18+ on your PATH — Claude Desktop uses npx to launch the mcp-remote bridge. Confirm with node --version; install from nodejs.org if missing.

Step 1: Create an API key

In the openstatus dashboard, go to Settings → API TokensCreate Token. Pick a scope:

  • Read-only — Claude Desktop can only list status pages, reports, and maintenance windows.
  • Read & write — Claude Desktop can also create reports, append updates, resolve incidents, and schedule maintenance.

Scopes are immutable on a key. Copy the value (starts with os_); you'll only see it once.

Step 2: Edit claude_desktop_config.json

Claude Desktop reads its MCP servers from a single JSON file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

The fastest way to open it is from inside Claude Desktop: Settings → Developer → Edit Config. Create the file if it doesn't exist.

Add the openstatus server under mcpServers:

{
  "mcpServers": {
    "openstatus": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://api.openstatus.dev/mcp",
        "--header",
        "x-openstatus-key: ${API_KEY}"
      ],
      "env": {
        "API_KEY": "os_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

Two things worth knowing:

  • Claude Desktop launches MCP servers as local processes, so it can't talk to a remote HTTP endpoint directly. mcp-remote is an open-source proxy that exposes a local stdio MCP server and forwards calls to the remote URL. npx runs it on demand — no global install.
  • The API key lives in env, not inlined in args. mcp-remote parses --header arguments before shell expansion, so a literal key after the colon breaks parsing. Holding it in env.API_KEY and referencing ${API_KEY} in the header value is the documented workaround.

Step 3: Restart Claude Desktop

Claude Desktop only loads MCP servers at launch. Quit fully (Cmd+Q on macOS, File → Quit on Windows) and reopen — reloading the window is not enough.

Step 4: Verify and run your first prompt

Open a new chat and click the tool picker. With a read-only key you'll see list_status_pages, list_status_reports, list_maintenances. With a read & write key you'll also see create_status_report, add_status_report_update, update_status_report, resolve_status_report, and create_maintenance.

Try a read tool first:

List my openstatus status pages

Claude calls list_status_pages, asks for approval, and returns the slugs and ids in your workspace. With a write-scoped key, draft an incident — Claude shows you the title, status, message, and notify choice before firing:

Draft a status report on my "api" page: investigating elevated latency on the payment endpoint, do not notify subscribers yet

Built-in safeguards

Three properties make this safe enough for a real incident:

  • Required notify: boolean on every mutation tool — the schema rejects calls that omit it, so the LLM has to ask before firing. notify: false is a hard guarantee that no subscriber alert goes out.
  • Lookup-before-mutatecreate_status_report and create_maintenance require a pageId resolved via list_status_pages rather than guessed.
  • Audit log attribution — every mutation lands in the audit log under actor_type = 'mcp', with actor_id (key) and actor_user_id (the user who created the key), so AI-driven actions are traceable as a separate slice.

Troubleshooting

  • Tools don't appear after restart. Validate the JSON (a trailing comma silently disables the whole mcpServers block) and confirm npx is on the PATH that Claude Desktop sees — nvm-managed Node sometimes isn't. Use the official nodejs.org installer if node --version is missing in your shell. Check Settings → Developer → Open Logs Folder for mcp-remote stderr.
  • 401 errors when calling a tool. Verify the x-openstatus-key value matches a key in Settings → API Tokens. Sanity-check with curl -i -H "x-openstatus-key: os_..." https://api.openstatus.dev/mcp.

What's next?


Start free. No credit card required. Configure Claude Desktop to drive your status pages in under 5 minutes.

Try openstatus free