Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Manage uptime monitors, incidents and status pages from any MCP client.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:
https://openuptime.app/api/mcpพิมพ์คำสั่งนี้ใน Terminal
claude mcp add --transport http openuptime https://openuptime.app/api/mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"openuptime": {
"url": "https://openuptime.app/api/mcp"
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"openuptime": {
"type": "http",
"url": "https://openuptime.app/api/mcp"
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:
https://openuptime.app/api/mcpชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
ยังไม่ได้อ่านรายการเครื่องมือของตัวนี้ เราตรวจ endpoint ทีละชุดวนไป
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันโดเมน openuptime.app แล้ว (registry ตรวจความเป็นเจ้าของโดเมน)
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนคลาวด์ของผู้ทำ ต่อผ่านอินเทอร์เน็ตได้เลย ไม่ต้องลงโปรแกรม แต่ข้อมูลที่ส่งให้จะผ่านเซิร์ฟเวอร์ของผู้ทำ
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.0) เข้า registry 23 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, topo^alpin
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Avalanche bulletins and mountain weather forecasts for any place in the Alps.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Open-source uptime monitoring and status pages. Runs on Cloudflare Workers with Postgres, or in one Docker container.
Hosted version · Docs · Reference · MIT license
Monitoring
Incidents and status pages
Alerts
Teams and automation
| Part | Stack |
|---|---|
apps/api | Hono, better-auth, Cloudflare Worker (cron + queue consumer) |
apps/web | Astro (static pages, SSR for status pages) + React islands |
packages/repo | Storage interface (Repo) and entity types |
packages/db-pg | Postgres implementation of Repo: Drizzle schema, migrations |
The site is two Workers on one domain:
| Worker | Serves | Also does |
|---|---|---|
openuptime-api | your-domain/api/* (a Worker route on your zone) | minute cron, queue consumer that runs the checks |
openuptime-web | everything 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
corepack enable provides the pinned version).git clone https://github.com/becoolme/openuptime.git && cd openuptime
pnpm install cd apps/api && npx wrangler login
All npx wrangler … commands below run in apps/api unless noted.
npx wrangler queues create openuptime-checks
npx 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:
"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.
From the repository root:
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.
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:
"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": "alerts@example.com" // 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:
"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. .workers.dev address. The web Worker then forwards /api/* to the API Worker through the service binding, so cookies stay same-origin.
npx wrangler secret put BETTER_AUTH_SECRET # openssl rand -hex 32
npx 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".
pnpm exec wrangler deploy # in apps/api
cd ../web && pnpm build && pnpm exec wrangler deploy
Deploy the API first: the web Worker binds to it by name.
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.
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.
Tagged releases are published to ghcr.io/becoolme/openuptime for linux/amd64 and linux/arm64. You need no clone and no build:
mkdir openuptime && cd openuptime
curl -fsSLO https://raw.githubusercontent.com/becoolme/openuptime/main/docker-compose.yml curl -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:
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.
git clone https://github.com/becoolme/openuptime.git && cd openuptime
cp .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.
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).
pnpm install
cp .env.example apps/api/.dev.vars # edit DATABASE_URL and secrets DATABASE_URL=postgres://user:pass@localhost:5432/openuptime_dev pnpm db:migrate # same URL as in .dev.vars pnpm dev:api # http://localhost:8787 (checks run inline every 15s) pnpm dev:web # http://localhost:4321 (proxies /api to the API) pnpm typecheck
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:
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.
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, MCP | All of it | All of it |
| Limits | None: no plans, quotas or metering | Free plan, paid plans from $5/month (pricing); monitors, checks, emails and history length depend on the plan |
| Running it | You: Postgres, the Worker or container, a mail provider, backups, upgrades | We do; nothing to install |
SSL certificate monitoring (expiry alerts, ssl monitor type) | Not included | Lite and above |
| Custom domain for a status page | Not included | Every paid plan (Lite and above), plus early-access workspaces |
| Where your data lives | Your database | Ours (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.
See CONTRIBUTING.md. Report vulnerabilities privately as described in SECURITY.md, not in public issues.
MIT