Openuptime

app.openuptime由 openuptime.app 發布官方發布者v1.0.0更新於 Oct 24, 2026

Manage uptime monitors, incidents and status pages from any MCP client.

已驗證Streamable HTTP可網頁執行雲端與基礎設施安全與監控

概覽

AI 產生的概覽

OpenUptime 的託管 MCP 端點,讓 AI 助理在任意 MCP 用戶端中管理可用性監控、故障事件與狀態頁。

可以做什麼
  • 管理可用性監控:HTTP/HTTPS 關鍵字比對、TCP、DNS、WebSocket、心跳、資料庫與 RPC 節點檢查
  • 處理故障事件:確認、指派與事後檢討,以及維護時段
  • 維護公開狀態頁,包含訂閱、徽章與嵌入
  • 管理團隊的工作區、專案與角色
  • 同一組工具可用於託管服務,也可用於自架實例的 /api/mcp 路徑
適用情境
適合已在 OpenUptime 進行可用性監控、希望助理不必開啟主控台就能建立或調整監控、處理故障事件、更新狀態頁的團隊。自架 OpenUptime 並想讓代理程式存取自有實例的情境同樣適用。
執行需求
需要遠端 Streamable HTTP 端點(服務商的 /api/mcp 路徑,或自架主機的對應路徑)。必須使用 OAuth 授權,README 也提到可用 API 金鑰替代。需要託管帳號,或已部署的自架實例(含 Postgres 與相關密鑰)。
安裝前請注意
這些工具會改變監控狀態:建立或修改監控、確認與指派故障事件、修改公開狀態頁,助理的操作會直接呈現給訪客與值班人員。託管服務依方案計費,付費方案自每月 5 美元起。自架需要 BETTER_AUTH_SECRET、CRON_SECRET 等密鑰,託管版資料存放在服務商的資料庫中。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Openuptime,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/app.openuptime%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "openuptime": {
      "type": "http",
      "url": "https://openuptime.app/api/mcp"
    }
  }
}

README

[OpenUptime]

OpenUptime

Open-source uptime monitoring and status pages. Runs on Cloudflare Workers with Postgres, or in one Docker container.

Hosted version · Docs · Reference · MIT license

Features

Monitoring

  • HTTP / HTTPS with keyword matching and slow-response alerts
  • TCP, DNS and WebSocket
  • Heartbeat (push) monitors for cron jobs and background workers
  • PostgreSQL, MySQL and Redis
  • Domain expiry
  • EVM and Solana RPC node health
  • MCP server checks
  • Multi-region checks, with your own probes
  • Monitor dependencies, so a downstream outage doesn't page you twice

Incidents and status pages

  • Incidents with acknowledgement, assignment and postmortems
  • Maintenance windows, one-off or recurring
  • Public status pages
  • Email and RSS subscriptions for status page visitors
  • Status badges and embeds for your site or README

Alerts

  • Slack, Discord, Microsoft Teams, Telegram, Lark / Feishu and ntfy
  • PagerDuty, webhooks and email
  • Push notifications to the iOS app
  • Repeat reminders and escalation

Teams and automation

  • Workspaces, projects and roles
  • GitHub sign-in and two-factor authentication
  • REST API with API keys
  • MCP server so your AI agent can manage monitors, incidents and status pages
  • JSON import / export
PartStack
apps/apiHono, better-auth, Cloudflare Worker (cron + queue consumer)
apps/webAstro (static pages, SSR for status pages) + React islands
packages/repoStorage interface (Repo) and entity types
packages/db-pgPostgres implementation of Repo: Drizzle schema, migrations

Deploy to Cloudflare

The site is two Workers on one domain:

