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
npxto launch themcp-remotebridge. Confirm withnode --version; install from nodejs.org if missing.
Step 1: Create an API key
In the openstatus dashboard, go to Settings → API Tokens → Create 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-remoteis an open-source proxy that exposes a local stdio MCP server and forwards calls to the remote URL.npxruns it on demand — no global install. - The API key lives in
env, not inlined inargs.mcp-remoteparses--headerarguments before shell expansion, so a literal key after the colon breaks parsing. Holding it inenv.API_KEYand 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: booleanon every mutation tool — the schema rejects calls that omit it, so the LLM has to ask before firing.notify: falseis a hard guarantee that no subscriber alert goes out. - Lookup-before-mutate —
create_status_reportandcreate_maintenancerequire apageIdresolved vialist_status_pagesrather than guessed. - Audit log attribution — every mutation lands in the audit log under
actor_type = 'mcp', withactor_id(key) andactor_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
mcpServersblock) and confirmnpxis on the PATH that Claude Desktop sees —nvm-managed Node sometimes isn't. Use the official nodejs.org installer ifnode --versionis missing in your shell. Check Settings → Developer → Open Logs Folder formcp-remotestderr. - 401 errors when calling a tool. Verify the
x-openstatus-keyvalue matches a key in Settings → API Tokens. Sanity-check withcurl -i -H "x-openstatus-key: os_..." https://api.openstatus.dev/mcp.
What's next?
- MCP Server Reference — full tool schema, error codes, and scope mechanics.
- Connect to Claude Code — terminal-shaped variant of this guide.
- Openstatus CLI — for terminal workflows that don't need an LLM in the loop.
- Slack Agent — for teams that live in Slack.
Start free. No credit card required. Configure Claude Desktop to drive your status pages in under 5 minutes.
Try openstatus free