- MCP (Model Context Protocol) bietet eine standardisierte Integrationsmethode, mit der LLMs mit der Außenwelt interagieren können
- In letzter Zeit sind ähnliche Standards wie IBMs ACP und Googles A2A aufgetaucht, während Implementierungen von MCP und zugehörige Tools rasch zunehmen
- Als Probleme werden jedoch Verwirrung im Design, unzureichende Dokumentation und fehlende tatsächliche Protokollspezifikationen genannt – Zeichen unausgereifter Engineering-Praktiken
- Die derzeit vorgeschlagenen Transportmethoden wie HTTP+SSE und Streamable HTTP erhöhen Komplexität und Sicherheitsrisiken; als Alternative wird der Einsatz von WebSocket empfohlen
- Die neuesten Protokolle sind bei Autorisierung und Session-Management inkonsistent und fügen übermäßige Komplexität hinzu
MCP und aktuelle Entwicklungen im Überblick
- MCP ist ein offenes Protokoll, das geschaffen wurde, um zu standardisieren, wie Anwendungen Large Language Models (LLMs) Kontext bereitstellen
- Im vergangenen Monat hat sich MCP als zentraler Standard etabliert, um LLMs zu Agenten zu machen, und seine Nutzung sowie Implementierung verbreiten sich rasant
- Mit ähnlicher Zielsetzung entstehen schnell weitere eher orthodoxe Standards wie IBMs ACP oder Googles A2A
Probleme bei Engineering-Praktiken und Protokollspezifikation
- An vielen Stellen zeigt sich ein niedriges Niveau bei tatsächlicher Implementierung und Dokumentation
- Große Tech-Unternehmen investieren massiv in das Training von Modellen, während SDKs und Dokumentation schwach ausfallen und bei Nutzern Verwirrung stiften
- Auch MCP zeigt ähnliche Probleme: Teile des Designs sind unplausibel, und es fehlt an Spezifikationen, Beispielen und Richtlinien
Diskussion zu den Transportprotokollen
Transport per stdio
- Stdio ist die traditionelle Methode, bei der MCP-Server und -Clients lokal direkt über Pipes (
stdout, stdin) verbunden werden
- Es gibt weniger komplexe Socket-Behandlung und weniger betriebssystemspezifische Probleme, wodurch sich eine schlanke Umgebungs-Konfiguration mit Umgebungsvariablen sowie Ein- und Ausgabeströmen ermöglicht
HTTP+SSE / Streamable HTTP
- Mit der Absicht, dem Web-Zeitalter gerecht zu werden, wurden HTTP+SSE und Streamable HTTP als HTTP-basierte Varianten übernommen
- Diese Ansätze wollen jedoch WebSocket ersetzen und verursachen dabei eher mehr Mehrdeutigkeit, Verwirrung im Design und Komplexität
- Da sich eine einzelne Session und Verbindung auf unterschiedliche Weise erzeugen und beenden lassen, entsteht eine erhebliche Belastung für Statusverwaltung und Sicherheit auf Serverseite
Schwierigkeiten in Praxisbeispielen für MCP-Server und -Clients
- Defizite bei der Unterstützung in verschiedenen Sprachen, etwa das Fehlen eines offiziellen Go SDK, fallen deutlich auf
- Weil Dokumentation und Spezifikation unklar sind, muss in der Praxis häufig per Reverse Engineering implementiert werden
- Obwohl die Beispielserver überwiegend auf Python und JavaScript basieren, erschweren Abhängigkeits- und Portabilitätsprobleme den Einsatz in produktiven Umgebungen
- Bei der Server-Implementierung versuchen SSE/Streamable HTTP, Sockets nachzuahmen, tatsächlich ist es aber schwierig, Session- und Verbindungszustände konsistent aufrechtzuerhalten, und es wird zusätzliche Infrastruktur wie Message Queues benötigt
Aufbau und Probleme von HTTP+SSE und Streamable HTTP
HTTP+SSE-Modus
- Der Client öffnet eine SSE-Session mit dem Server; sendet er Schreibanfragen an einen separaten Endpoint, antwortet der Server mit 202 und liefert die Antwort über die bestehende SSE-Verbindung aus
- Session-Verbindungen und Statussynchronisierung müssen aufrechterhalten werden, doch dieser Prozess ist nur unzureichend dokumentiert und operativ sehr komplex
Streamable-HTTP-Modus
- Session-Erstellung, Öffnen von SSE und Antwortübermittlung werden in mehreren Varianten vermischt, sodass ein einzelner Request-Response-Ablauf nicht konsistent ist
- Mehrfache Statusverwaltung sowie unterschiedliche Endpoints und Header-Verfahren treten nebeneinander auf, was praktische Implementierung und Skalierbarkeit erheblich behindert
Allgemeine Implikationen
- Mit der steigenden technischen Komplexität nehmen auch kognitive Last und Wartungsaufwand für Entwickler zu; zudem treten bei verschiedenen Server- und Client-Implementierungen Kompatibilitätsprobleme und unvorhersehbares Verhalten auf
- Server müssen sämtliche Zustände und Verbindungssituationen nachverfolgen; in verteilten Umgebungen werden effiziente Skalierung und Statussynchronisierung noch schwieriger
Sicherheitsimplikationen
- Die feingranularen und vielfältigen Verbindungs- und Session-Varianten erhöhen Sicherheitslücken in der Statusverwaltung wie Session Hijacking, Replay-Angriffe und Denial of Service (DoS)
- Mehrere Einstiegspunkte und Antwortwege vergrößern die Angriffsfläche und können bösartige Aktivitäten über unbeabsichtigte Abläufe verschleiern
Verwirrung beim Autorisierungsprotokoll
- Die aktuelle Spezifikation erzwingt etwa OAuth2 nur bei HTTP-Transport, während bei STDIO-Transport willkürlich Umgebungsvariablen verwendet werden sollen – eine inkonsistente Regelung
- Es bleibt verwirrend und widersprüchlich, warum nur HTTP-Transport zu einer komplexen OAuth2-Implementierung gezwungen wird
Vorschläge zur Verbesserung
- Nötig ist eine Vereinfachung auf ein einziges JSON-RPC-Protokoll, bei dem sich die Transportarten praktisch auf Stdio und WebSocket beschränken
- Wünschenswert wäre ein Mapping, bei dem Variablen aus der Stdio-Umgebung Headern im HTTP-Umfeld entsprechen und Ein- und Ausgabe jeweils auf bidirektionale Streams von WebSocket abgebildet werden
- Dadurch lassen sich unnötiges Session-Tracking, Statusverwaltung und zahlreiche Sonderbehandlungen vermeiden
- WebSocket sollte die Standardwahl für jeden HTTP-basierten Transport sein und kann auch komplexe Probleme der Statussynchronisierung lösen
Vergleich mit alternativen Protokollen und Marktentwicklung
- IBMs ACP und Googles A2A bieten im Hinblick auf die Interoperabilität von Agenten ein schlankeres Transportdesign und Funktionen zur Agenten-Erkennung
- Im Kern lassen sie sich jedoch meist als separate Werkzeuge in MCP-basierte Umgebungen integrieren
- Da das fortlaufende Auftauchen neuer Protokolle das Risiko einer Zersplitterung von Standards birgt, ist es für das Wachstum der Branche wichtig, die Einfachheit des Transports zu priorisieren
1 Kommentare
Hacker-News-Kommentare
agents.json-Datei ins Web-Root zu legen und Agenten den Rest über semantische Gespräche automatisch lösen zu lassen. Dann würde HTTP letztlich zum Standard-Ein- und -Ausgang für Agenten.glama.ai/mcp/servers). Ich stimme dem Autor teilweise zu, aber das Protokoll ist noch in einem sehr frühen Stadium und kann sich noch stark verändern. Es hat viel mehr Aufmerksamkeit bekommen als erwartet: Aus anfangs nur einigen Dutzend Servern wurden plötzlich Tausende, aber tatsächlich funktionierende Server sind nur ein Teil davon, sodass ich viel Zeit mit dem Aussortieren verbringe. Das ist ein Effekt davon, dass MCP noch vor seiner Reife öffentliche Aufmerksamkeit bekam. Gleichzeitig wächst das Ökosystem mit Code-Frameworks, Registern und MCP-unterstützenden Clients in erstaunlichem Tempo. Dass sich in nur einem halben Jahr so viel verändert hat, ist beispiellos. Wenn sich dieser Trend fortsetzt, sind die Aussichten gut. Ich stelle auch eine nützliche Materialsammlung für Einsteiger bereit.