Skip to main content
Glama

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 への準拠性を実際の証拠に基づいて検証するための装置を提供します。

Related MCP server: MCP Test Server

機能

  1. プローブMCPサーバー (src/server.ts) -- stdioパイプ上のすべてのJSON-RPCメッセージをログに記録する自己計測型MCPサーバー。アルファ状態のツール、リソース、プロンプトに加え、それらをベータ状態に切り替えて対応する */list_changed 通知を送信するトリガーツールを公開します。

  2. 自動クライアントドライバー (src/driver.ts) -- サーバーを完全な変異サイクルを通じて駆動するSDKベースのMCP Client。これがコントロールとなります。両方のエンドポイントが仕様を遵守している場合にプロトコルが機能することを証明します。この動作から逸脱するクライアントは、準拠していないことが証明可能です。

  3. ログアナライザー (src/analyze.ts) -- JSONLログを読み取り、特定の質問に答えるマークダウン形式の証拠テーブルを出力します:クライアントは通知を受け取ったか?再取得したか?新しいアイテムを呼び出せるか?削除されたアイテムをまだ呼び出せるか?

  4. ヒューマンプロトコル (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

プローブの仕組み

初期状態(アルファ)

ドメイン

アルファアイテム

ツール

mcptester_probe_alpha

リソース

probe://alpha

プロンプト

mcptester_alpha_prompt

および5つの永続的なツール:mcptester_mutate_toolsmcptester_mutate_resourcesmcptester_mutate_promptsmcptester_status

変異後(ベータ)

mcptester_mutate_* ツールが呼び出されると:

  1. アルファアイテムが削除されます(SDKの handle.remove() を使用)

  2. ベータアイテムが登録されます

  3. SDKが対応する notifications/*/list_changed を自動送信します

  4. debouncedNotificationMethods が削除と登録を単一の通知にまとめます

ドメイン

ベータアイテム

ツール

mcptester_probe_beta

リソース

probe://beta

プロンプト

mcptester_beta_prompt

ロギング

すべてのJSON-RPCメッセージ(インバウンドおよびアウトバウンド)がJSONLファイルに記録されます。ロガーはSDKトランスポートの前にインストールされたTransformストリームを介して process.stdinprocess.stdout をタップするため、プロトコルを妨害することなくすべてのバイトを監視します。

制限事項

  • stdioトランスポートのみ -- HTTP/SSEテストは未実装

  • 3つの list_changed フローのみ -- サンプリング、引き出し、ルート、進捗、補完に関する将来のテストを計画中

  • シングルサーバーテスト -- 一度に1つのMCPサーバー接続をテストします

ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A mock MCP server for testing MCP client implementations and development workflows. Supports tools, prompts, and resources across multiple transport protocols (stdio, HTTP, SSE).
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive testing server for validating MCP scanner tools and implementations, providing diverse tools, resources, and prompts that exercise various aspects of the Model Context Protocol specification.
    5 npm
    MIT