MCP Server
Connect Claude, ChatGPT, Cursor, and any other Model Context Protocol client to your workspace — chat-shaped AI access with audit-logged mutations and explicit notify semantics.
The openstatus MCP server connects Claude Desktop, ChatGPT, Cursor, and any other Model Context Protocol client to your workspace — so an AI assistant can read monitors, response logs, and audit history, and drive status pages, status reports, and maintenance windows directly from a conversation.
Quickstart
{
"mcpServers": {
"openstatus": {
"type": "http",
"url": "https://api.openstatus.dev/mcp",
"headers": {
"x-openstatus-key": "os_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}
Drop the snippet into your client's MCP config (claude_desktop_config.json, Cursor settings, ChatGPT custom connector), restart, and the openstatus tools appear in the picker. The server is stateless Streamable HTTP and scales horizontally.
What you can do
The server exposes 19 tools scoped to your workspace, grouped by entity:
- Status pages —
list_status_pages·list_page_components - Status reports —
list_status_reports·create_status_report·add_status_report_update·update_status_report·resolve_status_report - Maintenance —
list_maintenances·create_maintenance - Monitors —
list_monitors·get_monitor·get_monitor_status·get_monitor_summary - Response logs —
list_response_logs·get_response_log - Notifications —
list_notifications - Private locations —
list_private_locations - Audit log (workspaces on the audit-log plan only) —
list_audit_logs·get_audit_log
The four publishing tools (create_status_report, add_status_report_update, resolve_status_report, create_maintenance) require notify: true | false — the assistant must explicitly choose whether to notify subscribers, so an LLM cannot quietly fan out an alert. update_status_report is metadata-only and cannot notify.
The same tool registry powers the in-app assistant — every tool you see in /chat is the same tool you call over MCP, kept in sync by shape-equivalence tests.
Auth & scopes
Authentication is the x-openstatus-key header — the same API key the CLI, API, and Terraform use. We don't implement the MCP OAuth flow: no separate credential to manage, no consent screen, just one key from Settings → API Tokens.
API keys carry a read or write scope. Read-only keys never see write tools in tools/list — they don't exist for that session. Write tools throw a clean error if a read-only key somehow attempts them.
Every mutation lands in the audit log under actor_type = 'mcp', so you can trace any change back to a key, a user, and a transport.
Other surfaces
- Want chat inside the dashboard instead of an external client? See the in-app assistant.
- Want a terminal interface for AI agents (Claude Code, etc.)? See skills on the CLI page.
- Building an in-app integration? Call the API directly.
- Want Slack instead of Claude or ChatGPT? See the Slack agent.
Reference
Full tool schema, error codes, and per-client config in the MCP reference.
Frequently asked questions
What does the MCP server let an assistant do?
The MCP server exposes 19 read and write tools scoped to your workspace: list status pages, monitors, response logs, notifications, private locations, and audit logs; inspect a single monitor or response log; create, update, and resolve status reports; schedule maintenance windows. Every mutation writes to the audit log, and publishing tools require an explicit notify decision.
Are skills different from the MCP server?
Skills are prompt and command bundles installed into your local agent (Claude Code, etc.) that wrap the openstatus CLI. The MCP server is a remote endpoint that any MCP-compatible client can connect to. Skills are great for terminal-shaped workflows; MCP is great for chat-shaped workflows.
Do I need a separate MCP credential?
No. We don't implement the MCP OAuth flow — there's no consent screen and no extra credential to manage. Authentication is the x-openstatus-key header, the same key the CLI, API, and Terraform use.
Can the assistant accidentally notify subscribers?
No. Every publishing tool requires the assistant to set notify: true | false explicitly — there's no default. Metadata-only edits like update_status_report can't notify at all. Every call lands in the audit log under actor_type = 'mcp', so you can see exactly what happened.