Test et vérification MCP
Les intégrations MCP traversent les limites de processus, de transport, de schéma et d'autorisation. Les tests unitaires seuls sont insuffisants ; maintenez au moins un test client/serveur déterministe qui complète un véritable échange et un appel d'outil.
Portes de framework ciblées
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
La porte d'échantillonnage est une couverture de compatibilité pour une capacité dépréciée en amont, non une recommandation pour une nouvelle architecture.
Consommateurs d'intégration de compilation
cargo check -p adk-acp --all-features
cargo check -p adk-computer-use
Ces portes détectent les types publics rmcp incompatibles à travers les crates qui intègrent ou transportent des configurations MCP.
Exemples autonomes
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 est la porte d'accès en direct déterministe. Elle démarre un véritable serveur Rust stdio en exécutant son propre binaire en mode fixture. Le test ne télécharge pas de package et ne contacte pas de point de terminaison distant.
Ce que l'exemple en direct prouve
- démarrage du processus enfant ;
- initialisation MCP et négociation de capacités ;
- découverte d'outils ;
- une véritable requête et un résultat d'outil ;
- ajout, activation, mise à jour, désactivation et suppression à l'exécution ;
- sérialisation du registre et persistance des fichiers ; et
- arrêt de session.
Ce qui nécessite des tests spécifiques au déploiement
- politique d'identité et de jeton HTTP à distance ;
- découverte OAuth MCP complète et autorisation utilisateur ;
- état de santé de l'API externe et de la base de données ;
- application de la sandbox de processus ;
- isolation des locataires ;
- UI d'approbation et stockage d'audit ;
- comportement de réessai et d'idempotence pour les outils conséquents ; et
- récupération de tâche après un redémarrage d'application.
Contrats de serveur de test
Pour chaque serveur, conservez des fixtures pour :
- précision de la capacité d'initialisation ;
- schémas des outils et des ressources ;
- entrées invalides et non autorisées ;
- tailles maximales des résultats ;
- comportement d'annulation et de délai d'expiration ;
- réessai idempotent des opérations d'écriture ; et
- masquage des identifiants et des champs sensibles.