Anthropic annonce aujourd'hui une mise à jour majeure du protocole Model Context Protocol (MCP), introduisant un nouveau mode de transfert "Streamable HTTP" pour remplacer la solution HTTP+SSE existante. Cette innovation résout les limitations clés du transfert distant MCP tout en conservant ses avantages.
Cette mise à jour est essentiellement une refonte du mécanisme de transfert de données MCP, rendant le protocole plus flexible, plus facile à utiliser et plus compatible. Pour illustrer, le transfert MCP précédent était comme un appel téléphonique avec un service client nécessitant une connexion permanente (SSE nécessite une connexion longue), tandis que la nouvelle solution est comparable à l'envoi de messages et à l'attente de réponses (requête HTTP standard, mais avec la possibilité de streaming).
Cette mise à jour comprend cinq changements principaux : premièrement, suppression du point de terminaison /sse dédié, le serveur ne gérant plus de point de terminaison SSE (Server-Sent Events) séparé ; deuxièmement, tous les messages client-serveur sont transférés via le point de terminaison unifié /message, sans plus dépendre de /sse ; troisièmement, le serveur peut dynamiquement mettre à niveau les requêtes HTTP en flux SSE, pour envoyer des notifications ou des requêtes ; quatrièmement, le client fournit Mcp-Session-Id via l'en-tête, le serveur pouvant décider lui-même s'il doit stocker les informations de session ; enfin, prise en charge d'un serveur entièrement sans état, ne nécessitant plus de connexion longue.
Les principaux motifs de ce changement résident dans les multiples défauts du transfert HTTP+SSE actuel : absence de fonction de reprise après rupture de connexion, obligeant le client à recommencer toute la session ; le serveur doit maintenir une haute disponibilité pour prendre en charge les connexions SSE continues ; et SSE ne prend en charge que la communication unidirectionnelle (serveur vers client), empêchant une communication bidirectionnelle flexible. Le nouveau mode de transfert "Streamable HTTP" résout ces problèmes tout en améliorant considérablement l'évolutivité et la flexibilité du système.
Pour les développeurs, cette mise à jour apporte de nombreux avantages : la mise en œuvre d'un serveur MCP est simplifiée, un serveur HTTP standard suffit pour prendre en charge MCP, sans avoir besoin de configurer un serveur SSE dédié ; le déploiement sur des plates-formes cloud ne prenant pas en charge les connexions longues, telles que Vercel, Cloudflare et AWS Lambda, est facilité ; la compatibilité est considérablement améliorée, la nouvelle solution étant un HTTP standard, elle s'intègre parfaitement aux CDN, aux passerelles API et aux équilibreurs de charge ; l'évolutivité est considérablement renforcée, prenant en charge le mode sans état et pouvant être mise à niveau dynamiquement vers SSE si nécessaire.
En termes d'infrastructure et d'architecture serveur, la nouvelle solution apporte également des changements révolutionnaires : un serveur sans état devient possible, le serveur n'ayant plus besoin de stocker en permanence les informations de session client ; mieux adapté à l'architecture microservices, il s'intègre facilement aux systèmes REST API, GraphQL, équilibreurs de charge et CDN ; l'utilisation des ressources serveur est optimisée, les ressources étant libérées après le traitement de la requête, ce qui convient aux scénarios à forte concurrence.
Il est intéressant de noter qu'en dépit des problèmes de SSE, Anthropic n'a pas choisi WebSocket comme solution de remplacement. En effet, WebSocket nécessite une connexion longue, tandis que MCP utilise principalement un modèle similaire à RPC, chaque requête étant exécutée indépendamment ; WebSocket ne peut pas transmettre les en-têtes HTTP, ce qui complique le processus d'authentification ; WebSocket ne prend en charge que la mise à niveau GET et non POST, incompatible avec les requêtes POST principalement utilisées par MCP. Par conséquent, il a été décidé de continuer à utiliser HTTP, mais en donnant au serveur la possibilité de passer à SSE selon les besoins, plutôt que d'utiliser obligatoirement SSE ou WebSocket.
Globalement, cette mise à jour rend MCP plus léger et plus flexible, le serveur pouvant décider lui-même s'il prend en charge le streaming ; le processus de déploiement est considérablement simplifié, adapté à l'architecture Serverless ; la compatibilité est considérablement améliorée, permettant une collaboration transparente avec diverses infrastructures réseau ; l'utilisation des ressources serveur est optimisée, permettant de gérer un plus grand nombre de requêtes simultanées.
Ce changement innovant rend les serveurs MCP plus simples, plus efficaces et plus flexibles, permettant des déploiements distribués à plus grande échelle, se libérant complètement des limitations de SSE et ouvrant une nouvelle ère pour la communication entre les modèles d'IA et les applications.
Adresse du projet : https://github.com/modelcontextprotocol/specification/pull/206