Le transport StreamableHTTP
Le transport StreamableHTTP permet aux clients MCP de se connecter à des serveurs hébergés à distance via des connexions HTTP. Contrairement au transport STDIO qui nécessite client et serveur sur la même machine, ce transport ouvre la possibilité de serveurs MCP publics auxquels n’importe qui peut accéder.
Cependant, il y a une mise en garde importante : certains paramètres de configuration peuvent significativement limiter les fonctionnalités de votre serveur MCP. Si votre application fonctionne parfaitement avec le transport STDIO en local mais se casse lors du déploiement avec le transport HTTP, c’est probablement la cause.
Paramètres de configuration importants
Deux paramètres clés contrôlent le comportement du transport StreamableHTTP :
| Paramètre | Par défaut | Impact |
|---|---|---|
stateless_http | False | Contrôle la gestion de l’état de connexion |
json_response | False | Contrôle la gestion du format de réponse |
Par défaut, les deux sont False. Certains scénarios de déploiement peuvent vous forcer à les mettre à True. Quand ils sont activés, ces paramètres peuvent casser les fonctionnalités essentielles comme les notifications de progression, les logs, et les requêtes initiées par le serveur.
Le défi de la communication HTTP
Pour comprendre pourquoi ces limitations existent, rappelons comment fonctionne la communication HTTP standard :
✅ Client → Serveur : facile (le serveur a une URL connue)
✅ Serveur → Client : facile (réponse à une requête existante)
❌ Serveur → Client (initié) : difficile (le client n'a pas d'URL connue)
❌ Client → Serveur (réponse) : problématique
Types de messages MCP affectés
Cette limitation HTTP impacte des patterns de communication MCP spécifiques. Les types de messages suivants deviennent difficiles à implémenter avec du HTTP simple :
Requêtes initiées par le serveur :
CreateMessageRequest(sampling)ListRootsRequest
Notifications :
ProgressNotificationLoggingMessageNotificationInitializedNotificationCancelledNotification
Ce sont exactement les fonctionnalités qui se cassent quand vous activez les paramètres HTTP restrictifs. Les barres de progression disparaissent, les logs s’arrêtent, et les requêtes de sampling initiées par le serveur échouent.
La solution StreamableHTTP
Le transport StreamableHTTP fournit une solution intelligente pour contourner les limitations d’HTTP, mais avec des compromis. Quand vous êtes forcé d’utiliser stateless_http=True ou json_response=True, vous dites essentiellement au transport d’opérer dans les contraintes d’HTTP plutôt que de les contourner.
Décisions à prendre
Comprendre ces limitations vous aide à :
- Choisir le bon transport pour différents scénarios de déploiement
- Concevoir votre serveur MCP pour gérer gracieusement les contraintes HTTP
- Accepter les compromis de fonctionnalités réduites vs les avantages de l’hébergement distant
La leçon suivante explique en détail comment StreamableHTTP utilise les Server-Sent Events (SSE) pour contourner les limitations d’HTTP et permettre une communication bidirectionnelle.