Monitor uptime and incidents, run checks, and publish status updates from your Uptimepage org.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Status pages + uptime monitoring. Open source, free to start. Live in 5 minutes.
Monitor HTTP, TCP, ICMP ping, cron-job heartbeats, DNS, TLS-certificate and domain expiry, plus scripted browser login flows, from multiple regions β then turn green and red into a polished public status page your customers can subscribe to. Drive it by click, REST API, or Terraform. Self-host the single binary or use the hosted service.
Try it free βΒ Β Β·Β Β DocsΒ Β Β·Β Β Self-hostΒ Β Β·Β Β TerraformΒ Β Β·Β Β MCP
Hosted, no install:
Prefer code? Drive the same account by REST API, Terraform, or MCP. Want to run it yourself? Go to Self-host.
Monitoring with a built-in status page isn't new β the bet here is doing it free, self-hostable, and fully as code:
docker compose up and you're live, not a Kubernetes platform to operate.uptimepage monitors itself. These badges are served by the running app from a public status page β no third-party service, no cron job updating a JSON file.
| Surface | HTTP | DNS | TLS cert | Domain |
|---|---|---|---|---|
| uptimepage.dev (website) | ||||
| app.uptimepage.dev (dashboard) | ||||
| mcp.uptimepage.dev (MCP) |
Embed your own with the snippet in Settings β Pages β your page β Badge.
| Checks | HTTP, TCP, ICMP ping, heartbeat (inbound dead-man's-switch), DNS, TLS-cert expiry, domain expiry, browser login flow with per-step timings β per-host circuit breaking, designed for ~50k concurrent in-flight |
| Public status page | HTML + JSON + RSS, per-component opt-in, incident narration, maintenance windows, email + webhook subscribers |
| Alerting | Slack, PagerDuty, Discord, Microsoft Teams, Google Chat, Telegram, WhatsApp, SMS, email, webhook, ntfy, Pushover β per-org channels, sealed secrets, fire-once + recovery, repeat until acknowledged |
| Incidents | Internal incident state β₯ public phase, acknowledge to silence paging, per-monitor reminder cadence |
| Multi-region | Regional probe agents, per-region views, run your own agent anywhere |
| Automation | REST API, scoped API tokens, Terraform provider, MCP server for LLM clients |
| Built on | Rust 1.95 / Tokio / Axum, Postgres + ClickHouse, one ~23 MB self-contained binary |
Live service: https://uptimepage.dev β hosted, free, sign in with GitHub, Google or your email address. Full docs: https://uptimepage.dev/docs
| Type | Purpose | Default interval | Floor |
|---|---|---|---|
http | request a URL, match status / body / latency | 60 s | max(plan_min, 10 s) |
tcp | open a TCP socket within a timeout | 60 s | max(plan_min, 10 s) |
ping | ICMP echo request, fail on a missing reply | 60 s | max(plan_min, 10 s) |
heartbeat | your job pings a URL; a missing ping past period + grace opens an incident | 60 s | max(plan_min, 60 s) |
dns | resolve a record, optionally match a value | 60 s | max(plan_min, 10 s) |
tls_cert | open TLS, parse leaf cert, alert before notAfter | 86 400 s (daily) | max(plan_min, 3600 s) |
domain_expiry | query RDAP, alert before the domain's expiration event | 86 400 s (daily) | max(plan_min, 43 200 s) |
flow | drive a headless browser through login / transaction steps, assert the result | 300 s | max(plan_min, 300 s) |
tls_cert and domain_expiry use warn_days / critical_days thresholds and surface days_remaining plus registrar / cert subject in the result payload. Their floors are 1 hour for tls_cert and 12 hours for domain_expiry, regardless of plan β these probes track values that change on a scale of days, not minutes, and RDAP rate-limits by source address. flow runs a real browser, so it only executes where a browser engine is available (its regions clamp to the flow-capable set) and the number of flow monitors is capped per plan; put credentials in an org secret and reference them as {{name}}. Every flow run is kept with each step's outcome and duration, and the monitor page charts each step on its own scale, so a wait drifting from 200 ms to four seconds shows up long before the journey fails. A self-hosted install starts with that cap at 0; docs/monitor-types.md covers turning it on. See docs/api.md for the full payload shapes.
A customer-facing /status page (HTML + JSON + RSS 2.0) is built into the binary. Per-target opt-in via public_status; the page bypasses basic auth at the Caddy layer with a per-IP rate limit, caches for 10 s in-process, and degrades gracefully if ClickHouse is unreachable. Operators narrate incidents (PATCH /api/v1/incidents/{id}, POST /api/v1/incidents/{id}/updates) and schedule maintenance windows (POST /api/v1/maintenance). Visitors subscribe for email or webhook updates. See docs/public-status.md.
Notification channels are per-org resources (Slack incoming webhook, generic
HTTP webhook, Telegram bot, SMS gateway, β¦) created via /api/v1/notification-channels.
Transport secrets are sealed at rest and never echoed back.
A target opts in by binding one or more channels in its alerts array:
Fire-once + recovery semantics. Channels are tenant-isolated β a target can only bind a channel its own org owns. See docs/api.md for the full contract.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/uptimepage)<a href="https://allmcps.com/mcp/uptimepage"><img src="https://allmcps.com/api/badge/uptimepage?style=directory" alt="Uptimepage on AllMCPs" /></a>