Health Monitor について
Health Monitor は、MCP サーバー、CI パイプライン、HTTP エンドポイントを監視する TypeScript 製 MCP サーバーです。上限付きの検査証跡を SQLite に保存し、稼働履歴、アサーション、アラート、複数プロバイダーのレポートを扱います。
主な機能
- 01HTTP、SSE、明示的に許可した stdio で MCP サーバーを監視
- 02GitHub Actions と GitLab パイプラインの検査
- 03HTTP 応答のアサーションと TLS 期限の確認
- 04SQLite への上限付き稼働履歴の保存
- 05アラートと Webhook 通知の設定
- 06ダッシュボードとレポートの生成
活用シーン
- 01MCP サーバーの稼働率とレイテンシの追跡
- 02CI の失敗ジョブとパイプライントレースの確認
- 03エンドポイント応答と証明書期限の検証
- 04複数プロバイダーの稼働レポートとアラートの確認
MCP 対応
MCP サーバーとして、MCP 対象、CI パイプライン、HTTP エンドポイント、Webhook の登録・検査ツールと、履歴、アラート、ダッシュボード、レポートの照会機能を提供します。stdio と Streamable HTTP に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y health-monitor-mcpHEALTH_MONITOR_DBCustom path for the SQLite databaseHEALTH_MONITOR_AUTO_CHECKSet to '1' to enable background scheduled checksHEALTH_MONITOR_RETENTION_DAYSNumber of days to retain health check historyHEALTH_MONITOR_MAX_CONCURRENCYMaximum concurrent scheduled and interactive server checksGITHUB_TOKENシークレットOptional GitHub token with Actions read access for private repositories and higher API rate limitsGITLAB_TOKENシークレットOptional GitLab token with read access to private projects, pipelines, jobs, and tracesHEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLISTComma-separated self-hosted GitLab HTTPS origins allowed for monitoringHEALTH_MONITOR_HTTP_TARGET_ALLOWLISTComma-separated private HTTP(S) origins allowed only in the full runtime profileローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
22掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | はい | この GitHub Actions ターゲットの一意なローカル名 |
| tags | array | いいえ | グループ化用のタグ |
| owner | string | はい | GitHub ユーザーまたは組織 |
| branch | string | いいえ | ワークフロー実行の任意のブランチフィルター |
| workflow | string | はい | ワークフローの数値 ID または .yml/.yaml ファイル名 |
| token_env | string | いいえ | GitHub トークンを含む環境変数。トークン値は永続化されません |
| repository | string | はい | GitHub リポジトリ名 |
| check_interval_minutes | integer | いいえ |
詳細
health-monitor-mcp
MCP サーバー、CI ワークフロー、汎用 HTTP エンドポイントを監視し、ヘルス履歴、TLS の有効期限、アサーション、診断、運用レポートを提供します。
このツールについて
health-monitor-mcp は、MCP サーバー、GitHub Actions ワークフロー、GitLab パイプライン、汎用 HTTP エンドポイントのローカルレジストリを管理します。ライブチェックを実行し、上限付きの証跡を SQLite に記録し、MCP のアラートしきい値を評価して、エージェントや運用担当者に適した JSON または Markdown 形式の診断情報を返します。
対応するターゲットのトランスポート:
- Streamable HTTP:現在のリモート MCP サーバー向け。
- SSE:レガシー MCP サーバー向け。
- stdio:明示的なオプトイン後に使用する、信頼済みのローカル実行ファイル向け。
- GitHub Actions:パブリックまたはプライベートリポジトリのワークフロー実行、失敗したジョブ、失敗したステップ。
- GitLab CI/CD:GitLab.com または許可リストに登録されたセルフホスト型インスタンスのパイプライン、失敗したジョブ、ステージ、参照、コミット、URL、上限付きトレース抜粋。
- 汎用 HTTP/HTTPS:ステータス、ヘッダー、本文の部分文字列、JSON 値、リダイレクト、レイテンシ、TLS の有効期限のチェック。
Azure DevOps の監視は v1.1.0 で終了しました。GitHub Actions は v1.2.0、GitLab CI/CD は v1.3.0 で追加され、汎用 HTTP/TLS 監視によって現在のマルチプロバイダー機能が完成しました。
クイックスタート
Node.js 24 を使用して、公開パッケージを非対話形式で実行します:
npx -y health-monitor-mcp --version
MCP クライアントの設定例:
{
"mcpServers": {
"health-monitor": {
"command": "npx",
"args": ["-y", "health-monitor-mcp"]
}
}
}
ツール
| ツール | 目的 | プロンプトの例 |
|---|---|---|
register_server | MCP ターゲットを登録します | Register inventory-prod |
check_server | MCP のヘルスチェックを 1 回実行します | Check inventory-prod now |
register_github_actions | GitHub ワークフローを登録します | Monitor ci.yml in owner/repo |
check_github_actions | 最新の GitHub 実行と、失敗したジョブ/ステップの診断情報を確認します | Check repo-ci now |
register_gitlab_pipeline | GitLab プロジェクトのパイプラインを登録します | Monitor group/project on GitLab |
check_gitlab_pipeline | 最新のパイプラインと、範囲を限定した失敗ジョブのトレースを確認します | Check gitlab-ci now |
register_http_target | GET のみを許可する HTTP/HTTPS エンドポイントを登録します | Monitor the public health endpoint |
check_http_target | レスポンスのアサーションと TLS の有効期限を確認します | Check service-health now |
register_webhook | アラート配信用の Webhook ターゲットを登録します | Register alert-webhook for notifications |
test_webhook | テストペイロードを送信し、配信診断情報を返します | Test alert-webhook delivery |
check_all | すべての種類のターゲットを、同時実行数を制限して確認します | Check all production targets |
get_uptime | MCP の稼働時間とレイテンシの履歴を返します | Show 24h uptime for inventory-prod |
get_dashboard | プロバイダー横断の JSON ダッシュボードを返します | Give me a 24h dashboard |
get_report | プロバイダー横断の Markdown レポートを返します | Generate a 24h health report |
list_servers | 登録済みの MCP ターゲットを一覧表示します | List monitored MCP servers |
list_github_actions | 登録済みの GitHub ワークフローターゲットを一覧表示します | List monitored workflows |
list_gitlab_pipelines | 登録済みの GitLab パイプラインターゲットを一覧表示します | List monitored GitLab pipelines |
list_http_targets | 登録済みの HTTP ターゲットを一覧表示します | List monitored HTTP endpoints |
list_webhooks | 登録済みの Webhook ターゲットを一覧表示します | List webhook targets |
unregister_server | MCP ターゲットを削除します | Stop monitoring local-debugger |
unregister_github_actions | GitHub ターゲットとその履歴を削除します | Stop monitoring repo-ci |
unregister_gitlab_pipeline | GitLab ターゲットとその履歴を削除します | Stop monitoring gitlab-ci |
unregister_http_target | HTTP ターゲットとその履歴を削除します | Stop monitoring service-health |
unregister_webhook | Webhook ターゲットとその履歴を削除します | Stop monitoring alert-webhook |
set_alert | MCP ヘルスチェックのしきい値を設定します | Alert if inventory-prod exceeds 500ms |
get_monitor_stats | プロバイダー横断のモニターアクティビティを確認します | How many checks are stored? |
想定される設定ミスでは、SERVER_NOT_FOUND、GITHUB_ACTIONS_TARGET_NOT_FOUND、GITLAB_PIPELINE_TARGET_NOT_FOUND、GITLAB_BASE_URL_NOT_ALLOWED、HTTP_TARGET_NOT_FOUND、HTTP_TARGET_URL_NOT_ALLOWED、NO_SERVERS_REGISTERED、STDIO_DISABLED、STDIO_COMMAND_REJECTED、WEBHOOK_ENCRYPTION_KEY_REQUIRED、WEBHOOK_REGISTRATION_FAILED、WEBHOOK_NOT_FOUNDなど、安定したエラーコードと修正のヒントが返されます。 |
ターゲットを登録する
ストリーム可能な HTTP:
register_server name="inventory-prod" type="http" url="https://inventory.example.com/mcp" tags=["production","inventory"]
レガシー SSE:
register_server name="legacy-search" type="sse" url="https://search.example.com/sse" tags=["legacy"]
信頼できるローカル stdio:
export HEALTH_MONITOR_ALLOW_STDIO=1
export HEALTH_MONITOR_STDIO_ALLOWLIST=npx,node
register_server name="local-debugger" type="stdio" command="npx" args=["-y","mcp-debug-recorder"] tags=["local"]
command フィールドには実行可能ファイルを1つだけ指定してください。パッケージ名とフラグは args に指定してください。リモートセーフなランタイムプロファイルでは、stdioは常に無効になります。
GitHub Actionsを登録する
公開リポジトリは認証なしでチェックできます。プライベートリポジトリと、より高いAPIレート制限を利用するには、Actionsの読み取りアクセス権を持つトークンが必要です。
export GITHUB_TOKEN=your-runtime-secret
register_github_actions name="repo-ci" owner="oaslananka" repository="health-monitor-mcp" workflow="ci.yml" branch="main" token_env="GITHUB_TOKEN" tags=["production","ci"]
check_github_actions name="repo-ci" timeout_ms=5000
保存されるのは、token_env の環境変数名だけです。トークンの値はチェック時に読み込まれ、SQLite、ログ、レポート、ツールの応答には書き込まれません。
GitLab Pipelinesを登録する
公開されているGitLab.comのプロジェクトは認証なしでチェックできます。プライベートプロジェクトには、ランタイム環境からのみ参照できるトークンが必要です。
export GITLAB_TOKEN=your-runtime-secret
register_gitlab_pipeline name="gitlab-ci" project="group/project" ref="main" token_env="GITLAB_TOKEN" tags=["production","ci"]
check_gitlab_pipeline name="gitlab-ci" timeout_ms=5000
GitLab.comはデフォルトで許可されています。セルフホストインスタンスではHTTPSオリジンを使用し、明示的に許可する必要があります。
export HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST=https://gitlab.internal.example
register_gitlab_pipeline name="private-gitlab" base_url="https://gitlab.internal.example" project="platform/service" token_env="GITLAB_TOKEN"
永続化されるのは token_env のみです。トークンの値、レスポンス本文、完全なトレースは保存も返却もされません。失敗したジョブのトレース抜粋は、範囲リクエストで取得され、サニタイズされ、サイズが制限されます。
HTTPターゲットを登録する
公開HTTPおよびHTTPSエンドポイントはデフォルトで許可されています。プロバイダーはGETリクエストのみを送信し、ステータス、ヘッダー、本文内の部分文字列、JSONスカラー、TLS証明書の有効期限について、上限付きのアサーションをサポートします。
register_http_target name="service-health" url="https://status.example.com/health" expected_statuses=[200] header_assertions=[{"name":"x-ready","equals":"yes"}] body_contains=["ready"] json_assertions=[{"path":"status","equals":"ready"}] tls_expiry_days=30 tags=["production","http"]
check_http_target name="service-health" timeout_ms=5000
プライベート、ループバック、リンクローカル、その他の非公開アドレスはブロックされます。信頼できるプライベートオリジンは full ランタイムプロファイルでのみ使用でき、明示的に一覧に追加する必要があります。
export HEALTH_MONITOR_HTTP_TARGET_ALLOWLIST=https://status.internal.example:8443
すべてのDNS応答とリダイレクト先は再検証されます。レスポンスサイズは262144バイトまでに制限されます。完全なレスポンス本文と証明書チェーンは保存も返却もされません。
Webhookターゲットを登録する
Webhookターゲットは、オプションのHMAC-SHA256署名を付けてHTTPS POSTでアラート通知を受け取ります。HEALTH_MONITOR_WEBHOOK_ENCRYPTION_KEY が設定されている場合(32文字以上)、シークレットは保存時に暗号化されます。設定されていない場合、シークレットの登録は拒否されます。
register_webhook name="alert-webhook" url="https://hooks.example/alerts" secret="webhook-secret" events=["down","alert"] tags=["production","alerts"]
test_webhook name="alert-webhook"
シークレットは一覧や診断で返されることはなく、常にマスクされます。配信診断には、ステータス、レイテンシ、HTTPステータスコード、エラーメッセージが含まれます。
ヘルスチェックとレポート
check_server name="inventory-prod" timeout_ms=5000
check_all timeout_ms=5000 tags=["production"]
get_uptime name="inventory-prod" hours=24
get_dashboard hours=24 include_tool_stats=true
get_report hours=24
HEALTH_MONITOR_MAX_CONCURRENCY は、スケジュール実行と対話型実行で共有されるキューを通じて、MCP、GitHub Actions、GitLab、HTTPのチェック数を制限します。チェックが完了した順序にかかわらず、結果は登録順(MCP、GitHub、GitLab、HTTP)を維持します。
アラート
set_alert name="inventory-prod" max_response_time_ms=500 min_uptime_percent=99 consecutive_failures_before_alert=2
アラートの検出結果は、check_server、check_all、get_dashboard によって評価されます。アラート通知を受け取るには、register_webhook でWebhookターゲットを設定してください。
設定
| 変数 | デフォルト | 用途 |
|---|---|---|
HEALTH_MONITOR_DB | ~/.mcp-health-monitor/health.db | SQLite データベースのパス |
HEALTH_MONITOR_AUTO_CHECK | 0 | 1で定期チェックを有効にします |
HEALTH_MONITOR_RETENTION_DAYS | 30 | ヘルス履歴の保持期間 |
HEALTH_MONITOR_MAX_CONCURRENCY | 5 | 定期チェックと対話型チェックの同時実行数 |
GITHUB_TOKEN | unset | GitHub Actions の読み取り用オプショントークン |
GITLAB_TOKEN | unset | GitLab プロジェクト/パイプライン/ジョブの読み取り用オプショントークン |
HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST | unset | 許可するセルフホスト型 GitLab の HTTPS オリジン |
HEALTH_MONITOR_HTTP_TARGET_ALLOWLIST | unset | フルプロファイルで許可するプライベート HTTP(S) オリジン |
HEALTH_MONITOR_ALLOW_STDIO | 0 | 信頼できるローカル stdio チェックを許可します |
HEALTH_MONITOR_STDIO_ALLOWLIST | unset | オプションのカンマ区切り実行ファイル許可リスト |
HEALTH_MONITOR_HTTP_TOKEN | unset | POST /mcp 用の Bearer トークン |
HEALTH_MONITOR_HTTP_ORIGIN_ALLOWLIST | unset | 許可するリモートクライアントのオリジン |
HEALTH_MONITOR_HTTP_MAX_BODY_BYTES | 1048576 | 受信 MCP ボディの最大サイズ |
HEALTH_MONITOR_HTTP_BODY_TIMEOUT_MS | 15000 | 受信ボディの読み取りタイムアウト |
HEALTH_MONITOR_HTTP_STATEFUL_SESSIONS | 0 | ステートフルな Streamable HTTP セッションを有効にします |
HEALTH_MONITOR_HTTP_SESSION_TTL_MS | 1800000 | ステートフルセッションの TTL |
HEALTH_MONITOR_HTTP_MAX_SESSIONS | 100 | ステートフルセッションの上限 |
HEALTH_MONITOR_WEBHOOK_ENCRYPTION_KEY | unset | Webhook シークレットの暗号化用 32 文字以上のキー |
HEALTH_MONITOR_WEBHOOK_TIMEOUT_MS | 5000 | Webhook 配信のタイムアウト(ミリ秒) |
HTTP デプロイ
サーバーはデフォルトで 127.0.0.1 にバインドします。ループバック以外へのバインドには、リモートセーフプロファイル、Bearer トークン、Origin 許可リストが必要です。
HOST=0.0.0.0 \
HEALTH_MONITOR_PROFILE=remote-safe \
HEALTH_MONITOR_HTTP_TOKEN=change-me \
HEALTH_MONITOR_HTTP_ORIGIN_ALLOWLIST=https://client.example \
npx -y health-monitor-mcp-http
GET /health は認証不要で、ステータスとバージョンのみを公開します。POST /mcp には Authorization: Bearer <token> が必要です。
Docker
/data を永続化してください。そうしない場合、コンテナとともに SQLite データベースが消失します。
docker volume create health-monitor-data
docker run --rm \
-v health-monitor-data:/data \
-p 127.0.0.1:3000:3000 \
-e HOST=0.0.0.0 \
-e HEALTH_MONITOR_PROFILE=remote-safe \
-e HEALTH_MONITOR_HTTP_TOKEN=change-me \
-e HEALTH_MONITOR_HTTP_ORIGIN_ALLOWLIST=https://client.example \
ghcr.io/oaslananka/health-monitor-mcp:latest
開発
このリポジトリでは、.mise.toml を通じて Node.js 24.18.0 と pnpm 11.14.0 を固定しています。
mise trust
mise install
pnpm install --frozen-lockfile
pnpm run ci
便利なゲート:
pnpm run build
pnpm run typecheck
pnpm run lint
pnpm run lint:test
pnpm run test:coverage
pnpm run test:integration
pnpm run docs:api:check
pnpm run security:supply-chain
pnpm run check:metadata
pnpm run check:package
カバレッジとテスト分析
Jest は引き続き、リポジトリローカルのしきい値を使用するブロッキングカバレッジゲートです。CI 検証ジョブでは、すべての単体テストと統合テストを一度実行し、coverage/lcov.info と
reports/junit/junit.xml を出力して、両方のレポートを Codecov にアップロードします。Codecov のプロジェクトステータスとパッチステータスは、target: auto と 1% の許容範囲を設定した情報提供のみの状態から開始し、プルリクエストの差分カバレッジ、ファイル単位の可視性、失敗したテストの分析を追加します。これにより、ローカルのマージゲートとの重複を避けられます。
Codecov Bundle Analysis は意図的に有効にしていません。このパッケージは tsc でコンパイルされた Node.js のエントリーポイントを提供しており、ダウンロードサイズが製品指標となる Rollup、Vite、Webpack のアプリケーションバンドルは現在生成していません。
アーキテクチャとロードマップ
エージェントランタイム設定
このリポジトリでは、製品固有の MCP 設定、プラグインマニフェスト、スキルを管理しています。
| ファイル | 用途 |
|---|---|
.claude-plugin/plugin.json | Claude Code プラグインマニフェスト |
.mcp.json | プロジェクトローカルの MCP 設定 |
.codex/config.example.toml | Codex CLI の例 |
.vscode/mcp.example.json | VS Code / Copilot の例 |
opencode.example.jsonc | OpenCode の例 |
skills/ | 製品固有のモニタリングワークフロー |
docs/agent-runtime-config.md | ランタイムのセットアップと検証 |
セキュリティとコントリビューション
脆弱性は GitHub Private Vulnerability Reporting を通じて報告してください。SECURITY.md と docs/security.md を参照してください。
コントリビューションのセットアップと基準については、docs/contributing.md に記載されています。使い方に関する質問は GitHub Discussions へ、具体的な対応が必要な作業は issues へお寄せください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。