La version 2 de MCP entrera en vigueur le 28 juillet 2026. Elle supprime chaque handshake, chaque en-tête session-ID ainsi que les trois sous-systèmes hérités qui liaient le Model Context Protocol (MCP) aux serveurs à session persistante (sticky-session). Le protocole devient entièrement sans état (stateless), de sorte que n'importe quelle instance autoscalée ou serverless peut traiter n'importe quelle requête sans avoir à préserver l'état du client.
Pourquoi ce changement est important
MCP v1 obligeait le client à démarrer une session avec un handshake initialize ; le serveur attribuait ensuite un Mcp-Session-Id. Chaque appel ultérieur devait porter cet en-tête, ce qui épinglait l'utilisateur à un seul nœud backend. Les équilibreurs de charge devaient imposer l'affinité de session, ce qui ajoutait de la latence et des frictions opérationnelles.
L'absence d'état élimine cette friction. Tout le contexte réside désormais dans des champs méta dédiés qui accompagnent chaque appel HTTP. Une requête peut arriver sur n'importe quelle instance, être traitée, et l'instance peut être supprimée dès l'envoi de la réponse. Les équipes utilisant des plateformes serverless, des clusters orchestrés par conteneurs ou tout environnement qui crée et supprime des pods à la demande peuvent désormais adapter le protocole à leur infrastructure.
Ce qui est retiré
Trois sous-systèmes qui dépendaient de connexions persistantes sont officiellement obsolètes :
- Sampling – Dans la v1, un serveur pouvait demander au client de générer du texte, un modèle qui nécessitait une session ouverte. La v2 prévoit que le serveur appelle directement le fournisseur de modèle de langage étendu (LLM) ou utilise le modèle
InputRequiredResult, où le client fournit l'entrée manquante lors d'une requête de suivi. - Roots – Auparavant, les clients envoyaient des URI qui limitaient la vue du serveur sur les ressources externes. La nouvelle approche transmet ces URI en tant que paramètres d'outils ou les intègre dans les champs de ressources de la requête, supprimant ainsi l'étape de négociation distincte des « roots ».
- Logging – Les en-têtes de journalisation au niveau du protocole disparaissent. Écrivez sur
stderrpour le débogage local ou adoptez OpenTelemetry pour l'observabilité en production.
La période d'obsolescence dure un an. Les fonctionnalités obsolètes continuent de fonctionner pendant cette période, laissant aux équipes le temps de refactoriser avant que le protocole ne les rejette.
Ce qui est nouveau en dehors de l'absence d'état
MCP v2 ajoute deux extensions officielles :
- MCP Apps – Un moyen léger de décrire des interfaces utilisateur rendues côté serveur que le protocole peut invoquer.
- Tasks – Un modèle pour gérer les opérations de longue durée qui peuvent s'étendre sur plusieurs cycles requête-réponse.
Les deux extensions reposent sur le modèle de requête sans état et évitent tout état de session caché.
Risques et contre-arguments
Ce changement n'est pas une mise à niveau prête à l'emploi (plug-and-play). Les SDK v2 sont encore en version bêta, et leurs API publiques peuvent évoluer avant la sortie d'une version stable. Pour les charges de travail en production qui ne peuvent tolérer de changements de rupture (breaking changes), restez sur le SDK v1 stable jusqu'à ce que le SDK v2 soit finalisé.
Les développeurs doivent également auditer le code existant pour identifier l'utilisation de l'un des trois sous-systèmes obsolètes.
Une feuille de route de migration pragmatique
- Auditez dès aujourd'hui – Analysez vos services pour détecter l'utilisation du handshake, de
Mcp-Session-Id, des appels de sampling, des URI de roots et de la journalisation au niveau du protocole. Identifiez le code qui pourrait ne plus fonctionner sous un modèle sans état. - Testez sur un nœud non critique – Lorsqu'un SDK v2 stable sera publié, lancez un serveur sandbox, connectez-le à un client de test et vérifiez que tous les champs méta requis sont présents et correctement interprétés.
- Migration complète avant la date limite – Effectuez la transition sur tous les nœuds de production avant la fin de la période de grâce d'un an pour éviter les rejets lors de l'exécution.
À surveiller ensuite
- Sortie du SDK stable – Les SDK bêta seront gelés et un package stable versionné sera publié. Cette version sera la cible sûre pour tout déploiement critique.
La transition nécessitera des modifications de code et une brève période d'expérimentation avec les SDK bêta, mais le résultat sera un point d'intégration plus propre et plus évolutif pour toute application basée sur un LLM.
À retenir : Si votre pile technologique dépend encore des handshakes MCP ou des trois sous-systèmes obsolètes, commencez l'audit dès maintenant ; une année de grâce est généreuse, mais le coût réel réside dans l'effort de refactorisation, pas dans la date limite.
