MCP テストと検証

MCP の統合は、プロセス、トランスポート、スキーマ、および認証の境界を越えます。単体テストだけでは不十分です。実際のハンドシェイクとツール呼び出しを完了する、少なくとも1つの決定論的なクライアント/サーバーテストを維持してください。

集中型フレームワークゲート

cargo test -p adk-tool --features mcp --lib mcp
cargo test -p adk-tool --features mcp --test mcp_roundtrip_property_tests
cargo test -p adk-tool --features mcp,mcp-sampling --test mcp_sampling_property_tests
cargo clippy -p adk-tool --features mcp,http-transport,mcp-sampling -- -D warnings

サンプリングゲートは、アップストリームで非推奨となった機能の互換性カバレッジであり、新しいアーキテクチャを推奨するものではありません。

コンパイル統合コンシューマー

cargo check -p adk-acp --all-features
cargo check -p adk-computer-use

これらのゲートは、MCP 設定を埋め込んだり、伝達したりするクレート間で、不一致のパブリック rmcp 型を検出します。

スタンドアロンの例

cargo check --manifest-path examples/mcp_elicitation/Cargo.toml
cargo check --manifest-path examples/mcp_sampling/Cargo.toml
cargo check --manifest-path examples/mcp_manager/Cargo.toml
cargo run --manifest-path examples/mcp_manager/Cargo.toml

examples/mcp_manager は決定論的なライブゲートです。これは、フィクスチャモードで自身のバイナリを実行することにより、実際のRust stdioサーバーを起動します。このテストは、パッケージをダウンロードしたり、リモートエンドポイントに接続したりしません。

ライブの例が証明すること

  • 子プロセス起動;
  • MCP の初期化と機能ネゴシエーション;
  • ツール発見;
  • 実際のツールリクエストと結果;
  • ランタイムでの追加、有効化、更新、無効化、および削除;
  • レジストリのシリアル化とファイル永続化; および
  • セッションシャットダウン。

デプロイメント固有のテストが必要なもの

  • リモート HTTP のIDとトークンポリシー;
  • 完全な MCP OAuth の発見とユーザー認証;
  • 外部 API とデータベースの健全性;
  • プロセスサンドボックスの強制;
  • テナント分離;
  • 承認UIと監査ストレージ;
  • 結果に影響を与えるツールに対するリトライと冪等性の動作; および
  • アプリケーション再起動後のタスク回復。

テストサーバー契約

すべてのサーバーについて、以下のフィクスチャを維持してください。

  • 初期化機能の正確性;
  • ツールとリソースのスキーマ;
  • 無効な入力と不正な入力;
  • 最大結果サイズ;
  • キャンセルとタイムアウトの動作;
  • 書き込み操作の冪等なリトライ; および
  • 資格情報と機密フィールドの編集。
MCP テストと検証 - ADK-Rust ドキュメント | ADK-Rust