mcp-flightcheck
mcp-flightcheck
ユーザーに代わってあなたのMCPサーバーを破壊しようと試みます。通常のクライアント起動を実行した後、クライアントが通常行わないこと、つまりツール名なしの呼び出し、未知のメソッド、必須引数が欠落したツール呼び出しなどを送信し、クラッシュ、ハング、本来実行されるべきでないツールの実行を監視します。各発見項目にはその根拠となる仕様節が引用されたスコアカードが生成され、CI用に非ゼロの終了コードが返されます。
私は公式レジストリ内のすべてのリモートサーバー(6,892台)に対してこれを実行しました。接続を受け入れるサーバーのうち、4分の1がチェックに失敗し、7台に1台は完全に壊れています(クラッシュ、ハング、またはツール名を指定しないtools/callを実行)。公式インスペクタは対話型であり、ビルドを失敗させることはないため、これらの問題は出荷前に検出されることはありません。
$ npx mcp-flightcheck node dist/server.js
mcp-flightcheck | my-server 1.4.0 (node dist/server.js)
Protocol conformance
PASS Declared capabilities actually work - declared capabilities respond: tools
PASS Responds to ping - ping answered
PASS Rejects unknown methods - unknown method rejected with -32601 (method not found)
WARN Rejects malformed request params - malformed params surfaced as -32603, expected -32602
Tool quality
PASS tools/list works - listed 12 tools
FAIL Every tool has a valid input schema - 3 of 12 tools have missing or broken input schemas
delete_item: no inputSchema at all (official SDK clients reject the entire tool list over this)
PASS Tool names are unique and well-formed - all tool names unique and well-formed
Reliability
PASS Responds quickly - median tools/list latency 11ms
FAIL Tools reject invalid arguments cleanly - invalid arguments crashed the server (probed 10 tools)
update_config: server crashed
FAIL Server still healthy after all probes - server is gone after probing, it crashed somewhere above
Hygiene
PASS Server identifies itself - my-server 1.4.0
WARN Every tool has a description - 2 of 12 tools have no description
NOT READY 7 pass, 2 warn, 3 fail, 0 skip (1840ms)インストール
npx mcp-flightcheck <your server> # no install
npm i -D mcp-flightcheck # or as a dev dependencyNode 20以上が必要です。
Related MCP server: mcp-test-server
使用方法
mcp-flightcheck node dist/server.js # stdio server
mcp-flightcheck python -m my_mcp_server # any command, any language
mcp-flightcheck https://example.com/mcp # Streamable HTTP server
mcp-flightcheck --json node dist/server.js # machine-readable report
mcp-flightcheck --strict node dist/server.js # warnings also fail the run
mcp-flightcheck --no-probe node server.js # skip invalid-argument probing
mcp-flightcheck --timeout 30000 slow-server # per-request timeout in ms認証(CIで独自のゲート付きサーバーをテストする)
ほとんどの本番用リモートサーバーはトークンを必要としますが、これはまさにCIでゲートしたいものです。--bearerでトークンを渡すか、--headerで任意のヘッダーを設定します(繰り返し可能)。
mcp-flightcheck --strict --bearer "$MCP_TOKEN" https://your-server/mcp
mcp-flightcheck --header "X-Api-Key: $API_KEY" --header "X-Tenant: acme" https://your-server/mcpトークンはCIシークレットに保持し、上記のように環境変数で渡します。mcp-flightcheckはヘッダー値を出力せず、JSONレポートはURLのみでターゲットを識別します。認証フラグはリモート(http)ターゲットに適用されます。stdioサーバーは、自身のenvとargsを通じて認証情報を受け取ります。
終了コード:0はクリーン、1は発見項目あり、2は接続不能または使用法エラー。CIに直接組み込めます。
- run: npx mcp-flightcheck --strict node dist/server.jsチェック内容
プロトコル準拠
未知のメソッドは、ハング、クラッシュ、または誤った成功ではなく、
-32601で拒否されます。不正な形式のリクエストパラメータは、クリーンなJSON-RPCエラーとして返されます。
pingへの応答が必要です(仕様要件)。サーバーが宣言するすべての機能(ツール、リソース、プロンプト)が実際に応答する必要があります。提供できないものを宣言するとクライアントが壊れます。
ツール品質
tools/listが動作し、ループなしでページネーションを行います。すべてのツールは、JSON Schemaとしてコンパイル可能な
inputSchemaを持ち、ルートはオブジェクトである必要があります。スキーマがないサーバーは公式SDKクライアントによって即座に拒否され、型付きスキーマを提供することは、公開サーバー間で測定された最も強力な品質分離指標です。ツール名は一意で適切に形成されている必要があります。説明が存在する必要があります(モデルがそれに基づいてルーティングするため)。
信頼性
無効な引数のプローブ:必須引数を持つすべてのツールが、引数なしで呼び出されます。適切に構築されたサーバーは、何かを実行する前に呼び出しを拒否します。mcp-flightcheckは、とにかく実行する、タイムアウトまでハングする、またはプロセス全体をダウンさせるツールをフラグ付けします。
tools/listの中央値レイテンシ(エージェントがセッションごとにこれを支払うため)。最終的なヘルスチェックにより、サーバーが自身のエラーパスを生き延びたことを証明します。
障害の分類は、実際に発生する問題(スキーマ不一致、タイムアウト、クラッシュ、プロトコル違反)に対応しています。
発見項目は仕様を引用
すべての発見項目には、それが強制する節が、そのまま引用され、リンク付きで記載されています。
WARN Rejects malformed request params - malformed params surfaced as -32603, expected -32602
MUST: -32602 Invalid params: Invalid method parameter(s). (JSON-RPC 2.0, which MCP messages MUST follow)
https://www.jsonrpc.org/specification#error_object根拠となる節がないルールにはHEURISTICとラベル付けされるため、仕様違反と判断によるものの区別が常に可能です。規範的根拠がまったくない2つのチェック(プローブ後ヘルスチェック、レイテンシ)には、偽の引用ではなく、引用は付されません。
プローブがデフォルトで有効な理由
プローブは無効な入力(必須引数の欠落)のみを送信します。入力検証があるサーバーは、副作用が発生する前にそれを拒否します。とにかく実行するサーバーには、本番環境ではなく今すぐ知りたいバグがあります。ツールが無効な入力でも副作用を起こす場合は、--no-probeを実行して修正してください。
プログラムAPI
import { runChecks } from "mcp-flightcheck";
const report = await runChecks(client, "my-server", {
timeoutMs: 10_000,
probe: true,
probeLimit: 10,
});
console.log(report.summary); // { pass, warn, fail, skip }テスト方法
mcp-flightcheckは適合性テストスイートに対して検証されています。examples/内のダミーMCPサーバーのギャラリーであり、各サーバーは1つのアーキタイプ(クリーン、スキーマ欠落、入力検証なし、呼び出し時にクラッシュ、呼び出し時にハング、機能の偽装、pingなし、ドキュメント化されていないツール、匿名、未知のメソッドでハング)を体現しています。各サーバーはmcp-flightcheckが返すべき正確な判定に固定されており、test/corpus.test.tsはmcp-flightcheckがすべてを再現することをアサートします。これはmcp-flightcheck自身の精度/再現率ゲートです。つまり、欠陥の捕捉を停止したり、クリーンなサーバーにフラグを付け始めたりする回帰が発生すると、ビルドが失敗します。
すべてのアーキタイプに対するライブ実行の全ギャラリーを参照してください。
npm run demoロードマップ
プロトコルリビジョン間のバージョンネゴシエーションチェック
リソースとプロンプトのコンテンツ検証
PRコメント用の
--report mdoutputSchemaを宣言するツールの構造化出力検証公開信頼性データセット:公式レジストリ全体でのmcp-flightcheck実行
ライセンス
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
MEOK MCP Test MCP — golden-file + schema-drift + tool-failure tests for any MCP server. Drop-in
Grade MCP servers A to F with the open behavioral litmus. npm: full toolset; hosted: lookups only.
Scan any MCP server for tool-poisoning, security, auth & license. Trust score before install.
Scores any MCP server before you trust it: free quick check, full paid report, 2-5 way compare.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA test server implementing all features of the MCP protocol, including prompts, tools, resources, and sampling, designed for testing MCP clients rather than practical applications.MIT
- AlicenseNot gradedqualityDmaintenanceA lightweight MCP test server for verifying client connectivity, providing tools, resources, and prompts for integration.10 npmISC
- AlicenseNot gradedqualityDmaintenanceA test harness for MCP servers that validates server JSON, tool schemas, performs golden file diffing and schema drift detection, and generates signed test reports with Shields.io badges.MIT
- AlicenseBqualityBmaintenanceA Python MCP server with 65 deterministic tools across 8 groups, supporting stdio, HTTP, and REST API transports for consistent MCP protocol testing.65549 PyPI1MIT