MCP Test Servers について
MCP Test Servers は、意図的に多様な挙動を持つ MCP テスト サーバーのコレクションで、npx で起動できます。MCP クライアントやサーバーの開発者を対象に、プロトコルの挙動、スキーマの問題、認証フローの再現に使用されます。
主な機能
- 01ツールのパラメーター型、リソース、プロンプトのテストサーバー
- 02OAuth ディスカバリーやセッション問題を再現するサーバー
- 03テスト計画付きの総合テストサーバー everything
- 04MCP Apps と elicitation の例
活用シーン
- 01ツールスキーマに対するクライアントの互換性確認
- 02Cursor 関連の OAuth や整数検証の不具合の再現
- 03テスト計画に沿った MCP 機能の段階的な検証
MCP 対応
本プロジェクト自体が MCP サーバー群であり、各サーバーはテスト用のツール、リソース、プロンプト、または障害シナリオを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP テストサーバー
Model Context Protocol(MCP)を実装したテストサーバーのコレクションです。
🚀 クイックインストールギャラリー
Cursor から直接使えるワンクリックインストールボタンは、**GitHub Pages ギャラリー**をご覧ください。
手動インストール
npx -y @msfeldstein/mcp-test-servers <server>
開発
開発には cli.js を直接使用してください。
{
"mcpServers": {
"test-server": {
"command": "/Users/feldstein/Source/mcp-test-servers/src/cli.js",
"args": [
"ping"
],
"env": {}
}
}
}
利用可能なサーバー
all-types: MCP でサポートされるさまざまなツールパラメーター型を実演しますbad-param: 意図的に不正なパラメーター名を設定したサーバーですbig-response: 大きなレスポンスを返すサーバーですbroken-tool: 意図的に壊れたツールを含むサーバーですbroken-schema: トップレベルで oneOf/allOf/anyOf を使用する、無効な JSON スキーマを持つサーバーですbroken-schema-fastmcp: トップレベルで oneOf/allOf/anyOf を使用する、本当に壊れたスキーマを持つ FastMCP サーバーですcrash-on-startup: 起動時にクラッシュするサーバーですcombined: ツールとリソースを含むサーバーですduplicate-names: リソース名が重複しているサーバーですelicitation: MCP のエリシテーション機能を実演するサーバーです。構造化フォームを通じてユーザー情報(名前、年齢、連絡先、設定)を要求しますenum-param: 列挙型文字列パラメーターを持つツールですinteger-anyof-bug: anyOf スキーマにおける Cursor の整数検証バグを再現します。{"anyOf": [{"type": "integer"}, {"type": "null"}]}を持つパラメーターは、'got number' エラーで検証に失敗しますenv-check: SHOULD_RUN 環境変数が正しく渡されているか確認しますenv-echo: 環境変数をそのまま返しますgpt5-breaker: 複雑なパラメーター検証を使用する SQL クエリ実行ツールを備えたサーバーですgraphing:show-graphing-uiを備えた MCP Apps サーバーです。UI は Chart.js を使ってインラインチャートを描画しますheaders: HTTP ヘッダー情報を安全に返す FastMCP サーバーですinstructions: instructions と、値が 42 の場合に成功を返す makeRequest ツールを備えたサーバーですimage: ソニック・ザ・ヘッジホッグの画像を返すツールですlong-description: 環境変数で設定した非常に長い説明を公開しますlong-running: 20 秒のタスク中、2 秒ごとに進捗通知を送信するサーバーですmany-resources: 複数のリソースを持つサーバーですmany-tools: それぞれ 'ack' を返す 100 個のツールを備えたサーバーですmath: 基本的な数学関数のツール(add、subtract、multiply、divide、power、sqrt、factorial)を備えたサーバーですmissing-type: パラメータースキーマに必須の 'type' フィールドがないツールを持つサーバーですmissing-type-fastmcp: ツールスキーマに 'type' フィールドが実際に欠けている FastMCP サーバーですnamed: MCP_SERVER_NAME 環境変数で名前を設定できるサーバーですnotion-gemini-repro: 一部のモデルで問題が発生する、複雑なネストされたスキーマを持つサーバー(Notion API の再現ケース)- インラインスキーマnotion-gemini-repro-raw: 一部のモデルで問題が発生する、複雑なネストされたスキーマを持つサーバー(Notion API の再現ケース)- 正確な生スキーマオブジェクトnumber-param: 数値パラメーターを持つツールですoauth-repro: 適切なディスカバリーエンドポイントを使用して OAuth 2.0 フローの問題を再現します。リソースサーバーはポート 3001、認証サーバーはポート 3002 で実行されますoauth-debug: 包括的なログ記録とエンドポイント追跡機能を備えた OAuth デバッグサーバーです。リソースサーバーはポート 3003、認証サーバーはポート 3004 で実行されますoauth-callback-test: Cursor 1.4.x のエンドポイントディスカバリーバグをシミュレートする OAuth コールバックテストサーバーです。ポート 3005 で実行されますoauth-edge-case: ディスカバリーバグを引き起こすエッジケースを設定できる OAuth サーバーです。リソースサーバーはポート 3006、認証サーバーはポート 3007 で実行されますoauth-bug-trigger: Cursor 1.4.x の OAuth ディスカバリーバグを正確に再現するために設計された専用サーバーです。リソースサーバーはポート 3008、認証サーバーはポート 3009 で実行されますoptional-param: オプションのパラメーターを持つツールですpattern-param: パターンマッチを行うパラメーターを持つツールですping: 'pong' と応答するシンプルなサーバーですprompts: 2 つのプロンプトを持つサーバーです。静的な挨拶と、キャラクター名および場所のパラメーターを使う動的なストーリー生成機能がありますraw-broken: 実際に壊れたスキーマを持つ、生の JSON-RPC MCP サーバーです(フレームワークによる検証なし)resource: リソースサーバーの実装ですresource-lister: 5 つのリソースを公開し、それらを一覧表示するツールを持つサーバーですroots-echo: クライアントから提供された roots をそのまま返し、MCP の roots 機能を実演するサーバーですsession-inactivity: セッション管理をテストするため、30 秒間操作がないとセッションが期限切れになる Streamable HTTP サーバーですsession-management: MCP のセッション管理動作を実装する HTTP サーバーです。セッション ID を割り当て、リクエストでの提示を必須とし、終了済みセッションには 404 を返しますsse-timeout: SSE 接続を確立しますが、クライアントの再接続をテストするため、30 秒後にタイムアウトする Streamable HTTP サーバーですstderr: stderr にログを出力するサーバーですstructured-output: シンプルなエコーツールを使って structuredContent レスポンスを実演しますui:show-uiを備えた MCP Apps サーバーです。描画された UI のボタンはget-timeツールを呼び出し、現在時刻をインラインで表示しますdual-content: 同じレスポンス内で structuredContent と content に異なる出力を返す例を実演しますeverything: MCP のすべての機能をテストする包括的なサーバーです。パラメーターあり/なしのツール、リソース、プロンプト、エリシテーション、動的ツール、roots のエコー、環境変数を備えています
🚀 クイックスタート:自動テスト
すぐに包括的なテストを実施するには、組み込みの AI エージェントテストプロンプトを使用します。
- everything サーバーを起動します:
npx @msfeldstein/mcp-test-servers everything - Cursor でスラッシュコマンドを使用します:
/test-everything - AI が 20 個すべてのテスト手順を自動で実行し、完全な検証レポートを提示します
Everything サーバーのテスト計画
everything サーバーは、すべての MCP 機能を包括的にテストできるように設計されています。各機能のテスト方法は次のとおりです。
ツールのテスト
0. セットアップ
{
"mcpServers": {
"everything": {
"command": "npx @msfeldstein/mcp-test-servers everything",
"env": {
"MY_ENV_VAR": "My Special Token"
}
}
}
}
1. パラメーターを受け取るツール
ツール: echo_with_params
テスト: さまざまなパラメーターの組み合わせで呼び出します。
- message: "Hello World", repeat_count: 3, uppercase: true
- message: "Test", repeat_count: 1, uppercase: false
- message: "MCP" (using defaults)
期待される結果: 指定した回数の繰り返しと大文字・小文字の変換を行ったメッセージがエコーされます。
2. パラメーターを受け取らないツール
ツール: simple_ping
テスト: パラメーターを指定せずに呼び出します
期待される結果: "pong" が返されます
3. 複合コンテンツを返すツール
ツール: get_mixed_resources
テスト: ツールを呼び出します
期待される結果: 同じ応答内でテキストコンテンツと小さなテスト画像の両方が返されます
4. エリシテーションのテスト
ツール: test_all_elicitations
テスト: ツールを呼び出し、すべてのプロンプトに応答します。
- 文字列入力(名前)
- ブール値入力(プログラミングの好み)
- 数値入力(経験年数、0~50)
- 列挙型入力(プログラミング言語の選択) 期待される結果: すべての入力が収集され、概要が表示されます
5. 動的なツール管理
ツール: toggle_dynamic_tool
テスト:
toggle_dynamic_toolを呼び出して、動的ツールを有効にしますdynamic_featureツールが使用可能になったことを確認します- オプションのアクションパラメーターを指定して
dynamic_featureを呼び出します toggle_dynamic_toolを再度呼び出して、無効にしますdynamic_featureツールが使用できなくなったことを確認します 期待される結果: ツールの利用可否が動的に変化します
6. MCP Roots エコー
ツール: echo_mcp_roots
テスト: ツールを呼び出します
期待される結果: クライアントから提供された MCP roots の JSON 表現が返されます
7. 環境変数のエコー
ツール: echo_env_var
テスト: プロンプト:「echo_env_var MCP ツールを呼び出してください」
期待される結果: "MY_ENV_VAR = My Special Token" が返されます
8. 長時間実行される進捗表示ツール
ツール: long_running_progress
テスト: オプションの task_name パラメーターを指定して呼び出します
期待される結果: 2 秒ごとに進捗を更新しながら 20 秒間実行され、次の内容が表示されます。
- 0 から 10 までの進捗(合計ステップ数)
- 各ステップの説明メッセージ
- 最終的な完了メッセージ
- クライアントが進捗通知を受信します
リソースのテスト
9. テキストリソース
リソース: everything://docs.txt
テスト: リソースをリクエストします
期待される結果: サーバーに関する包括的なドキュメントが返されます
10. 画像リソース
リソース: everything://test-image.png
テスト: リソースをリクエストします
期待される結果: PNG 形式の小さなテスト画像が返されます
プロンプトのテスト
11. パラメーターを受け取らないプロンプト
プロンプト: simple-greeting
テスト: /sim と入力すると /simple-greeting が候補に表示されます。送信します。
期待される結果: Everything Server に関する親しみやすい挨拶メッセージが返されます
12. パラメーターを受け取るプロンプト
プロンプト: personalized-message
テスト: /personalized-message を送信します。
- name:「Alice」
- topic:「AI Development」 期待される結果: Alice と AI Development に言及する、パーソナライズされたメッセージが返されます
13. AI エージェントテストプロンプト
プロンプト: test-everything
テスト: Cursor でこのプロンプトをスラッシュコマンドとして使用します:/test-everything
期待される結果: AI エージェントがすべての MCP 機能を体系的にテストするための、包括的なステップごとのテスト手順が返されます
使用方法: 自動テストに最適です。AI が 20 個すべてのテスト手順を自動で実行し、完全な検証レポートを提示します
テストの完全な手順
- セットアップ: 環境に
MY_ENV_VAR="My Special Token"を設定します - 基本ツール:
simple_pingと `echo_with_params`` をテストします - 混合コンテンツ:
get_mixed_resourcesをテストします - エリシテーション:
test_all_elicitationsを最後まで実行します - 動的ツール: 動的ツールのオン/オフを切り替えて、利用可能かどうかをテストします
- システム情報:
echo_mcp_rootsとecho_env_varをテストします - 長時間実行: 進行状況の通知を使用して
long_running_progressをテストします - リソース: テキストと画像の両方のリソースを取得します
- プロンプト: パラメーターありとパラメーターなしの両方のプロンプトをテストします
この包括的なテストにより、すべての MCP プロトコル機能が正しく動作していることを確認できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。