mcpField
O
openuptime

openuptime

リモート
openuptime.appクラウド・インフラ221 日前に更新
リポジトリ公式サイト

openuptime について

OpenUptimeは、Webサイトやインフラを運用するチーム向けのオープンソース監視・ステータスページサービスです。複数のチェック方式、インシデント管理、通知チャネルを備え、Cloudflare WorkersまたはDockerにデプロイできます。

主な機能

  1. 01HTTP・TCP・DNS・DB・ハートビート監視
  2. 02インシデントとメンテナンスの管理
  3. 03購読機能付き公開ステータスページ
  4. 04メール・チャット・Webhook通知
  5. 05ワークスペース・プロジェクト・ロール・APIキー

活用シーン

  1. 01サービスの稼働状況や応答遅延を監視する
  2. 02インシデントや計画メンテナンスを追跡する
  3. 03購読者向けにサービス状況を公開する

MCP 対応

MCPサーバーは、エージェントや他のMCPクライアントからStreamable HTTP経由で`/api/mcp`に接続し、モニター、インシデント、ステータスページを管理できます。OAuthまたはAPIキー認証に対応します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://openuptime.app/api/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

OpenUptime

OpenUptime

オープンソースの稼働状況監視とステータスページです。Postgres を使用して Cloudflare Workers 上で実行するか、1 つの Docker コンテナで実行できます。

ホスト版 · ドキュメント · リファレンス · MIT ライセンス

  • HTTP、TCP、DNS、ハートビート、PostgreSQL、MySQL、Redis のチェックに対応し、キーワードの照合と応答遅延アラートも利用できます
  • インシデント、メンテナンス期間、公開ステータスページに対応し、メール/RSS の購読も利用できます
  • Slack、Lark / Feishu、Telegram、PagerDuty、Webhook、メールへのアラート通知
  • ワークスペース、プロジェクト、ロール、API キー、エージェント向け MCP サーバー、JSON のインポート/エクスポート
部分スタック
apps/apiHono、better-auth、Cloudflare Worker(cron + キューコンシューマー)
apps/webAstro(静的ページ、ステータスページ用 SSR)+ React アイランド
packages/repoストレージインターフェース(Repo)とエンティティ型
packages/db-pgRepo の Postgres 実装:Drizzle スキーマ、マイグレーション

Cloudflare にデプロイする

サイトは、1 つのドメイン上にある 2 つの Worker で構成されています。

