mcpField
H
Health Monitor

Health Monitor

ローカル
github.comクラウド・インフラ23 週間前に更新

Health Monitor について

Health Monitor は、MCP サーバー、CI パイプライン、HTTP エンドポイントを監視する TypeScript 製 MCP サーバーです。上限付きの検査証跡を SQLite に保存し、稼働履歴、アサーション、アラート、複数プロバイダーのレポートを扱います。

主な機能

  1. 01HTTP、SSE、明示的に許可した stdio で MCP サーバーを監視
  2. 02GitHub Actions と GitLab パイプラインの検査
  3. 03HTTP 応答のアサーションと TLS 期限の確認
  4. 04SQLite への上限付き稼働履歴の保存
  5. 05アラートと Webhook 通知の設定
  6. 06ダッシュボードとレポートの生成

活用シーン

  1. 01MCP サーバーの稼働率とレイテンシの追跡
  2. 02CI の失敗ジョブとパイプライントレースの確認
  3. 03エンドポイント応答と証明書期限の検証
  4. 04複数プロバイダーの稼働レポートとアラートの確認

MCP 対応

MCP サーバーとして、MCP 対象、CI パイプライン、HTTP エンドポイント、Webhook の登録・検査ツールと、履歴、アラート、ダッシュボード、レポートの照会機能を提供します。stdio と Streamable HTTP に対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"health-monitor": {
"command": "npx",
"args": [
"-y",
"health-monitor-mcp"
],
"env": {
"HEALTH_MONITOR_DB": "<HEALTH_MONITOR_DB>",
"HEALTH_MONITOR_AUTO_CHECK": "<HEALTH_MONITOR_AUTO_CHECK>",
"HEALTH_MONITOR_RETENTION_DAYS": "<HEALTH_MONITOR_RETENTION_DAYS>",
"HEALTH_MONITOR_MAX_CONCURRENCY": "<HEALTH_MONITOR_MAX_CONCURRENCY>",
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"GITLAB_TOKEN": "<GITLAB_TOKEN>",
"HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST": "<HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST>",
"HEALTH_MONITOR_HTTP_TARGET_ALLOWLIST": "<HEALTH_MONITOR_HTTP_TARGET_ALLOWLIST>"
}
}
}
}
起動コマンドnpx -y health-monitor-mcp
設定が必要な環境変数
HEALTH_MONITOR_DBCustom path for the SQLite database
HEALTH_MONITOR_AUTO_CHECKSet to '1' to enable background scheduled checks
HEALTH_MONITOR_RETENTION_DAYSNumber of days to retain health check history
HEALTH_MONITOR_MAX_CONCURRENCYMaximum concurrent scheduled and interactive server checks
GITHUB_TOKENシークレットOptional GitHub token with Actions read access for private repositories and higher API rate limits
GITLAB_TOKENシークレットOptional GitLab token with read access to private projects, pipelines, jobs, and traces
HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLISTComma-separated self-hosted GitLab HTTPS origins allowed for monitoring
HEALTH_MONITOR_HTTP_TARGET_ALLOWLISTComma-separated private HTTP(S) origins allowed only in the full runtime profile

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmhealth-monitor-mcp1.4.0

ツール

22

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
namestringはいこの GitHub Actions ターゲットの一意なローカル名
tagsarrayいいえグループ化用のタグ
ownerstringはいGitHub ユーザーまたは組織
branchstringいいえワークフロー実行の任意のブランチフィルター
workflowstringはいワークフローの数値 ID または .yml/.yaml ファイル名
token_envstringいいえGitHub トークンを含む環境変数。トークン値は永続化されません
repositorystringはいGitHub リポジトリ名
check_interval_minutesintegerいいえ

詳細

health-monitor-mcp

MCP サーバー、CI ワークフロー、汎用 HTTP エンドポイントを監視し、ヘルス履歴、TLS の有効期限、アサーション、診断、運用レポートを提供します。

CI codecov Release License: MIT OpenSSF Scorecard Node.js

