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?

Frequently asked questions

Does Claude Desktop support remote MCP servers like openstatus?

Yes, but indirectly. Claude Desktop launches MCP servers as local stdio processes, so a remote HTTP server like openstatus has to be bridged through npx mcp-remote — a small open-source proxy that translates Claude Desktop's stdio calls into HTTP requests. You configure mcp-remote once in claude_desktop_config.json and Claude Desktop treats openstatus like any other local server.

Where is claude_desktop_config.json on macOS and Windows?

On macOS, the file lives at ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows, it lives at %APPDATA%\Claude\claude_desktop_config.json. Create the file if it does not exist.

Do I need a separate MCP credential for Claude Desktop?

No. Authentication is the standard x-openstatus-key header — the same API key the openstatus CLI, REST API, and Terraform provider use. There is no MCP-specific OAuth flow.

Why don't I see the openstatus tools after editing the config?

The two most common causes are not fully quitting Claude Desktop (it only loads MCP servers at launch — close the window is not enough, you have to Cmd+Q on macOS or File → Quit on Windows) and npx not being on the PATH that Claude Desktop sees. Install Node.js 18+ from nodejs.org if node --version is missing in your shell.

Can Claude Desktop accidentally notify subscribers when posting an incident?

No. Every publishing tool (create_status_report, add_status_report_update, resolve_status_report, create_maintenance) requires an explicit notify: true | false field. Claude must show the notify choice before firing the tool, so an LLM cannot quietly fan out an alert by omitting the flag. update_status_report is metadata-only and has no notify path at all.

How do I give Claude Desktop read-only access to my workspace?

Create an API key with read scope. The MCP server filters write tools out of the tools/list response for read-only keys, so Claude Desktop sees only the 14 read tools — status pages and page components, status reports, maintenances, monitors, response logs, notifications, private locations, and audit logs. None of the create_*, update_*, or resolve_* tools are registered for that session.

Where do MCP-driven changes appear in the audit log?

Every mutation routed through Claude Desktop lands in the audit log under actor_type = 'mcp', with actor_id set to the API key id and actor_user_id set to the user who created the key. This separates AI-driven actions from CLI, dashboard, and direct API mutations.


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

Try openstatus free