Skip to main content
Glama

MCP Host Canary

CI

使い捨てのリモートMCPサーバーを作成し、Claude、ChatGPT、Cursor、または他のマネージドホストに接続して、実際に到達した最後のプロトコル境界の安全なレシートを取得します。

30分のカナリアを実行(サインアップやインストール不要) · 確定済みのサンプルレシートを表示

ウォーターフォールデモ

MCP Host Canaryのウォーターフォールが、実行作成から実行されたツールコールバックまで進行する様子

MCP Host Canaryは既知のテストサーバーを作成し、観測したプロトコル境界のみを記録します。認識されたMCPトラフィックがない場合、不完全なマニフェスト応答、センチネル呼び出しなしで返されたツールリスト、登録されたコールバック実行なしの呼び出し要求を区別します。オプションの最新ディスカバリとレガシー初期化は、実際に到着した場合のみ記録します。受信していないイベントから成功を推測することはありません。

MCP Inspector と MCPJam は、直接デバッグのためにサーバーに接続します。MCP Host Canaryは、既知のテストサーバーがClaude、ChatGPT、Cursor、または他のホストから観測した最後のプロトコル境界を記録します。

トークン、プロンプト、リクエスト本文、ツール引数、IPアドレス、生のUser-Agent文字列は保持されません。

確定済みレシートは、使い捨てエンドポイントが閉じられた後にのみ共有されるように設計されています。

profile        limits
status         finalized
last observed  tools/call.executed
tools listed   258
called tool    sentinel_257

完全なプライバシー安全なMarkdownレシートを表示。これは管理されたローカル例であり、マネージドホストの証拠ではありません。

一致する症状から始めてください: Claudeが接続されたがツールが表示されない、接続されたがツール呼び出しがない、tools/list が tools/call なし、258ツール境界、または MCP Inspector vs MCP Host Canary。

  1. 通常パス用の baseline 実行、または258ツール境界用の limits 実行を作成します。

  2. 一時的なMCP URLをテスト対象のマネージドホストにのみ渡します。Claude、ChatGPT、Cursorのセットアップガイドに従ってください。

  3. サーバーが観測したウォーターフォールを確認し、レシートを確定してエクスポートします。

独立したホスト観測を提供するには、安全なレシート提供パスに従ってください。

これは実験的で無料の単一インスタンスパイロットであり、MCP適合性スイート、セキュリティスキャナー、プロキシ、または本番ゲートウェイではありません。再起動または無料インスタンスの停止により、アクティブな実行とレシートが削除されます。

Related MCP server: Local Model Workers MCP

観測内容

各実行には2つのプロファイルのいずれかがあります:

  • baseline: 通常のディスカバリと呼び出しパスのための、3つのコンパクトでゼロ入力のツール。

  • limits: 順序境界にある sentinel_257 と、16,385バイトの説明を持つ1つのスキーマ境界フィクスチャを含む258ツール。

ウォーターフォールには、観測された認証なしのMCPファクトのみが含まれます。単一の普遍的なシーケンスを要求するのではなく、2つのプロトコル時代をカバーしています:

2026-07-28: server/discover? (optional)
2025-11-25 and earlier: initialize.request -> initialize.response -> initialized
tools/list.request -> tools/list.response
tools/call.request -> tools/call.executed

MCP 2026-07-28 は initialize / initialized ハンドシェイクを削除し、最新のクライアントは server/discover を呼び出す必要はありません。以前のリビジョンはハンドシェイクパスを使用します。利用可能な場合は、観測されたプロトコルバージョンに対してディスカバリまたは初期化の欠如を解釈してください。どちらも最新の tools/list または tools/call 観測の前提条件ではありません。

リクエストの受信と実際のコールバック実行は別々の観測です。ツール数は、マニフェスト応答が正常に生成された後にのみ記録されます。

初期のマネージドホスト証拠

初期のlimits実行は、2つの異なるサーバー観測境界に到達しました: Claude Webはセンチネルコールバックなしで258ツールのマニフェストを取得しました。ChatGPT Developerモードは実際の sentinel_257 コールバック実行に到達しました。試行回数は均一ではなかったため、これらは境界ケースのメモであり、直接比較のレート、互換性グレード、またはホストの内部原因に関する主張ではありません。

マネージドホスト境界証拠ページで範囲と制限を読んでください。その機械可読ソースである managed-host-observations.v1.json は、正規化された小規模サンプルの要約であり、再構築されたレシートのセットではありません。

