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と監査ストレージ;
- 結果に影響を与えるツールに対するリトライと冪等性の動作; および
- アプリケーション再起動後のタスク回復。
テストサーバー契約
すべてのサーバーについて、以下のフィクスチャを維持してください。
- 初期化機能の正確性;
- ツールとリソースのスキーマ;
- 無効な入力と不正な入力;
- 最大結果サイズ;
- キャンセルとタイムアウトの動作;
- 書き込み操作の冪等なリトライ; および
- 資格情報と機密フィールドの編集。