Le client MCP sert de pont de communication entre votre serveur et les serveurs MCP. Considérez-le comme votre point d'accès à tous les outils qu'un serveur MCP fournit. Lorsque vous avez besoin d'utiliser des outils ou des services externes, le client gère pour vous tout le passage de messages et les détails du protocole.
Communication agnostique au transport
Une des forces clés de MCP est d'être agnostique au transport - une façon élégante de dire que le client et le serveur peuvent communiquer entre eux en utilisant différentes méthodes de communication. La configuration la plus courante exécute à la fois le client MCP et le serveur sur la même machine, où ils communiquent via l'entrée/sortie standard.

Mais vous n'êtes pas limité à cette approche. Les clients et serveurs MCP peuvent également se connecter via :
- HTTP
- WebSockets
- Divers autres protocoles réseau

Types de messages
Une fois connectés, le client et le serveur échangent des types de messages spécifiques définis dans la spécification MCP. Les principaux types de messages avec lesquels vous travaillerez sont :

ListToolsRequest/ListToolsResult : Le client demande au serveur « quels outils fournissez-vous ? » et reçoit en retour une liste des outils disponibles.

CallToolRequest/CallToolResult : Le client demande au serveur d'exécuter un outil spécifique avec certains arguments, puis reçoit les résultats.

Exemple de flux complet
Voici comment toutes les pièces fonctionnent ensemble dans un scénario réel. Disons qu'un utilisateur demande « Quels dépôts ai-je ? » - voici le flux de communication complet :

Le processus commence lorsqu'un utilisateur soumet une requête à votre serveur. Votre serveur se rend compte qu'il doit fournir à Claude une liste des outils disponibles avant de faire la demande.

Votre serveur demande les outils au client MCP, qui envoie une ListToolsRequest au serveur MCP et reçoit en retour un ListToolsResult.

Maintenant votre serveur a tout ce qu'il faut pour faire la demande initiale à Claude - à la fois la question de l'utilisateur et les outils disponibles.

Claude examine les outils et décide qu'il doit en appeler un pour répondre à la question. Il répond avec une demande d'utilisation d'outils.

Votre serveur demande au client MCP d'exécuter l'outil demandé par Claude. Le client MCP envoie une CallToolRequest au serveur MCP, qui fait alors la demande réelle à GitHub.

GitHub renvoie les données du dépôt, qui remontent à travers le serveur MCP sous forme de CallToolResult, puis vers le client MCP, et enfin vers votre serveur.

Votre serveur envoie les résultats de l'outil à Claude dans un message de suivi. Claude dispose maintenant de toutes les informations nécessaires pour formuler une réponse complète.

Enfin, Claude répond avec la réponse formatée, que votre serveur transmet à l'utilisateur.
Oui, ce flux implique de nombreuses étapes, mais chaque composant a une responsabilité claire. Le client MCP abstrait la complexité de la communication avec le serveur, vous permettant de vous concentrer sur la construction de la logique de votre application. Au fur et à mesure que nous implémentons notre propre client et serveur MCP, vous verrez comment chaque pièce s'imbrique dans la pratique.