Skip to content
Oh Dear
Docs/Tools & SDKs

MCP server

The Oh Dear MCP server lets AI assistants query your monitoring data and manage maintenance windows directly through the Model Context Protocol. Ask questions about your monitors, uptime, broken links, DNS, performance, sitemaps, and more, in natural language.

It speaks the standard protocol over HTTP, so this isn't a Claude-only thing. ChatGPT, Codex, Cursor, VS Code, Gemini CLI, Zed, and Windsurf all connect to the same URL.

The MCP server reads monitoring data. AI-powered monitoring is the check that uses AI to verify what your pages actually display.

Connect #

Add this URL to your AI client as an MCP server (some clients call it a "custom connector"):

https://ohdear.app/mcp

The client redirects you to Oh Dear. You log in (if you aren't already), pick which teams to share, and choose which permissions to grant. After approving, you're bounced back to your client and the connection is live.

We speak plain OAuth 2.1 with PKCE and Dynamic Client Registration, so every client below sorts out its own credentials. There's nothing to copy and paste, no API key to generate, and no allowlist to add your client's callback URL to. The connection appears under Connected AI assistants, where you can revoke it any time.

Claude.ai and Claude Desktop #

Open Settings, then Connectors, then "Add custom connector", and paste the URL above. Claude walks you through the approval.

Claude Code #

claude mcp add --transport http ohdear https://ohdear.app/mcp

Claude Code opens the OAuth flow on first use.

ChatGPT #

You'll need developer mode, which is available on Pro, Plus, Business, Enterprise, and Education plans, and only on the web.

Turn it on under Settings, Security and login, Developer mode. Then head to chatgpt.com/plugins, create a new app for a remote MCP server, and paste the URL above with OAuth as the authentication method.

OpenAI Codex #

codex mcp add ohdear --url https://ohdear.app/mcp
codex mcp login ohdear

Or add it to ~/.codex/config.toml yourself and run the login command afterwards:

[mcp_servers.ohdear]
url = "https://ohdear.app/mcp"

Cursor #

Add this to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json for a single one:

{
  "mcpServers": {
    "ohdear": {
      "url": "https://ohdear.app/mcp"
    }
  }
}

Cursor registers itself and starts the OAuth flow the first time it connects.

VS Code and GitHub Copilot #

Add this to .vscode/mcp.json in your project, or run "MCP: Open User Configuration" from the command palette to set it up once for every project:

{
  "servers": {
    "ohdear": {
      "type": "http",
      "url": "https://ohdear.app/mcp"
    }
  }
}

Gemini CLI #

gemini mcp add --transport http --scope user ohdear https://ohdear.app/mcp

Watch out for one thing if you edit ~/.gemini/settings.json by hand: the key is httpUrl, not url. Gemini reads url as an SSE endpoint, and ours isn't one.

{
  "mcpServers": {
    "ohdear": {
      "httpUrl": "https://ohdear.app/mcp"
    }
  }
}

Zed #

Open Settings, AI, MCP Servers, then "Add Server", then "Add Remote Server", and paste the URL above. Zed prompts you to authenticate the first time it connects.

Windsurf #

In ~/.codeium/windsurf/mcp_config.json, note that the key here is serverUrl:

{
  "mcpServers": {
    "ohdear": {
      "serverUrl": "https://ohdear.app/mcp"
    }
  }
}

Anything else #

If your client only speaks stdio, or its OAuth support is patchy, mcp-remote bridges the two and handles the OAuth flow for you. This works anywhere you can configure a command:

{
  "mcpServers": {
    "ohdear": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://ohdear.app/mcp"]
    }
  }
}

The first request opens a browser window for approval; after that the token is stored locally and reused. Worth knowing: JetBrains AI Assistant can talk to remote MCP servers but doesn't run the OAuth flow itself yet, so mcp-remote is the way in there.

One catch across all of these: the approval needs a browser on the same machine, because the client listens on localhost for the callback. Over a bare SSH session with no browser, the flow can't complete.

From your own code #

If you're building on the OpenAI Responses API, point it at us as a hosted MCP tool:

{
  "type": "mcp",
  "server_label": "ohdear",
  "server_url": "https://ohdear.app/mcp",
  "authorization": ""
}

The authorization field wants an access token you already have, and OpenAI won't store it, so you need to send it on every request. That means running the OAuth flow yourself against https://ohdear.app/oauth/authorize and https://ohdear.app/oauth/token, or refreshing a token you obtained earlier. Our metadata lives at /.well-known/oauth-authorization-server if you'd rather discover the endpoints than hardcode them.

Permissions #

The consent screen offers two scopes:

  • Read access (always granted): read your monitors, uptime, broken links, DNS, performance, sitemaps, cron checks, SSL certificates, status pages, existing maintenance windows, tag groups, and the notification destinations configured at team, tag, monitor, and tag-group level.
  • Write access (opt-in): create, update, and delete monitors, monitor settings, status pages, recurring maintenance windows, and tag groups with their notification destinations.

You can grant access to one or more teams in a single approval. Each approved team gets its own connection, so every tool call operates on that one team.

What you can do #

Examples:

  • "Show me all my Oh Dear monitors"
  • "Which monitors have issues right now?"
  • "Get the details for monitor 12345"
  • "What's the uptime for example.com over the last 24 hours?"
  • "Are there any broken links on example.com?"
  • "Show DNS history for example.com"
  • "What are the latest Lighthouse scores?"
  • "Show recurring maintenance periods for example.com"
  • "List my status pages"
  • "Create a weekly maintenance window for Mondays at 4am"
  • "Add a new monitor for https://example.com with broken-link checks"
  • "Rename the monitor for example.com to 'Marketing site'"
  • "Enable the Lighthouse check on example.com without touching its other checks"
  • "Delete the monitor for old-site.com"
  • "Group the 'client-acme' tag and send its alerts to ops@acme.com"
  • "List my tag groups and where their notifications go"
  • "Which email addresses get alerts for example.com?"
  • "Show the notification destinations for the 'production' tag"
  • "Change the alert types on the ops@acme.com tag-group destination to uptime only"
  • "Treat 401 responses as healthy for the staging monitor"

Manage connections #

Visit Connected AI assistants to see every AI assistant connected via OAuth, when each was last used, and revoke any of them.

Was this page helpful?

Feel free to reach out via support@ohdear.app or on X via @OhDearApp if you have any other questions. We'd love to help!