MCP (Model Context Protocol) utilise des messages JSON pour gérer la communication entre les clients et les serveurs. Comprendre ces types de messages est crucial pour travailler avec MCP, en particulier lorsqu'il s'agit de différentes méthodes de transport comme le transport HTTP en streaming.
Format des messages
Toute la communication MCP se fait via des messages JSON. Chaque type de message a un objectif spécifique - qu'il s'agisse d'appeler un outil, de lister les ressources disponibles, ou d'envoyer des notifications sur les événements système.

Voici un exemple typique : lorsque Claude doit appeler un outil fourni par un serveur MCP, le client envoie un message « Call Tool Request ». Le serveur traite cette requête, exécute l'outil, et répond avec un message « Call Tool Result » contenant le résultat.

Spécification MCP
La liste complète des types de messages est définie dans le dépôt officiel de la spécification MCP sur GitHub. Cette spécification est distincte des différents dépôts SDK (comme les SDK Python ou TypeScript) et constitue la source faisant autorité sur le fonctionnement de MCP.
Les types de messages sont écrits en TypeScript par commodité - non pas parce qu'ils sont exécutés en tant que code TypeScript, mais parce que TypeScript offre un moyen clair de décrire les structures de données et les types.
Catégories de messages
Les messages MCP se répartissent en deux catégories principales :

Messages requête-résultat
Ces messages viennent toujours par paires. Vous envoyez une requête et vous attendez à recevoir un résultat en retour :
- Call Tool Request → Call Tool Result
- List Prompts Request → List Prompts Result
- Read Resource Request → Read Resource Result
- Initialize Request → Initialize Result
Messages de notification
Ce sont des messages à sens unique qui informent sur des événements mais ne nécessitent pas de réponse :
- Progress Notification - Mises à jour sur les opérations de longue durée
- Logging Message Notification - Messages de journalisation système
- Tool List Changed Notification - Lorsque les outils disponibles changent
- Resource Updated Notification - Lorsque des ressources sont modifiées
Messages client vs serveur
La spécification MCP organise les messages selon qui les envoie :
Les messages client incluent les requêtes que les clients envoient aux serveurs (comme les appels d'outils) et les notifications que les clients peuvent envoyer.
Les messages serveur incluent les requêtes que les serveurs envoient aux clients et les notifications que les serveurs diffusent.
Pourquoi c'est important
Comprendre que les serveurs peuvent envoyer des messages aux clients est particulièrement important lorsque l'on travaille avec différentes méthodes de transport. Certains transports, comme le transport HTTP en streaming, ont des limitations quant aux types de messages pouvant circuler dans chaque direction.
L'idée clé est que MCP est conçu comme un protocole bidirectionnel - les clients et les serveurs peuvent tous deux initier la communication. Cela devient crucial lorsque vous devez choisir la bonne méthode de transport pour votre cas d'usage spécifique.