Worker配信内容ほかの役割
openuptime-apiyour-domain/api/*(ゾーン上の Worker ルート)分単位の cron、チェックを実行するキューコンシューマー
openuptime-webyour-domain 上のそれ以外すべて(Worker カスタムドメイン)ステータスページ(SSR)。サービスバインディング経由で API にアクセス

API を同じドメインの /api/* 配下に置くことで、セッション Cookie は同一オリジンのままになります。API 用に別のホスト名を用意する必要はありません。

始める前に

  • Cloudflare アカウントと、DNS が Cloudflare 上にあるドメイン(ゾーン)。
  • インターネットからアクセスできる Postgres データベース(Neon、Supabase、RDS、または独自のデータベース)。Workers は Hyperdrive 経由で接続します。
  • Node.js 22+ と pnpm(corepack enable で固定バージョンを利用できます)。
  • キューを使うには Workers の Paid プランが必要です(デフォルト)。Free プランでは代わりにインラインモードで実行してください。リファレンスを参照してください。
1. コードを取得してサインインする
git clone https://github.com/becoolme/openuptime.git && cd openuptime
pnpm install
cd apps/api && npx wrangler login

以下の npx wrangler … コマンドは、特に記載がない限り apps/api で実行します。

2. Queue と Hyperdrive を作成する
npx wrangler queues create openuptime-checks
npx wrangler hyperdrive create openuptime-prod --connection-string="postgres://user:pass@host:5432/db"

2 つ目のコマンドで ID が表示されます。apps/api/wrangler.jsonc で hyperdrive の行のコメントを解除し、ID を貼り付けます。

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

コメントアウトされている placement の行は任意です(Worker をデータベースホストの近くで実行します)。必要な場合を除き、コメントアウトしたままにしてください。

3. スキーマを作成する

リポジトリのルートから実行します。

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

新しい変更分だけを適用するため、アップグレードのたびに再実行してください。CREATE SCHEMA は実行しないため、データベースレベルの CREATE 権限がないロールでも使用できます。

4. ドメインを設定する

2 つのファイルを編集します。どちらも status.example.com を独自のドメインに置き換えてください。

apps/api/wrangler.jsonc では、サブドメインから配信する場合でも、zone_name にはゾーン(ルートドメイン)を指定します。 routes のコメントを解除して、次のように設定します。

"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
}

メールは任意です。設定しない場合、招待とアラートは Worker のログに書き込まれます。メールを送信するには、まず Cloudflare ダッシュボードの Email Sending でドメインを登録してください(リファレンスを参照)。

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

カスタムドメインの設定によって DNS レコードと証明書が自動作成されます。ホスト名に、すでに別の場所を指す DNS レコードが設定されていてはなりません。

Cloudflare 上のドメインをお持ちでない場合:両方のファイルで routes を省略し、BETTER_AUTH_URL と WEB_ORIGIN を Web Worker の https://openuptime-web.<your-subdomain>.workers.dev アドレスに設定します。その後、Web Worker はサービスバインディング経由で /api/* を API Worker に転送するため、Cookie は同一オリジンのままになります。

5. シークレットを設定する
npx wrangler secret put BETTER_AUTH_SECRET     # openssl rand -hex 32
npx wrangler secret put CRON_SECRET            # any long random string; guards /internal/*

wrangler から Worker の作成を求められたら、yes と答えてください。任意で GITHUB_CLIENT_ID と GITHUB_CLIENT_SECRET を設定すると、「GitHub でサインイン」を追加できます。

6. デプロイする
pnpm exec wrangler deploy                     # in apps/api
cd ../web && pnpm build && pnpm exec wrangler deploy

Web Worker は名前で API にバインドされるため、先に API をデプロイしてください。

7. 確認する
curl https://status.example.com/api/health    # {"ok":true}

ドメインを開いて、サインアップします。自分のアカウントを作成したら、API の vars で "DISABLE_SIGNUP": "true" を設定して再デプロイすると、登録を停止できます(招待された人は引き続き参加できます)。

後でアップグレードする場合: pull、pnpm install、pnpm db:migrate の順に実行してから、API、Web Worker の順にデプロイします。

Docker でセルフホストする

1 つのコンテナで API、Web アプリ、チェックのスケジューラーが動作します。Postgres は compose ファイルに含まれています。公開済みのイメージを実行するか、ソースからビルドしてください。設定はどちらも同じです。

オプション A:公開済みのイメージを実行する

タグ付きリリースは、linux/amd64 と linux/arm64 向けに ghcr.io/becoolme/openuptime で公開されています。クローンもビルドも必要ありません。

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

.env を編集して、POSTGRES_PASSWORD と BETTER_AUTH_SECRET(openssl rand -hex 32)を設定し、OPENUPTIME_IMAGE のコメントを解除します。 バージョンを固定する(ghcr.io/becoolme/openuptime:0.1.0)か、最新のリリースを使う(:latest)ようにします。その後、次を実行します。

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

アップグレードするには、バージョンを固定している場合はタグを変更してから、同じ 2 つのコマンドをもう一度実行します。マイグレーションは起動時に実行されます。

オプション B:ソースからビルドする
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

アップグレードするには、git pull を実行してから、docker compose up -d --build を実行します。

どちらの場合も

スキーマは起動時にマイグレーションされ、データは pgdata ボリュームに保存されます。アプリを http://localhost:8080 以外から提供する場合は、PUBLIC_URL を設定してください。メールは任意です。リファレンスを参照してください。

自分のアカウントを作成したら、.env で DISABLE_SIGNUP=true を設定し、docker compose up -d を実行すると、登録を停止できます(招待された人は引き続き参加できます)。

開発する

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

MCP サーバー

エージェント(Claude、Cursor、Codex、および任意の MCP クライアント)は、OAuth または API キーで認証し、/api/mcp の Streamable HTTP を通じてモニター、インシデント、ステータスページを管理できます。

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

クライアントの設定、スコープ、ツール一覧については、MCP ドキュメントを参照してください。 よく使うワークフローを紹介するエージェントスキルは、skills/openuptime に含まれています。 npx skills add becoolme/openuptime。 ホストされているサーバーは、MCP Registry に app.openuptime/mcp として登録されています。そのエントリーは server.json です。

テスト、チェックの実行方法、MCP サーバー、アラートチャネルなどの詳細については、docs/reference.md を参照してください。

オープンソース版とホスト版

モニタリング自体は、どちらも同じコードです。openuptime.app のホスト型サービスでは、プラン、請求、およびそのビルドでのみ利用できるいくつかの機能が追加されています。このリポジトリとは 1 つのインターフェース(Edition。docs/editions.md を参照)を介して連携するため、コアの機能がロックされたり、制限されたりすることはありません。

セルフホスト(このリポジトリ、MIT)ホスト型(openuptime.app)
モニター、インシデント、ステータスページ、アラートチャネル、API、MCPすべてすべて
制限なし:プラン、クォータ、従量計測はありません無料プラン、有料プランは月額 $5 から(料金)。モニター、チェック、メール、履歴の長さはプランによって異なります
運用ご自身で対応:Postgres、Worker またはコンテナ、メールプロバイダー、バックアップ、アップグレードこちらで対応します。インストールは不要です
SSL 証明書のモニタリング(有効期限アラート、ssl モニタータイプ)含まれませんLite 以上
ステータスページのカスタムドメイン含まれませんTeam
データの保存場所ご自身のデータベース当社(マネージドホスティング上の Postgres)

データとインフラストラクチャを自分で管理したい場合や、制限を気にせず使いたい場合はセルフホストを選んでください。何も運用したくない場合はホスト型を選んでください。どちらにも同じコアのアップデートが提供されます。

コントリビューションとセキュリティ

CONTRIBUTING.md を参照してください。脆弱性は公開 Issue ではなく、SECURITY.md の説明に従って非公開で報告してください。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。