Deep Dive MCP¶
Cette page explique comment exposer un service Arclith via MCP.
Position¶
Le MCP est un adapter inbound. Il expose des tools à un client MCP, puis ces tools appellent les mêmes use cases que l'API.
Le tool n'est pas un deuxième coeur métier. Il est une façade de protocole.
Création Du Serveur¶
| Python | |
|---|---|
La configuration config/adapters/inbound/fastmcp.yaml définit le host et le
port du transport HTTP streamable.
Tool Propre¶
Un tool propre reçoit des arguments explicites, construit une commande métier, appelle le use case, puis retourne un dictionnaire ou un type sérialisable.
| Python | |
|---|---|
Éviter les tools qui font plusieurs intentions à la fois. Un tool doit avoir une responsabilité claire.
Auth¶
| Python | |
|---|---|
L'auth MCP utilise les headers HTTP disponibles avec le transport HTTP/SSE. En
transport stdio, sécuriser le processus qui lance le serveur plutôt que de
compter sur des headers absents.
Multitenant¶
Le pipeline tenant MCP suit le même principe que l'API: JWT, licence éventuelle, claim tenant, résolution des coordonnées, puis contexte de requête.
Utiliser la même convention de claim que l'API pour éviter deux modèles de sécurité différents.
Instrumentation¶
Appeler l'instrumentation après l'enregistrement des tools:
| Python | |
|---|---|
L'instrumentation enveloppe les fonctions FastMCP et alimente les métriques exposées par le serveur de probes.
Lancement¶
Le transport HTTP streamable écoute par défaut sur
http://127.0.0.1:8001/mcp/.
Erreurs Fréquentes¶
| Erreur | Correction |
|---|---|
| tool qui accède au repository | appeler un use case |
| retour non sérialisable | convertir en dict, liste ou type simple |
auth testée en stdio comme en HTTP |
distinguer le modèle de transport |
| instrumentation appelée trop tôt | appeler instrument_mcp après les tools |
| client sur mauvais chemin | utiliser /mcp/ avec le slash final |
Pages Liées¶
Validation Protocolaire¶
Attendre que le terminal serveur affiche l'URL FastMCP, puis tester le protocole avec un client:
| Bash | |
|---|---|
Si la connexion échoue, vérifier d'abord qu'aucun autre service n'écoute sur 8001.
Vérifier aussi les probes:
| Bash | |
|---|---|
active_transports doit contenir mcp_http.
Média¶
Média à produire
Capture : client MCP listant les tools. Vidéo : ajout d'un tool qui appelle un use case.