MCP-Server-Transporte
MCP unterstützt Transportmechanismen für die Kommunikation zwischen Bob und MCP-Servern.
Übersicht
MCP bietet drei Transportoptionen, die jeweils für unterschiedliche Bereitstellungsszenarien geeignet sind:
- STDIO-Transport (lokale Server)
- Streamable HTTP-Transport (moderner Standard für Remote-Server)
- SSE-Transport (Legacy-Remote-Option)
Jeder Transport hat unterschiedliche Eigenschaften, Vorteile und Anwendungsfälle.
STDIO-Transport
STDIO-Transport läuft lokal auf Ihrem Computer und kommuniziert über Standard-Ein-/Ausgabeströme.
Wie STDIO-Transport funktioniert
- Bob startet einen MCP-Server als Kindprozess
- Die Kommunikation erfolgt über Prozessströme: Bob schreibt in STDIN des Servers, der Server antwortet auf STDOUT
- Jede Nachricht wird durch ein Zeilenumbruchzeichen begrenzt
- Nachrichten sind als JSON-RPC 2.0 formatiert
Client Server
| |
|---- JSON-Nachricht ---->| (über STDIN)
| | (verarbeitet Anfrage)
|<---- JSON-Nachricht ----| (über STDOUT)
| |STDIO-Eigenschaften
- Lokalität: Läuft auf derselben Maschine wie Bob
- Leistung: Sehr geringe Latenz und Overhead (kein Netzwerk-Stack beteiligt)
- Einfachheit: Direkte Prozesskommunikation ohne Netzwerkkonfiguration
- Beziehung: Eins-zu-eins-Beziehung zwischen Client und Server
- Sicherheit: Inhärent sicherer ohne Netzwerkexposition
Wann STDIO verwenden
STDIO-Transport ist ideal für:
- Lokale Integrationen und Werkzeuge, die auf derselben Maschine laufen
- Sicherheitskritische Operationen
- Anforderungen mit geringer Latenz
- Einzelclient-Szenarien (eine Bob-Instanz pro Server)
- Befehlszeilenwerkzeuge oder IDE-Erweiterungen
STDIO-Implementierungsbeispiel
const server = new Server({name: 'local-server', version: '1.0.0'});
// Werkzeuge registrieren...
// STDIO-Transport verwenden
const transport = new StdioServerTransport(server);
transport.listen();Streamable HTTP-Transport
Streamable HTTP-Transport ist der moderne Standard für die Remote-MCP-Serverkommunikation und ersetzt den älteren HTTP+SSE-Transport. Er arbeitet über HTTP/HTTPS und ermöglicht flexiblere Serverimplementierungen.
Wie Streamable HTTP-Transport funktioniert
- Der Server stellt einen einzelnen HTTP-Endpunkt (MCP-Endpunkt) bereit, der sowohl POST- als auch GET-Methoden unterstützt
- Bob sendet Anfragen an diesen MCP-Endpunkt mit HTTP POST
- Der Server verarbeitet die Anfrage und sendet eine Antwort zurück
- Optional kann der Server Server-Sent Events (SSE) über dieselbe Verbindung verwenden, um mehrere Nachrichten oder Benachrichtigungen an Bob zu streamen
Dies ermöglicht sowohl grundlegende Request-Response-Interaktionen als auch fortgeschritteneres Streaming und serverinitiierte Kommunikation.
Client Server
| |
|---- HTTP POST /mcp_endpoint ---->| (Client-Anfrage)
| | (verarbeitet Anfrage)
|<--- HTTP Response / SSE Stream --| (Server-Antwort / Stream)
| |Streamable HTTP-Eigenschaften
- Moderner Standard: Bevorzugte Methode für neue Remote-MCP-Serverimplementierungen
- Remote-Zugriff: Kann auf einer anderen Maschine als Bob gehostet werden
- Skalierbarkeit: Kann mehrere Client-Verbindungen gleichzeitig verarbeiten
- Protokoll: Funktioniert über Standard-HTTP/HTTPS
- Flexibilität: Unterstützt einfache Request-Response und fortgeschrittenes Streaming
- Einzelner Endpunkt: Verwendet einen einzelnen URL-Pfad für die gesamte MCP-Kommunikation
- Authentifizierung: Kann Standard-HTTP-Authentifizierungsmechanismen verwenden
- Rückwärtskompatibilität: Server können Kompatibilität mit älteren HTTP+SSE-Clients aufrechterhalten
Wann Streamable HTTP verwenden
Streamable HTTP-Transport ist ideal für:
- Alle neuen Remote-MCP-Serverentwicklungen
- Server, die robuste, skalierbare und flexible Kommunikation erfordern
- Integrationen, die Streaming-Daten oder servergesendete Benachrichtigungen beinhalten können
- Öffentliche Dienste oder zentralisierte Werkzeuge
- Ersatz von Legacy-SSE-Transportimplementierungen
Protokollaushandlung
Wenn Bob eine Verbindung zu einem Streamable HTTP-Server herstellt, verwendet er die Option protocolNegotiation, um festzulegen, wie eine Protokollversion vereinbart werden soll. HTTP-Server sind standardmäßig auf "auto" eingestellt.
| Wert | Beschreibung |
|---|---|
"auto" | Bob sendet vor initialize eine server/discover-Prüfung (Probe), um die höchste beidseitig unterstützte Protokollversion auszuhandeln. Standard für HTTP-Server. |
"legacy" | Bob überspringt die Prüfung und stellt die Verbindung direkt über den initialize-Handshake her, der mit allen MCP-Servern kompatibel ist. |
{ "pin": "<version>" } | Bob verbindet sich mit einer bestimmten Protokollversion (z. B. { "pin": "2024-11-05" }). |
Wenn bei einem HTTP-Server ein Timeout mit MCP connection timed out after 10000ms auftritt, reagiert der Server möglicherweise nicht auf die server/discover-Prüfung. Setzen Sie "protocolNegotiation": "legacy", um die Prüfung zu überspringen:
{
"mcpServers": {
"my-server": {
"url": "https://ihre-server-url.com/mcp",
"protocolNegotiation": "legacy"
}
}
}Weitere Details finden Sie unter Protokollaushandlung in „MCP in Bob verwenden“.
Streamable HTTP-Implementierungsbeispiel
Konfiguration in settings.json:
{
"mcpServers": {
"StreamableHTTPMCPName": {
"type": "streamable-http",
"url": "http://localhost:8080/mcp"
}
}
}Für die serverseitige Implementierung siehe die MCP SDK-Dokumentation für StreamableHTTPClientTransport.
Rückwärtskompatibilität mit HTTP+SSE
Bobs MCP-Client fällt nicht auf den HTTP+SSE-Transport zurück. Die folgende Anleitung richtet sich an Server-Autoren, die ihren Streamable HTTP-Server für ältere Clients zugänglich halten möchten, die Streamable HTTP noch nicht unterstützen.
Server, die ältere Clients unterstützen müssen, sollten weiterhin sowohl den SSE-Endpunkt (/events) als auch den POST-Endpunkt (/message) des alten Transports neben dem neuen MCP-Endpunkt für den Streamable HTTP-Transport hosten.
SSE-Transport (entfernt)
Bobs MCP-Client unterstützt den eigenständigen HTTP+SSE-Transport (MCP-Spezifikation 2024-11-05) nicht mehr. Server, die ausschließlich den HTTP+SSE-Transport verwenden, können keine Verbindung zu Bob herstellen.
SSE als Antwortkanal innerhalb einer Streamable HTTP-Verbindung wird weiterhin unterstützt. Bob kann SSE-Streams von einem Streamable HTTP-Server empfangen. Nur der eigenständige HTTP+SSE-Transport (mit separaten /events- und /message-Endpunkten) wurde entfernt.
Migration vom SSE-Transport
Wenn Sie einen bestehenden Server haben, der den HTTP+SSE-Transport verwendet, migrieren Sie zu Streamable HTTP-Transport oder STDIO-Transport:
- Streamable HTTP: Stellen Sie einen einzelnen MCP-Endpunkt bereit, der HTTP-POST-Anfragen akzeptiert. Dies ist der empfohlene Weg für Remote-Server. Siehe Streamable HTTP-Transport.
- STDIO: Wenn der Server lokal auf derselben Maschine wie Bob läuft, konvertieren Sie ihn zu einem STDIO-Server. Siehe STDIO-Transport.
Bereitstellungsüberlegungen
Die Wahl zwischen STDIO und Streamable HTTP-Transport wirkt sich direkt darauf aus, wie Sie Ihre MCP-Server bereitstellen und verwalten.
STDIO: Lokale Bereitstellung
STDIO-Server laufen lokal auf derselben Maschine wie Bob:
- Installation: Die ausführbare Serverdatei muss auf dem Computer jedes Benutzers installiert werden
- Verteilung: Sie müssen Installationspakete für verschiedene Betriebssysteme bereitstellen
- Updates: Jede Instanz muss separat aktualisiert werden
- Ressourcen: Verwendet CPU, Speicher und Festplatte der lokalen Maschine
- Zugriffskontrolle: Verlässt sich auf die Dateisystemberechtigungen der lokalen Maschine
- Integration: Einfache Integration mit lokalen Systemressourcen (Dateien, Prozesse)
- Ausführung: Startet und stoppt mit Bob (Kindprozess-Lebenszyklus)
- Abhängigkeiten: Alle Abhängigkeiten müssen auf dem Computer des Benutzers installiert werden
Beispiel-Anwendungsfall:
Ein lokales Dateisuch-Werkzeug mit STDIO würde:
- Auf dem Computer des Benutzers laufen
- Direkten Zugriff auf das lokale Dateisystem haben
- Bei Bedarf von Bob gestartet werden
- Keine Netzwerkkonfiguration erfordern
- Neben Bob oder über einen Paketmanager installiert werden müssen
Remote: Gehostete Bereitstellung
Remote-Server (Streamable HTTP) können auf Remote-Servern bereitgestellt und über das Netzwerk aufgerufen werden:
- Installation: Einmal auf einem Server installiert, von vielen Benutzern aufgerufen
- Verteilung: Einzelne Bereitstellung bedient mehrere Clients
- Updates: Zentralisierte Updates betreffen alle Benutzer sofort
- Ressourcen: Verwendet Serverressourcen, nicht lokale Maschinenressourcen
- Zugriffskontrolle: Verwaltet durch Authentifizierungs- und Autorisierungssysteme
- Integration: Komplexere Integration mit benutzerspezifischen Ressourcen
- Ausführung: Läuft als unabhängiger Dienst (oft kontinuierlich)
- Abhängigkeiten: Auf dem Server verwaltet, nicht auf Benutzermaschinen
Beispiel-Anwendungsfall:
Ein Datenbankabfrage-Werkzeug mit Remote-Transport würde:
- Auf einem zentralen Server laufen
- Sich mit Datenbanken mit serverseitigen Anmeldeinformationen verbinden
- Für mehrere Benutzer kontinuierlich verfügbar sein
- Ordnungsgemäße Netzwerksicherheitskonfiguration erfordern
- Mit Container- oder Cloud-Technologien bereitgestellt werden
Hybrid-Ansätze
Einige Szenarien profitieren von einem Hybrid-Ansatz:
- STDIO mit Netzwerkzugriff: Ein lokaler STDIO-Server, der als Proxy für Remote-Dienste fungiert
- Remote mit lokalen Befehlen: Ein Remote-Server, der Operationen auf der Client-Maschine über Callbacks auslösen kann
- Gateway-Muster: STDIO-Server für lokale Operationen, die sich mit Remote-Servern für spezialisierte Funktionen verbinden
Transportvergleich
| Überlegung | STDIO | Streamable HTTP |
|---|---|---|
| Standort | Nur lokale Maschine | Lokal oder remote |
| Clients | Einzelner Client | Mehrere Clients |
| Leistung | Geringere Latenz | Höhere Latenz (Netzwerk-Overhead) |
| Einrichtungskomplexität | Einfacher | Komplexer (erfordert HTTP-Server) |
| Sicherheit | Inhärent sicher | Erfordert explizite Sicherheitsmaßnahmen |
| Netzwerkzugriff | Nicht erforderlich | Erforderlich |
| Skalierbarkeit | Auf lokale Maschine beschränkt | Kann über Netzwerk verteilt werden |
| Bereitstellung | Installation pro Benutzer | Zentralisierte Installation |
| Updates | Verteilte Updates | Zentralisierte Updates |
| Ressourcennutzung | Verwendet Client-Ressourcen | Verwendet Server-Ressourcen |
| Abhängigkeiten | Clientseitige Abhängigkeiten | Serverseitige Abhängigkeiten |
Transporte in Bob konfigurieren
Detaillierte Informationen zur Konfiguration von Transporten in Bob, einschließlich Beispielkonfigurationen, finden Sie unter MCP in Bob.
MCP verstehen
Das Model Context Protocol (MCP) ist ein standardisiertes Kommunikationsprotokoll, das es KI-Systemen ermöglicht, mit externen Werkzeugen und Diensten zu interagieren.
MCP in Bob verwenden
Das Model Context Protocol (MCP) erweitert Bobs Funktionen durch die Verbindung mit externen Werkzeugen und Diensten. Dieser Leitfaden zeigt Ihnen, wie Sie MCP-Server mit Bob konfigurieren, verwalten und verwenden.