JSON-RPC als transportierte Nachricht
Beide Standardtransporte übertragen UTF-8-kodierte JSON-RPC-Nachrichten. Der Transport definiert Framing und Zustellung, nicht die fachliche Bedeutung. Anwendungen dürfen Transportfehler daher nicht mit Toolfehlern vermischen.
Nachrichtengröße, Backpressure und Abbruchverhalten müssen praktisch begrenzt werden. Ein gültiges JSON-Dokument kann trotzdem eine wirtschaftlich oder betrieblich unzulässige Größe besitzen.
stdio: Prozess- und Vertrauensmodell
Der Client startet den Server als Unterprozess. stdin und stdout tragen ausschließlich Protokollnachrichten; stderr steht für Logs zur Verfügung. Eine Serverinstanz gehört typischerweise genau einer Clientverbindung.
Die Isolation ist nur so gut wie die Prozessrechte. Ein lokaler Server mit Zugriff auf Home-Verzeichnis und Umgebungsvariablen besitzt erhebliche Macht. Sandboxing, explizite Roots und minimale Credentials sind auch ohne Netzwerk zwingend.
Streamable HTTP
Ein entfernter Server stellt einen MCP-Endpunkt für POST und GET bereit und kann SSE zum Streaming verwenden. Nach der Initialisierung transportiert jeder Request die ausgehandelte MCP-Protocol-Version. Optional kann MCP-Session-Id Sitzungen adressieren.
Origin-Validierung verhindert DNS-Rebinding; Produktion verlangt HTTPS und Autorisierung. Lokal betriebene HTTP-Server sollten nur an Loopback binden. GET-Streams und POST-Antworten benötigen konsistente Wiederaufnahme- und Fehlerregeln.
Zustandslos oder zustandsbehaftet
Zustandslose Requests lassen sich ohne Session Affinity horizontal verteilen. Server-to-client Requests und bestimmte Benachrichtigungen können jedoch eine bestehende Verbindung voraussetzen. Zustandsbehaftete Varianten brauchen externen Sessionzustand oder Routingaffinität.
Die Wahl folgt den tatsächlich benötigten Capabilities. Einen Server nur aus Gewohnheit zustandsbehaftet zu bauen, erhöht Ausfall- und Skalierungskomplexität.
Transportentscheidung
stdio eignet sich für lokale IDE- und Desktopintegrationen; Streamable HTTP für gemeinsam genutzte, zentral betriebene Dienste. Hybride Plattformen können dieselbe Fachlogik hinter zwei Transportadaptern anbieten.
Vertragstests sollten transportneutral sein; zusätzliche Tests prüfen Framing, Header, Origin, Sessionende, Streaming und Netzwerkfehler je Adapter.
FAQ zu MCP-Transporte: stdio und Streamable HTTP
Ist SSE ein dritter Standardtransport?
Der frühere HTTP-plus-SSE-Transport ist abgelöst. Streamable HTTP kann SSE innerhalb seines Modells für Streaming verwenden.
Kann stdio horizontal skalieren?
Nicht als gemeinsam genutzter Dienst. Der Client startet üblicherweise pro Verbindung einen Prozess; Skalierung erfolgt damit auf Clientseite beziehungsweise durch mehrere Prozesse.
Primärquellen und wissenschaftliche Einordnung
Die Darstellung folgt der versionierten MCP-Spezifikation. Normative Anforderungen werden von Architektur- und Betriebsempfehlungen getrennt; experimentelle Funktionen sind entsprechend gekennzeichnet.
