---
title: "Connect Openstatus to Claude Desktop (MCP Setup Guide)"
url: "https://www.openstatus.dev/guides/connect-openstatus-to-claude-desktop"
date: "2026-05-08"
updated: "2026-09-07"
author: "openstatus"
description: "Add the openstatus MCP server to Claude Desktop as a custom connector so the assistant can list status pages, draft incidents, and schedule maintenance from chat — sign in with OAuth, with audit-logged mutations and explicit notify semantics."
category: "education"
---

**TL;DR** — Add `https://api.openstatus.dev/mcp` as a custom connector, approve it in the browser, and Claude Desktop can drive your status pages: list incidents, draft updates, and schedule maintenance from the chat window. No config file, no key to paste. Every mutation is audit-logged under `actor_type = 'mcp'` and notifications never fire unless you explicitly approve.

---

[Claude Desktop](https://claude.com/download) speaks the [Model Context Protocol](https://modelcontextprotocol.io) (MCP) — the open standard for letting AI assistants reach external services with explicit approval on every call. This guide wires the [openstatus MCP server](/tooling/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. The same steps work in Claude.ai in the browser: the two share one connector list.

## 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** — a teammate connects with read-only access; their Claude Desktop sees only the `list_*` and `get_*` tools and cannot mutate anything.

The same server works with [Claude Code](/guides/connect-openstatus-to-claude-code), [ChatGPT](/guides/connect-openstatus-to-chatgpt), [Codex](/guides/connect-openstatus-to-codex), [opencode](/guides/connect-openstatus-to-opencode), Cursor, and any other MCP-compatible client.

## Prerequisites

- An [openstatus account](https://www.openstatus.dev) with at least one status page.
- [Claude Desktop](https://claude.com/download) installed and signed in, on a plan that allows custom connectors.

## Step 1: Add a custom connector

In Claude Desktop, open **Settings > Connectors** and click **Add custom connector**. Fill in:

- **Name:** `openstatus`
- **Remote MCP server URL:** `https://api.openstatus.dev/mcp`

Leave the advanced OAuth fields empty. openstatus registers the connector automatically; there is no client id or secret to enter.

## Step 2: Approve the connection

Click **Connect**. Your browser opens the openstatus consent screen:

- **Workspace** — the workspace this connector can reach. If you belong to several, pick one; each workspace is a separate connection.
- **Access** — **Read-only** lets Claude list status pages, reports, monitors, and maintenance windows. **Read & write** also lets it create reports, append updates, resolve incidents, and schedule maintenance.

Click **Approve**. You land back in Claude Desktop with the connector marked as connected. Tokens refresh in the background; you won't be asked again unless the connection is revoked.

## Step 3: Enable the tools in a chat

Open a new chat and click the tool picker. Switch the **openstatus** connector on. With read-only access you'll see `list_status_pages`, `list_status_reports`, `list_maintenances`. With read & write you'll also see `create_status_report`, `add_status_report_update`, `update_status_report`, `resolve_status_report`, and `create_maintenance`.

## Step 4: Run your first prompt

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 write access, 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
```

## Alternative: API key with `mcp-remote`

If you'd rather authenticate with an API key — a shared machine, or a key that outlives your user — Claude Desktop can bridge the server through [`mcp-remote`](https://www.npmjs.com/package/mcp-remote). You'll need Node.js 18+ on your PATH. Create a key in **Settings > General > API Keys** (scopes are immutable on a key), then add the server to `claude_desktop_config.json` (**Settings > Developer > Edit Config**):

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

The key lives in `env`, not inlined in `args`, because `mcp-remote` parses `--header` arguments before shell expansion. Quit Claude Desktop fully (`Cmd+Q` on macOS, **File > Quit** on Windows) and relaunch; MCP servers from the config file only load at launch.

## Built-in safeguards

Four properties make this safe enough for a real incident:

- **Workspace-scoped consent** — the token only reaches the workspace you approved, with the access level you chose. A connector that asks for write access can be downgraded to read-only on the consent screen.
- **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-mutate** — `create_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` (the connection) and `actor_user_id` (the user who approved it), so AI-driven actions are traceable as a separate slice. Connecting and revoking are audited too.

## Disconnecting

Open **Settings > Integrations > Connected apps** in the openstatus dashboard. Each connection shows the client, its access, who connected it, and when it was last used. Revoke it and the connector's next call fails; reconnect from Claude Desktop's **Settings > Connectors**. Members revoke their own connections; owners and admins can revoke any. Removing a member from the workspace revokes their connections automatically.

## Troubleshooting

- **The connector shows as disconnected.** Open **Settings > Connectors**, click openstatus, and reconnect. This is expected after a revoke from the dashboard.
- **Tools don't show up in a chat.** Connectors are enabled per chat: open the tool picker and switch openstatus on.
- **"Tool not available" when creating an incident.** Your connection is read-only. Reconnect and pick **Read & write** on the consent screen.
- **`mcp-remote` 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. Check **Settings > Developer > Open Logs Folder** for `mcp-remote` stderr.

## What's next?

- **[MCP Server Reference](/docs/reference/mcp-server)** — full tool schema, error codes, OAuth endpoints, and scope mechanics.
- **[Connect to Claude Code](/guides/connect-openstatus-to-claude-code)** — terminal-shaped variant of this guide.
- **[Connect to ChatGPT](/guides/connect-openstatus-to-chatgpt)** — the same setup for OpenAI's chat client.
- **[Openstatus CLI](/tooling/cli)** — for terminal workflows that don't need an LLM in the loop.
- **[Slack Agent](/status-page#slack-agent)** — for teams that live in Slack.

## Frequently asked questions

<details>
  <summary>Does Claude Desktop support remote MCP servers like openstatus?</summary>
  Yes. Claude Desktop and Claude.ai share a connector list. Add openstatus under **Settings > Connectors > Add custom connector** with the URL `https://api.openstatus.dev/mcp`; the connection is authorized with OAuth in your browser. No local process, no Node.js, no config file.
</details>

<details>
  <summary>Do I need an API key to connect Claude Desktop?</summary>
  No. The openstatus MCP server is an OAuth 2.1 authorization server. Claude Desktop opens a consent screen where you pick a workspace and an access level; tokens are issued and refreshed automatically. If you prefer an API key, you can still bridge the server through `npx mcp-remote` with an `x-openstatus-key` header in `claude_desktop_config.json`.
</details>

<details>
  <summary>Where do I revoke Claude Desktop's access?</summary>
  In the openstatus dashboard under **Settings > Integrations > Connected apps**. Revoking signs the connector out immediately; reconnect from Claude Desktop's connector settings. Members revoke their own connections, owners and admins can revoke any.
</details>

<details>
  <summary>Why don't I see the openstatus tools in a chat?</summary>
  Connectors are enabled per chat. Open the tool picker in the chat and switch the openstatus connector on. If the connector shows as disconnected in **Settings > Connectors**, click it and reconnect.
</details>

<details>
  <summary>Can Claude Desktop accidentally notify subscribers when posting an incident?</summary>
  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.
</details>

<details>
  <summary>How do I give Claude Desktop read-only access to my workspace?</summary>
  Pick **Read-only** on the consent screen. The MCP server filters write tools out of the `tools/list` response for read-only connections, 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.
</details>

<details>
  <summary>Where do MCP-driven changes appear in the audit log?</summary>
  Every mutation routed through Claude Desktop lands in the audit log under `actor_type = 'mcp'`, with `actor_id` set to the connection (`oat_<id>` for OAuth, the key id for an API key) and `actor_user_id` set to the user who approved the connection or created the key. This separates AI-driven actions from CLI, dashboard, and direct API mutations.
</details>

---

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

[Try openstatus free](https://app.openstatus.dev)

---