mcp-tester
mcp-tester
*/list_changed通知およびその他のプロトコル機能に対するクライアントの準拠性をテストするための計測機能付きMCPサーバー。
目的
PR mcaps-microsoft/msx-mcp#321 では、notifications/tools/list_changed を介した動的なツール表示が提案されました。このPRは、「Copilot CLIはセッション開始時に tools/list をキャッシュし、notifications/tools/list_changed を無視する」という主張によりクローズされましたが、これを証明または反証するための計測実験は一度も行われませんでした。
このリポジトリは、その主張をテストし、あらゆるMCPクライアントの list_changed への準拠性を実際の証拠に基づいて検証するための装置を提供します。
機能
プローブMCPサーバー (
src/server.ts) -- stdioパイプ上のすべてのJSON-RPCメッセージをログに記録する自己計測型MCPサーバー。アルファ状態のツール、リソース、プロンプトに加え、それらをベータ状態に切り替えて対応する*/list_changed通知を送信するトリガーツールを公開します。自動クライアントドライバー (
src/driver.ts) -- サーバーを完全な変異サイクルを通じて駆動するSDKベースのMCPClient。これがコントロールとなります。両方のエンドポイントが仕様を遵守している場合にプロトコルが機能することを証明します。この動作から逸脱するクライアントは、準拠していないことが証明可能です。ログアナライザー (
src/analyze.ts) -- JSONLログを読み取り、特定の質問に答えるマークダウン形式の証拠テーブルを出力します:クライアントは通知を受け取ったか?再取得したか?新しいアイテムを呼び出せるか?削除されたアイテムをまだ呼び出せるか?ヒューマンプロトコル (
PROTOCOL.md) -- Copilot CLIやその他のMCPクライアントに対して同じテストを実行するためのステップバイステップの手順。
クイックスタート
git clone https://github.com/ericchansen/mcp-tester.git
cd mcp-tester
npm install
npm run build自動コントロール(SDKクライアント)の実行
npm run driver -- --domain allこれによりプローブサーバーが起動し、ツール、リソース、プロンプトの完全な変異プロトコルが実行され、結果が報告されます。3つのドメインすべてで完全な準拠性が確認されるはずです。
ログの分析
npm run analyze -- path/to/log.jsonl --domain tools独自のMCPクライアントのテスト
Copilot CLIやその他のMCPクライアントをこのプローブに対してテストするためのステップバイステップの手順については、PROTOCOL.md を参照してください。
リポジトリ構成
mcp-tester/
|-- README.md # This file
|-- PROTOCOL.md # Human-driven test procedure
|-- LICENSE # MIT
|-- package.json
|-- tsconfig.json
|-- src/
| |-- server.ts # Probe MCP server (stdio)
| |-- logger.ts # JSONL stdio tap + log writer
| |-- analyze.ts # CLI: parses log -> markdown evidence table
| +-- driver.ts # CLI: spawns server, drives it via SDK Client
+-- results/
+-- copilot-cli/
+-- .gitkeep # Committed experiment results go hereプローブの仕組み
初期状態(アルファ)
ドメイン | アルファアイテム |
ツール |
|
リソース |
|
プロンプト |
|
および5つの永続的なツール:mcptester_mutate_tools、mcptester_mutate_resources、mcptester_mutate_prompts、mcptester_status。
変異後(ベータ)
mcptester_mutate_* ツールが呼び出されると:
アルファアイテムが削除されます(SDKの
handle.remove()を使用)ベータアイテムが登録されます
SDKが対応する
notifications/*/list_changedを自動送信しますdebouncedNotificationMethodsが削除と登録を単一の通知にまとめます
ドメイン | ベータアイテム |
ツール |
|
リソース |
|
プロンプト |
|
ロギング
すべてのJSON-RPCメッセージ(インバウンドおよびアウトバウンド)がJSONLファイルに記録されます。ロガーはSDKトランスポートの前にインストールされたTransformストリームを介して process.stdin と process.stdout をタップするため、プロトコルを妨害することなくすべてのバイトを監視します。
制限事項
stdioトランスポートのみ -- HTTP/SSEテストは未実装
3つの
list_changedフローのみ -- サンプリング、引き出し、ルート、進捗、補完に関する将来のテストを計画中シングルサーバーテスト -- 一度に1つのMCPサーバー接続をテストします
ライセンス
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ericchansen/mcp-tester'
If you have feedback or need assistance with the MCP directory API, please join our Discord server