このツールについて

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_serverMCP ターゲットを登録しますRegister inventory-prod
check_serverMCP のヘルスチェックを 1 回実行しますCheck inventory-prod now
register_github_actionsGitHub ワークフローを登録しますMonitor ci.yml in owner/repo
check_github_actions最新の GitHub 実行と、失敗したジョブ/ステップの診断情報を確認しますCheck repo-ci now
register_gitlab_pipelineGitLab プロジェクトのパイプラインを登録しますMonitor group/project on GitLab
check_gitlab_pipeline最新のパイプラインと、範囲を限定した失敗ジョブのトレースを確認しますCheck gitlab-ci now
register_http_targetGET のみを許可する 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_uptimeMCP の稼働時間とレイテンシの履歴を返します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_serverMCP ターゲットを削除しますStop monitoring local-debugger
unregister_github_actionsGitHub ターゲットとその履歴を削除しますStop monitoring repo-ci
unregister_gitlab_pipelineGitLab ターゲットとその履歴を削除しますStop monitoring gitlab-ci
unregister_http_targetHTTP ターゲットとその履歴を削除しますStop monitoring service-health
unregister_webhookWebhook ターゲットとその履歴を削除しますStop monitoring alert-webhook
set_alertMCP ヘルスチェックのしきい値を設定します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.dbSQLite データベースのパス
HEALTH_MONITOR_AUTO_CHECK01で定期チェックを有効にします
HEALTH_MONITOR_RETENTION_DAYS30ヘルス履歴の保持期間
HEALTH_MONITOR_MAX_CONCURRENCY5定期チェックと対話型チェックの同時実行数
GITHUB_TOKENunsetGitHub Actions の読み取り用オプショントークン
GITLAB_TOKENunsetGitLab プロジェクト/パイプライン/ジョブの読み取り用オプショントークン
HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLISTunset許可するセルフホスト型 GitLab の HTTPS オリジン
HEALTH_MONITOR_HTTP_TARGET_ALLOWLISTunsetフルプロファイルで許可するプライベート HTTP(S) オリジン
HEALTH_MONITOR_ALLOW_STDIO0信頼できるローカル stdio チェックを許可します
HEALTH_MONITOR_STDIO_ALLOWLISTunsetオプションのカンマ区切り実行ファイル許可リスト
HEALTH_MONITOR_HTTP_TOKENunsetPOST /mcp 用の Bearer トークン
HEALTH_MONITOR_HTTP_ORIGIN_ALLOWLISTunset許可するリモートクライアントのオリジン
HEALTH_MONITOR_HTTP_MAX_BODY_BYTES1048576受信 MCP ボディの最大サイズ
HEALTH_MONITOR_HTTP_BODY_TIMEOUT_MS15000受信ボディの読み取りタイムアウト
HEALTH_MONITOR_HTTP_STATEFUL_SESSIONS0ステートフルな Streamable HTTP セッションを有効にします
HEALTH_MONITOR_HTTP_SESSION_TTL_MS1800000ステートフルセッションの TTL
HEALTH_MONITOR_HTTP_MAX_SESSIONS100ステートフルセッションの上限
HEALTH_MONITOR_WEBHOOK_ENCRYPTION_KEYunsetWebhook シークレットの暗号化用 32 文字以上のキー
HEALTH_MONITOR_WEBHOOK_TIMEOUT_MS5000Webhook 配信のタイムアウト(ミリ秒)

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.jsonClaude Code プラグインマニフェスト
.mcp.jsonプロジェクトローカルの MCP 設定
.codex/config.example.tomlCodex CLI の例
.vscode/mcp.example.jsonVS Code / Copilot の例
opencode.example.jsoncOpenCode の例
skills/製品固有のモニタリングワークフロー
docs/agent-runtime-config.mdランタイムのセットアップと検証

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

脆弱性は GitHub Private Vulnerability Reporting を通じて報告してください。SECURITY.md と docs/security.md を参照してください。

コントリビューションのセットアップと基準については、docs/contributing.md に記載されています。使い方に関する質問は GitHub Discussions へ、具体的な対応が必要な作業は issues へお寄せください。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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