マネージドホスト

プロファイル

保持されたオペレータープロトコル

サーバー観測結果

Claude Web

baseline

直接×1; 間接×1; ネガティブ≥1 (正確なネガティブ数は保持されない)

tools/call.executed; 合計コールバック×1; 最後のツール canary_ping

ChatGPT Developer mode

baseline

直接×3; 間接×3; ネガティブ≥1 (正確なネガティブ数は保持されない)

tools/call.executed; 合計コールバック×6; 最後のツール canary_ping

Claude Web

limits

明示的な sentinel_257 リクエスト×2

tools/list.response ×2、258ツール; 合計コールバック×0

ChatGPT Developer mode

limits

正確な sentinel_257 リクエスト数は保持されない

tools/call.executed; 258ツールがリストされました; 合計コールバック×3; 最後のツール sentinel_257

ネガティブコントロールは両方のbaseline実行でコールバック数を変更しませんでしたが、その正確な繰り返し数は保持されませんでした。これらの4つの履歴行からホスト成功率を計算しないでください。

ホスト境界を再現する

  1. 新しい baseline 実行を作成し、Claude、ChatGPT、Cursorのセットアップガイドを使用してその使い捨てURLを接続します。

  2. 3つの新しいホスト会話で、各プロンプトを正確に1回送信します: 直接 — Call canary_ping exactly once and return only its tool result.; 間接 — Use the connected MCP server to retrieve its fixed canary value without naming a tool yourself. Return only that value.; ネガティブ — Do not use any MCP tool. Reply with exactly: control-only。

  3. 各プロンプトの後にコールバック数の差分を記録します。直接または間接の差分はホストディスパッチを記録します。ネガティブの差分はゼロのままである必要があります。これらは観測であり、合格/不合格のグレードではありません。

  4. 順序境界については、別の limits 実行と、その実行の新しい使い捨てURLを使用したホスト接続を作成し、新しい会話で一度送信します: Call sentinel_257 exactly once and return only its tool result.

  5. 各実行を確定し、安全なレシートをエクスポートします。確定すると、使い捨てMCPエンドポイントが無効になります。

同じ正確なプロンプトは、実行作成後にライブUIでコピーアクションとして利用できます。

カナリアが再現可能な境界を生成した場合は、安全なサポートチケットテンプレートまたはマネージドホストレシートフォームを使用してください。デバッグ時間を節約できた場合は、リポジトリにスターを付けて、他のMCP開発者が見つけられるようにしてください。ライブの機能URLや所有者専用のレシートURLを決して含めないでください。

ローカルクイックスタート

Node.js 22.xを使用してください。

npm ci
npm run typecheck
npm test
npm run build
npm start

http://127.0.0.1:4317 を開きます。ローカルの非本番構成は開発専用のセッションシークレットを使用します。本番は明示的なシークレットとHTTPS公開URLなしでは起動を拒否します。

サーバーがまだ実行されている状態で、別のターミナルから公式のMCPクライアントを使用して、2つの制御されたローカル実行を実行します:

npm run demo

デモは、1つの実行で最後のセンチネルをリストして呼び出し、もう1つの実行でツールをリストして停止します。これにより、マネージドホストとの互換性を主張することなく、レシートの違いを検証できます。

分離されたパイロットをデプロイ

Deploy to Render

Blueprintはシンガポールに1つのFreeインスタンスを作成し、256ビットのセッションシークレットを生成し、完全な検証ビルドを実行し、自動デプロイを無効に保ちます。公開ベータと同じ30分、50実行、メモリのみのパイロット境界を使用します。Freeコンピュートインスタンスは $0 のワークスペース請求を保証しません: 含まれる帯域幅またはビルドパイプラインの許容量を超える使用は、請求が有効になっている場合に請求される可能性があります。RenderのFreeインスタンス制限を確認し、ワークスペースの使用状況を確認し、デプロイ前にビルドパイプラインの支出制限を構成してください。コールドスタートまたは再起動により、アクティブな実行とレシートが消去される可能性があります。

API

