Anthropic gibt heute ein bedeutendes Update für das Model Context Protocol (MCP) bekannt und führt eine neue „Streamable HTTP“-Übertragungsmethode ein, die die bisherige HTTP+SSE-Lösung ersetzt. Diese Innovation behebt grundlegende Einschränkungen der MCP-Fernübertragung, bei gleichzeitiger Beibehaltung der bisherigen Vorteile.

Das Update stellt im Wesentlichen eine Neukonzeption des MCP-Datenübertragungsmechanismus dar, wodurch das Protokoll flexibler, benutzerfreundlicher und kompatibler wird. Veranschaulicht man es, so ähnelte die bisherige MCP-Übertragung einem Kundenservice-Anruf, der eine permanente Verbindung erforderte (SSE benötigt eine dauerhafte Verbindung), während die neue Lösung eher dem Senden von Nachrichten mit anschließendem Abwarten der Antwort entspricht (normale HTTP-Anfrage, aber optional mit Stream-Übertragung).

Das Update umfasst fünf Kernänderungen: Erstens wurde der spezielle /sse-Endpunkt entfernt, der Server verwaltet keinen SSE-Endpunkt (Server-Sent Events) mehr separat; zweitens werden alle Nachrichten von Client zu Server über den einheitlichen /message-Endpunkt übertragen, ohne dass /sse mehr benötigt wird; drittens kann der Server HTTP-Anfragen nach Bedarf dynamisch zu SSE-Streams upgraden, um Benachrichtigungen oder Anfragen zu senden; viertens stellt der Client über den Header Mcp-Session-Id Informationen bereit, der Server kann selbst entscheiden, ob er Sitzungsinformationen speichert; und fünftens wird der vollständig zustandslose Serverbetrieb unterstützt, eine dauerhafte Verbindung ist nicht mehr erforderlich.

Die Hauptgründe für diese Änderung liegen in mehreren Mängeln der bisherigen HTTP+SSE-Übertragung: fehlende Wiederherstellungsfunktion nach Verbindungsunterbrechungen, was den Client zwingt, die gesamte Sitzung erneut zu starten; der Server muss eine hohe Verfügbarkeit aufrechterhalten, um dauerhafte SSE-Verbindungen zu unterstützen; und SSE unterstützt nur die Einwegkommunikation (Server an Client), eine flexible Zweiwegkommunikation ist nicht möglich. Die neue „Streamable HTTP“-Übertragungsmethode behebt diese Probleme und verbessert gleichzeitig die Skalierbarkeit und Flexibilität des Systems deutlich.

Für Entwickler bietet dieses Update viele Vorteile: Die Implementierung eines MCP-Servers wird vereinfacht, ein normaler HTTP-Server reicht aus, um MCP zu unterstützen, ein separater SSE-Server ist nicht mehr erforderlich; die Bereitstellung auf Plattformen wie Vercel, Cloudflare und AWS Lambda, die keine dauerhaften Verbindungen unterstützen, wird vereinfacht; die Kompatibilität wird deutlich verbessert, die neue Lösung als Standard-HTTP lässt sich nahtlos in CDN, API-Gateways und Load Balancer integrieren; die Skalierbarkeit wird deutlich erhöht, der zustandslose Modus wird unterstützt und kann bei Bedarf dynamisch auf SSE aktualisiert werden.

Auch in Bezug auf Infrastruktur und Serverarchitektur bringt die neue Lösung revolutionäre Veränderungen: Zustandslose Server werden möglich, der Server muss keine Client-Sitzungsinformationen mehr dauerhaft speichern; sie eignet sich besser für Microservice-Architekturen und lässt sich problemlos in REST-APIs, GraphQL, Load Balancer und CDN integrieren; die Serverressourcen werden effizienter genutzt, die Ressourcen werden nach der Bearbeitung der Anfrage freigegeben, was sich für hochparallele Szenarien eignet.

Interessanterweise hat sich Anthropic trotz der Probleme mit SSE nicht für WebSocket als Alternative entschieden. Der Grund dafür ist: WebSocket benötigt eine dauerhafte Verbindung, während MCP hauptsächlich ein RPC-ähnliches Modell verwendet, wobei jede Anfrage unabhängig ausgeführt wird; WebSocket kann keine HTTP-Header-Informationen übertragen, was den Authentifizierungsprozess komplexer macht; WebSocket unterstützt nur GET-Upgrades, nicht POST, was mit den hauptsächlich von MCP verwendeten POST-Anfragen nicht kompatibel ist. Daher wurde beschlossen, weiterhin HTTP zu verwenden, dem Server aber die Möglichkeit zu geben, bei Bedarf auf SSE zu upgraden, anstatt SSE oder WebSocket zwingend einzusetzen.

Zusammenfassend lässt sich sagen, dass dieses Update MCP leichter und flexibler macht, der Server kann selbst entscheiden, ob er Stream-Übertragungen unterstützt; der Bereitstellungsprozess wird deutlich vereinfacht und eignet sich für Serverless-Architekturen; die Kompatibilität wird deutlich verbessert und lässt sich nahtlos mit verschiedenen Netzwerk-Infrastrukturen zusammenarbeiten; die Serverressourcen werden effizienter genutzt und unterstützen eine größere Anzahl gleichzeitiger Anfragen.

Diese innovative Änderung macht MCP-Server einfacher, effizienter und flexibler und ermöglicht größere verteilte Deployments. Es befreit sich vollständig von den Einschränkungen von SSE und eröffnet ein neues Kapitel für die Kommunikation zwischen KI-Modellen und Anwendungen.

Projekt-Adresse: https://github.com/modelcontextprotocol/specification/pull/206