Avant de commencer à tester votre serveur MCP, il est important de comprendre les outils disponibles et les bonnes pratiques pour le débogage. Un test efficace garantit que votre serveur fonctionne comme prévu et vous aide à identifier et résoudre rapidement les problèmes. La section suivante présente les approches recommandées pour valider votre implémentation MCP.
Cette leçon explique comment choisir la bonne méthode de test et l’outil de test le plus efficace.
À la fin de cette leçon, vous serez capable de :
- Décrire différentes approches pour les tests.
- Utiliser divers outils pour tester efficacement votre code.
MCP propose des outils pour vous aider à tester et déboguer vos serveurs :
- MCP Inspector : Un outil en ligne de commande qui peut être utilisé à la fois en mode CLI et en mode visuel.
- Tests manuels : Vous pouvez utiliser un outil comme curl pour effectuer des requêtes web, mais tout outil capable d’exécuter des requêtes HTTP conviendra.
- Tests unitaires : Il est possible d’utiliser votre framework de test préféré pour tester les fonctionnalités du serveur et du client.
Nous avons déjà décrit l’utilisation de cet outil dans les leçons précédentes, mais revenons-y brièvement. C’est un outil développé en Node.js que vous pouvez lancer via l’exécutable npx, qui téléchargera et installera temporairement l’outil, puis le nettoiera une fois votre requête exécutée.
Le MCP Inspector vous aide à :
- Découvrir les capacités du serveur : détecte automatiquement les ressources, outils et invites disponibles
- Tester l’exécution des outils : essayez différents paramètres et voyez les réponses en temps réel
- Consulter les métadonnées du serveur : examinez les informations, schémas et configurations du serveur
Une utilisation typique de l’outil ressemble à ceci :
npx @modelcontextprotocol/inspector node build/index.jsLa commande ci-dessus lance un MCP et son interface visuelle, ouvrant une interface web locale dans votre navigateur. Vous verrez un tableau de bord affichant vos serveurs MCP enregistrés, leurs outils, ressources et invites disponibles. L’interface vous permet de tester l’exécution des outils de manière interactive, d’inspecter les métadonnées du serveur et de voir les réponses en temps réel, facilitant ainsi la validation et le débogage de vos implémentations MCP.
Voici à quoi cela peut ressembler : 
Vous pouvez aussi exécuter cet outil en mode CLI en ajoutant l’attribut --cli. Voici un exemple d’utilisation en mode "CLI" qui liste tous les outils du serveur :
npx @modelcontextprotocol/inspector --cli node build/index.js --method tools/listEn plus d’utiliser l’outil inspector pour tester les capacités du serveur, une autre approche similaire consiste à utiliser un client capable d’exécuter des requêtes HTTP, comme curl par exemple.
Avec curl, vous pouvez tester directement les serveurs MCP via des requêtes HTTP :
# Example: Test server metadata
curl http://localhost:3000/v1/metadata
# Example: Execute a tool
curl -X POST http://localhost:3000/v1/tools/execute \
-H "Content-Type: application/json" \
-d '{"name": "calculator", "parameters": {"expression": "2+2"}}'Comme vous le voyez dans cet exemple d’utilisation de curl, vous effectuez une requête POST pour invoquer un outil avec une charge utile contenant le nom de l’outil et ses paramètres. Choisissez l’approche qui vous convient le mieux. Les outils CLI sont généralement plus rapides à utiliser et peuvent être facilement automatisés, ce qui est utile dans un environnement CI/CD.
Créez des tests unitaires pour vos outils et ressources afin de garantir qu’ils fonctionnent comme prévu. Voici un exemple de code de test.
import pytest
from mcp.server.fastmcp import FastMCP
from mcp.shared.memory import (
create_connected_server_and_client_session as create_session,
)
# Mark the whole module for async tests
pytestmark = pytest.mark.anyio
async def test_list_tools_cursor_parameter():
"""Test that the cursor parameter is accepted for list_tools.
Note: FastMCP doesn't currently implement pagination, so this test
only verifies that the cursor parameter is accepted by the client.
"""
server = FastMCP("test")
# Create a couple of test tools
@server.tool(name="test_tool_1")
async def test_tool_1() -> str:
"""First test tool"""
return "Result 1"
@server.tool(name="test_tool_2")
async def test_tool_2() -> str:
"""Second test tool"""
return "Result 2"
async with create_session(server._mcp_server) as client_session:
# Test without cursor parameter (omitted)
result1 = await client_session.list_tools()
assert len(result1.tools) == 2
# Test with cursor=None
result2 = await client_session.list_tools(cursor=None)
assert len(result2.tools) == 2
# Test with cursor as string
result3 = await client_session.list_tools(cursor="some_cursor_value")
assert len(result3.tools) == 2
# Test with empty string cursor
result4 = await client_session.list_tools(cursor="")
assert len(result4.tools) == 2
Le code précédent fait ce qui suit :
- Utilise le framework pytest qui permet de créer des tests sous forme de fonctions et d’utiliser des assertions.
- Crée un serveur MCP avec deux outils différents.
- Utilise l’instruction
assertpour vérifier que certaines conditions sont remplies.
Consultez le fichier complet ici
À partir de ce fichier, vous pouvez tester votre propre serveur pour vous assurer que les capacités sont bien créées.
Tous les SDK majeurs disposent de sections de tests similaires, vous pouvez donc vous adapter à votre environnement d’exécution préféré.
- Suivant : Déploiement
Avertissement :
Ce document a été traduit à l'aide du service de traduction automatique Co-op Translator. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant foi. Pour les informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou de mauvaises interprétations résultant de l'utilisation de cette traduction.