cd /news/ai-tools/uptime-com-s-new-mcp Β· home β€Ί topics β€Ί ai-tools β€Ί article
[ARTICLE Β· art-34001] src=github.com β†— pub= topic=ai-tools verified=true sentiment=↑ positive

Uptime.com's New MCP

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.

read7 min views4 publishedJun 19, 2026
Uptime.com's New MCP
Image: source

A Model Context Protocol (MCP) server for Uptime.com. It exposes Uptime.com website, server, and infrastructure monitoring as MCP tools, so AI assistants such as Claude can create and manage checks, read alerts and outages, manage status pages, and inspect account usage on your behalf.

The server speaks two transports: stdio (for local MCP clients like Claude Desktop, Claude Code, and Cursor) and streamable HTTP (for hosted deployments). It authenticates with a static API bearer token or a browser-based OAuth2 PKCE flow.

If you use Claude Code, the easiest way in is the uptime-skills plugin. It bundles this MCP server with task-focused

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.

/plugin marketplace add uptime-com/uptime-skills
/plugin install uptime@uptime-com

Then authenticate (browser OAuth, tokens stored and refreshed for you):

/mcp

See uptime-com/uptime-skills for team and project-level setup.

Uptime.com runs an official hosted instance, so you do not have to run anything yourself. Point any streamable-HTTP MCP client at:

https://mcp.uptime.com/mcp

Authenticate with your Uptime.com API token (generate one under Settings β†’ API & Integrations). Example MCP client configuration:

{
  "mcpServers": {
    "uptime": {
      "type": "http",
      "url": "https://mcp.uptime.com/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-token>"
      }
    }
  }
}

The endpoint also advertises RFC 9728 protected-resource metadata, so OAuth2-capable MCP clients can discover the authorization server (https://uptime.com

) and obtain tokens themselves instead of supplying a static token.

Prefer to run it yourself? Continue below.

The fastest way to try it is with go run

(Go 1.26+) and a personal Uptime.com API token. Generate a token in the Uptime.com UI under Settings β†’ API & Integrations, then:

export UPTIME_BEARER_TOKEN=<your-api-token>
go run github.com/uptime-com/uptime-mcp@latest -transport=stdio

Add the server to your MCP client config (e.g. claude_desktop_config.json

, Cursor mcp.json

, or claude mcp add-json

):

{
  "mcpServers": {
    "uptime": {
      "command": "uptime-mcp",
      "args": ["-transport=stdio"],
      "env": {
        "UPTIME_BEARER_TOKEN": "<your-api-token>"
      }
    }
  }
}

Replace "command": "uptime-mcp"

with the absolute path to a downloaded binary, or run the container image:

{
  "mcpServers": {
    "uptime": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "UPTIME_BEARER_TOKEN",
        "ghcr.io/uptime-com/uptime-mcp:latest",
        "-transport=stdio"
      ],
      "env": {
        "UPTIME_BEARER_TOKEN": "<your-api-token>"
      }
    }
  }
}

Instead 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:

{
  "mcpServers": {
    "uptime": {
      "command": "uptime-mcp",
      "args": [
        "-transport=stdio",
        "-uptime-url=https://uptime.com",
        "-client-id=<your-client-id>"
      ]
    }
  }
}

On the first tool call the server opens your browser to complete authorization, then refreshes the token in the background. See Authentication.

Download the archive for your platform from the Releases page (Linux, macOS, and Windows on amd64 and arm64), extract it, and put uptime-mcp

on your PATH

:

tar xzf uptime-mcp_<version>_<os>_<arch>.tar.gz
sudo mv uptime-mcp /usr/local/bin/
uptime-mcp -version

Published to GitHub Container Registry. Tags: :<version>

(immutable, e.g. :0.16.0

), :latest

(newest stable release), :main

(rolling main

HEAD).

docker pull ghcr.io/uptime-com/uptime-mcp:latest
docker run -i --rm -e UPTIME_BEARER_TOKEN ghcr.io/uptime-com/uptime-mcp:latest -transport=stdio

Published as an OCI chart. Per-environment URLs are not baked in; set them at install time.

helm install uptime-mcp oci://ghcr.io/uptime-com/uptime-mcp/charts/uptime-mcp \
  --set config.uptimeUrl=https://uptime.com
go install github.com/uptime-com/uptime-mcp@latest

The binary is installed as uptime-mcp

in $(go env GOPATH)/bin

.

git clone https://github.com/uptime-com/uptime-mcp.git
cd uptime-mcp
go build -o uptime-mcp .

Configuration is via CLI flags, with environment-variable fallbacks for the sensitive values.

Flag Env fallback Default Description
-transport
β€” stdio
Transport mode: stdio or http .
-listen
β€” :8080
HTTP listen address (HTTP mode only).
-uptime-url
UPTIME_URL
(required)
Uptime.com instance URL, e.g. https://uptime.com . The API base is <uptime-url>/api/v1/ .
-resource-url
UPTIME_RESOURCE_URL
http://localhost:<port>
Public URL of this server, for OAuth2 protected-resource metadata.
-client-id
UPTIME_OAUTH_CLIENT_ID
(empty)
OAuth2 client ID.
-client-secret
UPTIME_OAUTH_CLIENT_SECRET
(empty)
OAuth2 client secret (confidential clients).
-log-level
β€” error
Log level: debug , info , warn , error .
-version
β€” β€” Print version and commit, then exit.