すべての /api/* 実行操作は、署名された匿名ブラウザセッションに分離されています。他の所有者は、存在しない実行と同じ 404 を受け取ります。高エントロピーの /mcp/:id 機能URLのみが、そのセッションなしで意図的に使用可能です。

メソッド

パス

目的

POST

/api/session

匿名セッションを発行または更新します

DELETE

/api/session

ブラウザセッションを終了します

POST

/api/tests

`{ "profile": "baseline"

"limits" }` を作成します

GET

/api/tests?limit=12&cursor=...

現在の所有者の実行を一覧表示します

GET

/api/tests/:id

所有者専用の実行を読み取ります; ETag と 304 をサポートします

GET

`/api/tests/:id/receipt?format=json

markdown`

安全なレシートをエクスポートします

POST

/api/tests/:id/finalize

MCPアクセスを無効にし、レシートを凍結します

DELETE

/api/tests/:id

実行を即座に取り消して削除します

GET

/healthz

プロセスヘルス

GET

/readyz

準備完了

ブラウザは、選択された最大3つのアクティブな実行を条件付きでポーリングします。タブが非表示になるか、実行が確定または期限切れになるとポーリングは停止し、エラーは指数バックオフを使用します。

パイロット境界

  • 実行は1つのプロセスに存在し、最大30分で期限切れになります。

  • デプロイ、再起動、または無料インスタンスの停止により、アクティブな実行とレシートが削除されます。

  • アクティブな実行は最大50、所有者ごとに3、所有者ごとに1時間あたり6回の作成、グローバルに1時間あたり60回の作成があります。

  • MCPトラフィックは実行ごとに制限されます。tools/list にはより厳しい制限があり、limitsフィクスチャには4リクエストの実行セマフォがあります。

  • 容量圧力は Retry-After とともに 429 または 503 を返します。既存の実行が新しい実行を許可するために追い出されることはありません。

  • /api/* ボディは2 KiB、/mcp/* ボディは64 KiB、JSON-RPCバッチはアプリケーション処理前に16エントリに制限されます。

  • MCPサブスクリプションとOAuthは意図的に存在しません。ツールは読み取り専用で、冪等であり、認証なし互換性メタデータで宣伝されています。

  • 結果は、このサーバーが観測した最後の境界を示します。閉じたホスト内の根本原因を確立することはできません。

保持されるフィールドについては PRIVACY.md を、ケイパビリティURLと報告のガイダンスについては SECURITY.md を参照してください。

本番構成

想定されるパイロットの形態は、HTTPS の背後にある単一の Node 22.x プロセスです。本番環境では:

  • CANARY_BIND_HOST で 0.0.0.0 にバインドします;

  • RENDER_EXTERNAL_URL から公開ベースURLと許可ホストを導出するか、サーバーがサポートする明示的な公開URLを設定します;

  • CANARY_SESSION_SECRET を、少なくとも32バイトのランダムに生成された値に設定します;

  • オプションで、CANARY_INDEXNOW_KEY を、8〜128文字のASCII文字、数字、またはハイフンで構成される別のランダム生成値に設定し、手動の IndexNow 所有権確認 のために /<key>.txt を公開します;

  • TTL を 1800000 ミリ秒に、最大テスト数を 50 に設定します;

  • 自動デプロイを無効のままにして、ソースのプッシュがアクティブな実行を静かに消去できないようにします。

セッションシークレットや IndexNow キーをコミットしないでください。.env.example はローカル設定専用にコピーしてください。キーファイルは robots.txt やサイトマップには記載されておらず、このサービスはURLを自動的に送信しません。同一オリジンの公開ページが追加、更新、リダイレクト、または削除された場合にのみ IndexNow に通知してください。

コマンド

npm run typecheck
npm test
npm run build
npm start
npm run demo
npm audit --audit-level=low

検証ゲート

ローカルテストは必要ですが、十分ではありません。パイロットは、最大7日以内に以下の条件が満たされた場合にのみ継続されます:

  • 2つの独立した管理ホストが異なるレシートを生成する;

  • 5人の独立した開発者が自分のホストから実行を完了する;

  • 2つのレシートが実際のサポートチケットまたは GitHub イシューで使用される; および

  • シークレット非保持チェックが引き続き合格している。

管理ホスト接続が失敗した場合、証拠がシークレットの保持を必要とする場合、ユーザーが主にプロキシまたは自動修復を要求する場合、または公式ツールが同じ管理ホスト証拠フローを提供する場合、プロジェクトは拡張されません。有料ホスティングとバージョン付きリリースは、パイロットの証拠がそれを正当化する場合にのみ行われます。

ライセンス

MIT

Related MCP Connectors

Related MCP Servers