HTTP Streamable : L'interaction IA en temps réel via MCP, réinventée
Le Protocole de Contexte de Modèle (MCP) est un standard ouvert conçu pour lier de manière transparente les modèles d’intelligence artificielle — agissant comme clients — avec des outils externes et diverses sources de données, qui fonctionnent comme serveurs. Alors que les intégrations locales peuvent tirer parti d’un mécanisme simple d’entrée/sortie standard, les interactions à distance via les réseaux reposent sur une couche de communication sophistiquée basée sur HTTP. C’est là qu’intervient le HTTP Streamable, un transport moderne introduit début 2025 comme une évolution des approches antérieures, spécifiquement conçu pour gérer les interactions de streaming entre les clients IA et leurs outils distants. Essentiellement, le HTTP Streamable permet à MCP de transmettre et de recevoir des données sur Internet dans un flux continu et en temps réel, allant au-delà du paradigme traditionnel de requête-réponse unique. Cette innovation est fondamentale pour le fonctionnement des serveurs MCP distants, permettant aux agents IA de s’engager avec les services web de manière fluide et hautement interactive.
À la base, le HTTP Streamable est un cadre de communication basé sur HTTP qui facilite les réponses en streaming et la communication bidirectionnelle sur une seule connexion HTTP. Du point de vue du client, cela implique généralement l’envoi de requêtes via HTTP POST. Le serveur, à son tour, peut répondre soit par un message JSON unique conventionnel, soit en initiant un flux d’événements en direct à l’aide des Server-Sent Events (SSE) pour délivrer plusieurs messages au fil du temps. Une caractéristique clé de la conception est l’utilisation par le serveur d’un seul point d’accès HTTP unifié — par exemple, https://example.com/mcp
— qui prend en charge à la fois les requêtes POST pour l’envoi de commandes et les requêtes GET pour l’établissement d’un flux d’écoute persistant. Cette architecture à point d’accès unique simplifie considérablement l’implémentation par rapport aux schémas plus anciens et plus complexes à points d’accès multiples. De manière cruciale, le HTTP Streamable maintient la compatibilité avec l’infrastructure web existante, telle que les proxies et les équilibreurs de charge, en s’appuyant sur les protocoles HTTP standard (POST, GET) et SSE, tout en permettant simultanément des flux de données de longue durée. En substance, il fournit un mécanisme contrôlé pour que MCP diffuse des données sur HTTP, en utilisant SSE pour délivrer des messages serveur continus chaque fois que nécessaire.
Pour saisir pleinement la mécanique du HTTP Streamable, il est utile de retracer les étapes séquentielles d’une interaction client-serveur typique, de la configuration initiale à la terminaison. Le processus commence par l’initiation d’une session par le client en envoyant une requête HTTP POST au point d’accès MCP désigné du serveur. Cette requête fondamentale contient des informations sur les capacités du client et la version du protocole souhaitée. Après un traitement réussi, le serveur répond avec un statut HTTP 200 OK, incluant de manière critique un Mcp-Session-Id
unique dans ses en-têtes. Cet identifiant est la pierre angulaire pour maintenir l’état de la session, et le client doit l’inclure dans toutes les requêtes ultérieures pour préserver le contexte. Le corps de la réponse confirme également la configuration réussie et détaille les capacités du serveur, telles que les outils disponibles.
Après l’établissement de la session, le client ouvre généralement un canal de communication secondaire pour les messages initiés par le serveur, connu sous le nom de Canal d’Annonces. Ceci est réalisé en envoyant une requête HTTP GET au même point d’accès, incluant à nouveau le Mcp-Session-Id
et signalant son intention de recevoir des flux d’événements via l’en-tête Accept: text/event-stream
. Le serveur répond avec HTTP 200 OK et un en-tête Content-Type: text/event-stream
, gardant la connexion TCP ouverte indéfiniment. Cette connexion persistante permet au serveur de pousser des requêtes JSON-RPC ou des notifications au client à tout moment, indépendamment des propres requêtes de commande du client.
La véritable puissance du HTTP Streamable devient évidente lors de la gestion de tâches de longue durée qui nécessitent des mises à jour en temps réel. Lorsqu’un client doit exécuter une telle tâche, par exemple, exécuter un script d’analyse de données, il envoie une autre requête HTTP POST contenant la commande pertinente, complétée par le Mcp-Session-Id
. Reconnaissant qu’il s’agit d’une opération potentiellement longue, le serveur répond immédiatement avec un statut HTTP 200 OK et un en-tête Content-Type: text/event-stream
. Cette action maintient la connexion pour cette requête POST spécifique ouverte, transformant son corps de réponse en un flux SSE dédié. Au fur et à mesure que la tâche progresse, le serveur envoie des mises à jour en temps réel sous forme d’événements SSE sur ce flux. Une fois la tâche terminée, le résultat final est envoyé comme le dernier événement SSE, et ce flux spécifique est alors fermé, liant proprement toutes les mises à jour de progression et le résultat final à la requête initiale.
De manière cruciale, les deux canaux fonctionnent indépendamment. Pendant qu’une transaction POST de longue durée est en cours, le serveur peut toujours communiquer avec le client sur des questions non liées. Par exemple, si un nouvel outil est ajouté au serveur, il peut construire une notification et l’envoyer comme un événement SSE non pas sur le flux de réponse POST actif, mais sur la connexion GET persistante établie précédemment. Cela démontre le Canal d’Annonces en action, délivrant des notifications générales et à l’échelle de la session, découplées de toute commande spécifique initiée par le client.
Le protocole est également conçu pour la robustesse contre les pannes réseau. Si la connexion GET de longue durée du client (le Canal d’Annonces) tombe, la bibliothèque réseau du client détecte la déconnexion et émet immédiatement une nouvelle requête HTTP GET. Cette requête inclut à la fois le Mcp-Session-Id
et un en-tête Last-Event-ID
, indiquant le dernier événement traité avec succès. Le serveur utilise ces informations pour rejouer tous les messages envoyés après cet événement que le client aurait pu manquer, restaurant ainsi le Canal d’Annonces de manière transparente et sans perte de données. Cette approche stratifiée de l’état — où le Mcp-Session-Id
crée une session durable au niveau de l’application et les connexions HTTP ouvertes fournissent un état de flux éphémère au niveau du transport — permet une telle résilience, permettant au protocole de reconstruire l’état de transport éphémère en utilisant l’état d’application durable chaque fois que des interruptions se produisent.
Enfin, lorsque le client achève toutes ses tâches, il met fin explicitement à la session en envoyant une requête HTTP DELETE au point d’accès /mcp
, incluant le Mcp-Session-Id
. Le serveur valide l’ID, nettoie tout état de session associé, ferme la connexion GET persistante et invalide l’ID de session, répondant avec un HTTP 200 OK pour conclure formellement le cycle de vie de la communication.
Le HTTP Streamable est une pierre angulaire de la capacité de MCP à connecter les agents IA avec des outils sur Internet de manière riche et interactive. En étendant HTTP pour qu’il soit compatible avec le streaming et en tirant parti des SSE pour des mises à jour continues, il offre la flexibilité essentielle aux systèmes IA qui doivent diffuser des sorties, gérer des tâches de longue durée et maintenir une synchronisation en temps réel. Contrairement au modèle traditionnel de requête-réponse HTTP, le HTTP Streamable maintient la conversation en vie : un agent IA peut initier une tâche avec un outil et commencer immédiatement à recevoir des mises à jour de progression ou des résultats, tandis que l’outil peut également envoyer des alertes ou demander des éclaircissements sur la même ligne de communication persistante. Cette approche améliore considérablement la fiabilité grâce aux capacités de reprise de session et améliore l’efficacité en évitant les connexions toujours actives inutiles, tout en restant entièrement compatible avec les standards web établis. En pratique, le HTTP Streamable permet des scénarios tels qu’un assistant de codage diffusant des journaux en direct à partir d’un outil de construction distant ou un agent d’analyse de données interrogeant une base de données et recevant les résultats de manière incrémentielle. Il marie efficacement la simplicité de HTTP avec la puissance du streaming, remplissant la promesse de MCP d’agir comme un “USB-C pour les outils IA” en fournissant une interface unifiée et robuste pour le streaming de contexte et de données entre l’IA et le monde.