WorkerServesAlso does
openuptime-apiyour-domain/api/* (a Worker route on your zone)minute cron, queue consumer that runs the checks
openuptime-webeverything else on your-domain (a Worker custom domain)status pages (SSR); reaches the API through a service binding

Keeping the API under /api/* of the same domain means session cookies stay same-origin. You need no separate API hostname.

Before you start

  • A Cloudflare account and a domain whose DNS is on Cloudflare (the zone).
  • A Postgres database reachable from the internet (Neon, Supabase, RDS, your own). Workers connect through Hyperdrive.
  • Node.js 22+ and pnpm (corepack enable provides the pinned version).
  • Workers Paid plan for the Queue (default). On the Free plan, run in inline mode instead: see Reference.

1. Get the code and sign in

bash
git clone https://github.com/becoolme/openuptime.git && cd openuptimepnpm installcd apps/api && npx wrangler login

All npx wrangler … commands below run in apps/api unless noted.

2. Create the Queue and Hyperdrive

bash
npx wrangler queues create openuptime-checksnpx wrangler hyperdrive create openuptime-prod --connection-string="postgres://user:pass@host:5432/db"

The second command prints an id. In apps/api/wrangler.jsonc uncomment the hyperdrive line and paste it:

jsonc
"hyperdrive": [{ "binding": "HYPERDRIVE", "id": "<id printed above>" }],

The commented placement line is optional (it runs the Worker next to your database host); leave it commented unless you want that.

3. Create the schema

From the repository root:

bash
DATABASE_URL="postgres://user:pass@host:5432/db" pnpm db:migrate

It only applies what is new, so run it again after every upgrade. It never issues CREATE SCHEMA, so a role without database-level CREATE works too.

4. Point the config at your domain

Edit two files. In both, replace status.example.com with your own domain.

apps/api/wrangler.jsonc, where zone_name is the zone (the apex domain) even when you serve from a subdomain. Uncomment routes and set:

jsonc
"routes": [{ "pattern": "status.example.com/api/*", "zone_name": "example.com" }],"vars": {  "BETTER_AUTH_URL": "https://status.example.com",   // public origin: cookies, OAuth, email links  "WEB_ORIGIN": "https://status.example.com",        // same value  "EMAIL_FROM": "[email protected]"                 // sender address; optional, see below}

Email is optional: without it invitations and alerts are written to the Worker log. To send it, onboard your domain under Email Sending in the Cloudflare dashboard first (see Reference).

apps/web/wrangler.jsonc:

jsonc
"routes": [{ "pattern": "status.example.com", "custom_domain": true }],"vars": { "PRODUCT_URL": "https://status.example.com" }   // target of the "Powered by" link on status pages

The custom domain creates its DNS record and certificate for you; the hostname must not already have a DNS record pointing elsewhere.

No domain on Cloudflare? Leave routes out of both files and set BETTER_AUTH_URL and WEB_ORIGIN to the web Worker's https://openuptime-web.<your-subdomain>.workers.dev address. The web Worker then forwards /api/* to the API Worker through the service binding, so cookies stay same-origin.

5. Set the secrets

bash
npx wrangler secret put BETTER_AUTH_SECRET     # openssl rand -hex 32npx wrangler secret put CRON_SECRET            # any long random string; guards /internal/*

If wrangler asks to create the Worker first, answer yes. Optional: GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET add "Sign in with GitHub".

6. Deploy

bash
pnpm exec wrangler deploy                     # in apps/apicd ../web && pnpm build && pnpm exec wrangler deploy

Deploy the API first: the web Worker binds to it by name.

7. Check it

bash
curl https://status.example.com/api/health    # {"ok":true}

Open the domain and sign up. Once your own account exists you can set "DISABLE_SIGNUP": "true" in the API vars and deploy again to close registration (invited people can still join).

Upgrade later: pull, pnpm install, pnpm db:migrate, then deploy the API and the web Worker, in that order.

Self-host with Docker

One container runs the API, the web app and the check scheduler; Postgres comes with the compose file. Either run the published image or build it from source; the settings are the same.

Option A: run the published image

Tagged releases are published to ghcr.io/becoolme/openuptime for linux/amd64 and linux/arm64. You need no clone and no build:

bash
mkdir openuptime && cd openuptimecurl -fsSLO https://raw.githubusercontent.com/becoolme/openuptime/main/docker-compose.ymlcurl -fsSL https://raw.githubusercontent.com/becoolme/openuptime/main/.env.docker.example -o .env

Edit .env: set POSTGRES_PASSWORD and BETTER_AUTH_SECRET (openssl rand -hex 32), and uncomment OPENUPTIME_IMAGE. Pin a version (ghcr.io/becoolme/openuptime:0.1.0) or follow the newest release (:latest). Then:

bash
docker compose pull && docker compose up -d     # http://localhost:8080

Upgrade: change the tag if you pinned one, then run the same two commands again. Migrations run on start.

Option B: build from source

bash
git clone https://github.com/becoolme/openuptime.git && cd openuptimecp .env.docker.example .env      # set POSTGRES_PASSWORD and BETTER_AUTH_SECRET (openssl rand -hex 32)docker compose up -d --build     # http://localhost:8080

Upgrade: git pull, then docker compose up -d --build.

Either way

The schema is migrated on start and the data lives in the pgdata volume. Set PUBLIC_URL when the app is not served from http://localhost:8080. Email is optional; see Reference.

Once your own account exists, set DISABLE_SIGNUP=true in .env and run docker compose up -d to close registration (invited people can still join).

Develop

bash
pnpm installcp .env.example apps/api/.dev.vars   # edit DATABASE_URL and secretsDATABASE_URL=postgres://user:pass@localhost:5432/openuptime_dev pnpm db:migrate   # same URL as in .dev.varspnpm dev:api    # http://localhost:8787  (checks run inline every 15s)pnpm dev:web    # http://localhost:4321  (proxies /api to the API)pnpm typecheck

MCP server

Agents (Claude, Cursor, Codex and any MCP client) can manage monitors, incidents and status pages over Streamable HTTP at /api/mcp, authorizing with OAuth or an API key:

bash
claude mcp add --transport http openuptime https://openuptime.app/api/mcp   # or https://<your-host>/api/mcp

Client setup, scopes and the tool list are in the MCP docs. An agent skill that teaches the common workflows ships in skills/openuptime: npx skills add becoolme/openuptime. The hosted server is listed in the MCP Registry as app.openuptime/mcp; server.json is its entry.

Tests, how checks run, the MCP server, alert channels and the other details are in docs/reference.md.

Open source vs hosted

The monitoring itself is the same code in both. The hosted service at openuptime.app adds plans, billing and a few features that live only in that build; it plugs into this repo through one interface (Edition, see docs/editions.md), so nothing in the core is locked or throttled.

Self-hosted (this repo, MIT)Hosted (openuptime.app)
Monitors, incidents, status pages, alert channels, API, MCPAll of itAll of it
LimitsNone: no plans, quotas or meteringFree plan, paid plans from $5/month (pricing); monitors, checks, emails and history length depend on the plan
Running itYou: Postgres, the Worker or container, a mail provider, backups, upgradesWe do; nothing to install
SSL certificate monitoring (expiry alerts, ssl monitor type)Not includedLite and above
Custom domain for a status pageNot includedEvery paid plan (Lite and above), plus early-access workspaces
Where your data livesYour databaseOurs (Postgres on managed hosting)

Pick self-hosting if you want to own the data and the infrastructure, or have no limits to worry about. Pick hosted if you would rather not run anything. Both receive the same core updates.

Contributing & security

See CONTRIBUTING.md. Report vulnerabilities privately as described in SECURITY.md, not in public issues.

License

MIT

來源:README.md,提交 4a02d75

工具

0
該伺服器需要登入,因此 SourceWeft 無法在沒有帳號的情況下讀取其工具,也未收錄。已連接帳號所能看到的內容可能因帳號及其權限而異。

版本歷史

1
  1. v1.0.0最新Oct 15, 2026

評分

已滿足適用檢查項的 85%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分