Token environment variable:

Variable Description
UPTIME_BEARER_TOKEN
Static Uptime.com API token. Forwarded as-is, without verification or refresh.

Set UPTIME_BEARER_TOKEN

to a pre-obtained Uptime.com API token. Works in both stdio and HTTP modes; the token is forwarded to the Uptime.com API as-is, with no OAuth configuration, verification, or refresh.

UPTIME_BEARER_TOKEN=<your-api-token> uptime-mcp -transport=stdio

In stdio mode, when UPTIME_BEARER_TOKEN

is not set, the server performs a browser-based OAuth2 PKCE flow lazily, on the first tool call rather than at startup. This keeps the MCP handshake (initialize

, tools/list

) fast. It needs -uptime-url

and -client-id

; scope api/v1

is requested against <uptime-url>/o/authorize/

and <uptime-url>/o/token/

, and tokens are refreshed in the background.

uptime-mcp -transport=stdio \
  -uptime-url=https://uptime.com \
  -client-id=<your-client-id>

In 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:

Priority Source
1 Authorization: Bearer <token>
2 ?token=<token> query parameter
3 UPTIME_BEARER_TOKEN env var

When -uptime-url

is set, the server also serves RFC 9728 protected-resource metadata at /.well-known/oauth-protected-resource

, advertising the Uptime.com authorization server and scopes (api/v1

, api/v1:read

) so OAuth2-capable MCP clients can obtain tokens themselves.

uptime-mcp -transport=http -listen=:8080 \
  -uptime-url=https://uptime.com \
  -client-id=<your-client-id>

Dynamic Client Registration (

[RFC 7591]) is planned, so OAuth2 clients will not need a pre-registered client ID.

In HTTP mode the server listens on -listen

(default :8080

) and exposes:

POST /

β€” the streamable-HTTP MCP endpoint.GET /healthz

β€” liveness/readiness probe, returns204 No Content

.GET /.well-known/oauth-protected-resource

β€” RFC 9728 metadata (only when-uptime-url

is set).

uptime-mcp -transport=http -listen=:8080 -uptime-url=https://uptime.com
curl -i http://localhost:8080/healthz   # -> HTTP/1.1 204 No Content

The server registers tools across the Uptime.com domains below. Tool names are stable; use tools/list

from your MCP client to see full input schemas.

Checks β€” list, inspect, and manage monitoring checks

Tool Description
list_checks
List monitoring checks with optional filtering.
get_check
Get details for a specific check.
get_check_stats
Get uptime statistics for a check.
delete_check
Delete a check.
create_<type>_check
Create a check of a given type (see below).
update_<type>_check
Update a check of a given type (see below).

Supported check types (create_*

and update_*

): http

, dns

, ssl

, icmp

, tcp

, udp

, smtp

, imap

, pop

, ssh

, ntp

, whois

, rdap

, blacklist

, malware

, heartbeat

, webhook

, group

, pagespeed

, rum

, rum2

, cloudstatus

, api

, transaction

.

Locations

list_locations

, get_location

β€” discover probe-server locations and their IP addresses.

Contacts

list_contacts

, get_contact

, create_contact

, update_contact

, delete_contact

β€” manage contact groups used for alert notifications.

Tags

list_tags

, get_tag

, create_tag

, update_tag

, delete_tag

.

Dashboards

list_dashboards

, get_dashboard

, create_dashboard

, update_dashboard

, delete_dashboard

.

Status pages, components & incidents

  • Pages: list_status_pages

,get_status_page

,create_status_page

,update_status_page

,delete_status_page

. - Components: list_status_page_components

,get_status_page_component

,create_status_page_component

,update_status_page_component

,delete_status_page_component

. - Incidents: list_status_page_incidents

,get_status_page_incident

,create_status_page_incident

,update_status_page_incident

,delete_status_page_incident

.

Alerts & outages

list_alerts

, get_alert

, ignore_alert

, list_outages

, get_outage

.

Cloud status

list_cloudstatus_providers

, search_cloudstatus_services

β€” discover cloud providers and services for cloudstatus

checks.

Account

get_account_usage

β€” account usage and plan limits.

Requirements: Go 1.26+.

make test            # run unit tests
make e2e             # run e2e tests (requires UPTIME_BEARER_TOKEN)
make run/http        # run the HTTP server locally on :8080
go build -o uptime-mcp .

The e2e suite talks to a live Uptime.com account and is build-tagged e2e

; it runs only when you provide a valid UPTIME_BEARER_TOKEN

:

UPTIME_BEARER_TOKEN=<your-api-token> make e2e

Mocks are generated with mockery v3+ (.mockery.yaml

).

Contributions are welcome. Please open an issue to discuss substantial changes before sending a pull request, keep changes focused, and run make test

before submitting. By contributing you agree that your contributions are licensed under the project's MIT license.

Licensed under the MIT License. SPDX-License-Identifier: MIT

.

── more in #ai-tools 4 stories Β· sorted by recency
── more on @uptime.com 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/uptime-com-s-new-mcp] indexed:0 read:7min 2026-06-19 Β· β€”