{"slug": "uptime-com-s-new-mcp", "title": "Uptime.com's New MCP", "summary": "Uptime.com launched a Model Context Protocol (MCP) server that exposes its website, server, and infrastructure monitoring as tools for AI assistants like Claude, enabling automated check creation, alert management, and status page control. The server supports both stdio and streamable HTTP transports, with authentication via static API tokens or OAuth2 PKCE, and includes an official hosted instance at mcp.uptime.com.", "body_md": "A [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server for\n[Uptime.com](https://uptime.com). It exposes Uptime.com website, server, and\ninfrastructure monitoring as MCP tools, so AI assistants such as Claude can\ncreate and manage checks, read alerts and outages, manage status pages, and\ninspect account usage on your behalf.\n\nThe server speaks two transports: **stdio** (for local MCP clients like Claude\nDesktop, Claude Code, and Cursor) and **streamable HTTP** (for hosted\ndeployments). It authenticates with a static API bearer token or a\nbrowser-based OAuth2 PKCE flow.\n\nIf you use [Claude Code](https://claude.com/claude-code), the easiest way in is\nthe [ uptime-skills](https://github.com/uptime-com/uptime-skills) plugin. It\nbundles this MCP server with task-focused\n\n**skills**— curated context and workflows for Uptime.com (choosing probe locations, tuning outage sensitivity, picking the right check type for a target) — plus a sensible default permission set. The tools alone give Claude the ability to call the API; the skills give it the know-how to use them well, so you get sound monitoring decisions instead of raw API calls.\n\n```\n/plugin marketplace add uptime-com/uptime-skills\n/plugin install uptime@uptime-com\n```\n\nThen authenticate (browser OAuth, tokens stored and refreshed for you):\n\n```\n/mcp\n```\n\nSee [uptime-com/uptime-skills](https://github.com/uptime-com/uptime-skills) for\nteam and project-level setup.\n\nUptime.com runs an official hosted instance, so you do not have to run anything yourself. Point any streamable-HTTP MCP client at:\n\n```\nhttps://mcp.uptime.com/mcp\n```\n\nAuthenticate with your Uptime.com API token (generate one under **Settings → API\n& Integrations**). Example MCP client configuration:\n\n```\n{\n  \"mcpServers\": {\n    \"uptime\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.uptime.com/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer <your-api-token>\"\n      }\n    }\n  }\n}\n```\n\nThe endpoint also advertises [RFC 9728](https://www.rfc-editor.org/rfc/rfc9728)\nprotected-resource metadata, so OAuth2-capable MCP clients can discover the\nauthorization server (`https://uptime.com`\n\n) and obtain tokens themselves instead\nof supplying a static token.\n\nPrefer to run it yourself? Continue below.\n\nThe fastest way to try it is with `go run`\n\n(Go 1.26+) and a personal Uptime.com\nAPI token. Generate a token in the Uptime.com UI under **Settings → API &\nIntegrations**, then:\n\n```\nexport UPTIME_BEARER_TOKEN=<your-api-token>\ngo run github.com/uptime-com/uptime-mcp@latest -transport=stdio\n```\n\nAdd the server to your MCP client config (e.g. `claude_desktop_config.json`\n\n,\nCursor `mcp.json`\n\n, or `claude mcp add-json`\n\n):\n\n```\n{\n  \"mcpServers\": {\n    \"uptime\": {\n      \"command\": \"uptime-mcp\",\n      \"args\": [\"-transport=stdio\"],\n      \"env\": {\n        \"UPTIME_BEARER_TOKEN\": \"<your-api-token>\"\n      }\n    }\n  }\n}\n```\n\nReplace `\"command\": \"uptime-mcp\"`\n\nwith the absolute path to a downloaded binary,\nor run the container image:\n\n```\n{\n  \"mcpServers\": {\n    \"uptime\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"-e\", \"UPTIME_BEARER_TOKEN\",\n        \"ghcr.io/uptime-com/uptime-mcp:latest\",\n        \"-transport=stdio\"\n      ],\n      \"env\": {\n        \"UPTIME_BEARER_TOKEN\": \"<your-api-token>\"\n      }\n    }\n  }\n}\n```\n\nInstead of a static token, let the server run a browser-based OAuth2 login on the first tool call. This needs an OAuth application registered in your Uptime.com account (a client ID). No token is stored in your config:\n\n```\n{\n  \"mcpServers\": {\n    \"uptime\": {\n      \"command\": \"uptime-mcp\",\n      \"args\": [\n        \"-transport=stdio\",\n        \"-uptime-url=https://uptime.com\",\n        \"-client-id=<your-client-id>\"\n      ]\n    }\n  }\n}\n```\n\nOn the first tool call the server opens your browser to complete authorization,\nthen refreshes the token in the background. See [Authentication](#authentication).\n\nDownload the archive for your platform from the\n[Releases](https://github.com/uptime-com/uptime-mcp/releases) page (Linux,\nmacOS, and Windows on amd64 and arm64), extract it, and put `uptime-mcp`\n\non your\n`PATH`\n\n:\n\n```\ntar xzf uptime-mcp_<version>_<os>_<arch>.tar.gz\nsudo mv uptime-mcp /usr/local/bin/\nuptime-mcp -version\n```\n\nPublished to GitHub Container Registry. Tags: `:<version>`\n\n(immutable, e.g.\n`:0.16.0`\n\n), `:latest`\n\n(newest stable release), `:main`\n\n(rolling `main`\n\nHEAD).\n\n```\ndocker pull ghcr.io/uptime-com/uptime-mcp:latest\ndocker run -i --rm -e UPTIME_BEARER_TOKEN ghcr.io/uptime-com/uptime-mcp:latest -transport=stdio\n```\n\nPublished as an OCI chart. Per-environment URLs are not baked in; set them at install time.\n\n```\nhelm install uptime-mcp oci://ghcr.io/uptime-com/uptime-mcp/charts/uptime-mcp \\\n  --set config.uptimeUrl=https://uptime.com\ngo install github.com/uptime-com/uptime-mcp@latest\n```\n\nThe binary is installed as `uptime-mcp`\n\nin `$(go env GOPATH)/bin`\n\n.\n\n```\ngit clone https://github.com/uptime-com/uptime-mcp.git\ncd uptime-mcp\ngo build -o uptime-mcp .\n```\n\nConfiguration is via CLI flags, with environment-variable fallbacks for the sensitive values.\n\n| Flag | Env fallback | Default | Description |\n|---|---|---|---|\n`-transport` |\n— | `stdio` |\nTransport mode: `stdio` or `http` . |\n`-listen` |\n— | `:8080` |\nHTTP listen address (HTTP mode only). |\n`-uptime-url` |\n`UPTIME_URL` |\n(required) |\nUptime.com instance URL, e.g. `https://uptime.com` . The API base is `<uptime-url>/api/v1/` . |\n`-resource-url` |\n`UPTIME_RESOURCE_URL` |\n`http://localhost:<port>` |\nPublic URL of this server, for OAuth2 protected-resource metadata. |\n`-client-id` |\n`UPTIME_OAUTH_CLIENT_ID` |\n(empty) |\nOAuth2 client ID. |\n`-client-secret` |\n`UPTIME_OAUTH_CLIENT_SECRET` |\n(empty) |\nOAuth2 client secret (confidential clients). |\n`-log-level` |\n— | `error` |\nLog level: `debug` , `info` , `warn` , `error` . |\n`-version` |\n— | — | Print version and commit, then exit. |\n\nToken environment variable:\n\n| Variable | Description |\n|---|---|\n`UPTIME_BEARER_TOKEN` |\nStatic Uptime.com API token. Forwarded as-is, without verification or refresh. |\n\nSet `UPTIME_BEARER_TOKEN`\n\nto a pre-obtained Uptime.com API token. Works in both\nstdio and HTTP modes; the token is forwarded to the Uptime.com API as-is, with\nno OAuth configuration, verification, or refresh.\n\n```\nUPTIME_BEARER_TOKEN=<your-api-token> uptime-mcp -transport=stdio\n```\n\nIn stdio mode, when `UPTIME_BEARER_TOKEN`\n\nis not set, the server performs a\nbrowser-based OAuth2 **PKCE** flow lazily, on the first tool call rather than at\nstartup. This keeps the MCP handshake (`initialize`\n\n, `tools/list`\n\n) fast. It\nneeds `-uptime-url`\n\nand `-client-id`\n\n; scope `api/v1`\n\nis requested against\n`<uptime-url>/o/authorize/`\n\nand `<uptime-url>/o/token/`\n\n, and tokens are\nrefreshed in the background.\n\n```\nuptime-mcp -transport=stdio \\\n  -uptime-url=https://uptime.com \\\n  -client-id=<your-client-id>\n```\n\nIn HTTP mode the server is a token passthrough. For each request it resolves a token in this order and forwards it to the Uptime.com API:\n\n| Priority | Source |\n|---|---|\n| 1 | `Authorization: Bearer <token>` |\n| 2 | `?token=<token>` query parameter |\n| 3 | `UPTIME_BEARER_TOKEN` env var |\n\nWhen `-uptime-url`\n\nis set, the server also serves\n[RFC 9728](https://www.rfc-editor.org/rfc/rfc9728) protected-resource metadata at\n`/.well-known/oauth-protected-resource`\n\n, advertising the Uptime.com\nauthorization server and scopes (`api/v1`\n\n, `api/v1:read`\n\n) so OAuth2-capable MCP\nclients can obtain tokens themselves.\n\n```\nuptime-mcp -transport=http -listen=:8080 \\\n  -uptime-url=https://uptime.com \\\n  -client-id=<your-client-id>\n```\n\nDynamic Client Registration (\n\n[RFC 7591]) is planned, so OAuth2 clients will not need a pre-registered client ID.\n\nIn HTTP mode the server listens on `-listen`\n\n(default `:8080`\n\n) and exposes:\n\n`POST /`\n\n— the streamable-HTTP MCP endpoint.`GET /healthz`\n\n— liveness/readiness probe, returns`204 No Content`\n\n.`GET /.well-known/oauth-protected-resource`\n\n— RFC 9728 metadata (only when`-uptime-url`\n\nis set).\n\n```\nuptime-mcp -transport=http -listen=:8080 -uptime-url=https://uptime.com\ncurl -i http://localhost:8080/healthz   # -> HTTP/1.1 204 No Content\n```\n\nThe server registers tools across the Uptime.com domains below. Tool names are\nstable; use `tools/list`\n\nfrom your MCP client to see full input schemas.\n\n**Checks** — list, inspect, and manage monitoring checks\n\n| Tool | Description |\n|---|---|\n`list_checks` |\nList monitoring checks with optional filtering. |\n`get_check` |\nGet details for a specific check. |\n`get_check_stats` |\nGet uptime statistics for a check. |\n`delete_check` |\nDelete a check. |\n`create_<type>_check` |\nCreate a check of a given type (see below). |\n`update_<type>_check` |\nUpdate a check of a given type (see below). |\n\nSupported check types (`create_*`\n\nand `update_*`\n\n):\n`http`\n\n, `dns`\n\n, `ssl`\n\n, `icmp`\n\n, `tcp`\n\n, `udp`\n\n, `smtp`\n\n, `imap`\n\n, `pop`\n\n, `ssh`\n\n,\n`ntp`\n\n, `whois`\n\n, `rdap`\n\n, `blacklist`\n\n, `malware`\n\n, `heartbeat`\n\n, `webhook`\n\n,\n`group`\n\n, `pagespeed`\n\n, `rum`\n\n, `rum2`\n\n, `cloudstatus`\n\n, `api`\n\n, `transaction`\n\n.\n\n**Locations**\n\n`list_locations`\n\n, `get_location`\n\n— discover probe-server locations and their IP\naddresses.\n\n**Contacts**\n\n`list_contacts`\n\n, `get_contact`\n\n, `create_contact`\n\n, `update_contact`\n\n,\n`delete_contact`\n\n— manage contact groups used for alert notifications.\n\n**Tags**\n\n`list_tags`\n\n, `get_tag`\n\n, `create_tag`\n\n, `update_tag`\n\n, `delete_tag`\n\n.\n\n**Dashboards**\n\n`list_dashboards`\n\n, `get_dashboard`\n\n, `create_dashboard`\n\n, `update_dashboard`\n\n,\n`delete_dashboard`\n\n.\n\n**Status pages, components & incidents**\n\n- Pages:\n`list_status_pages`\n\n,`get_status_page`\n\n,`create_status_page`\n\n,`update_status_page`\n\n,`delete_status_page`\n\n. - Components:\n`list_status_page_components`\n\n,`get_status_page_component`\n\n,`create_status_page_component`\n\n,`update_status_page_component`\n\n,`delete_status_page_component`\n\n. - Incidents:\n`list_status_page_incidents`\n\n,`get_status_page_incident`\n\n,`create_status_page_incident`\n\n,`update_status_page_incident`\n\n,`delete_status_page_incident`\n\n.\n\n**Alerts & outages**\n\n`list_alerts`\n\n, `get_alert`\n\n, `ignore_alert`\n\n, `list_outages`\n\n, `get_outage`\n\n.\n\n**Cloud status**\n\n`list_cloudstatus_providers`\n\n, `search_cloudstatus_services`\n\n— discover cloud\nproviders and services for `cloudstatus`\n\nchecks.\n\n**Account**\n\n`get_account_usage`\n\n— account usage and plan limits.\n\nRequirements: Go 1.26+.\n\n```\nmake test            # run unit tests\nmake e2e             # run e2e tests (requires UPTIME_BEARER_TOKEN)\nmake run/http        # run the HTTP server locally on :8080\ngo build -o uptime-mcp .\n```\n\nThe e2e suite talks to a live Uptime.com account and is build-tagged `e2e`\n\n; it\nruns only when you provide a valid `UPTIME_BEARER_TOKEN`\n\n:\n\n```\nUPTIME_BEARER_TOKEN=<your-api-token> make e2e\n```\n\nMocks are generated with [mockery](https://vektra.github.io/mockery/) v3+\n(`.mockery.yaml`\n\n).\n\nContributions are welcome. Please open an issue to discuss substantial changes\nbefore sending a pull request, keep changes focused, and run `make test`\n\nbefore\nsubmitting. By contributing you agree that your contributions are licensed under\nthe project's MIT license.\n\nLicensed under the [MIT License](/uptime-com/uptime-mcp/blob/main/LICENSE). `SPDX-License-Identifier: MIT`\n\n.", "url": "https://wpnews.pro/news/uptime-com-s-new-mcp", "canonical_source": "https://github.com/uptime-com/uptime-mcp", "published_at": "2026-06-19 13:54:00+00:00", "updated_at": "2026-06-19 14:08:09.230029+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents"], "entities": ["Uptime.com", "Claude", "Claude Code", "Claude Desktop", "Cursor", "Model Context Protocol", "OAuth2", "RFC 9728"], "alternates": {"html": "https://wpnews.pro/news/uptime-com-s-new-mcp", "markdown": "https://wpnews.pro/news/uptime-com-s-new-mcp.md", "text": "https://wpnews.pro/news/uptime-com-s-new-mcp.txt", "jsonld": "https://wpnews.pro/news/uptime-com-s-new-mcp.jsonld"}}