Verstehen, wie MCP Clients, Server und LLMs verbindetDas Model Context Protocol (MCP) basiert auf einer flexiblen, erweiterbaren Architektur, die eine nahtlose Kommunikation zwischen LLM-Anwendungen und Integrationen ermöglicht. Dieses Dokument behandelt die wichtigsten architektonischen Komponenten und Konzepte.MCP folgt einer Client-Server-Architektur, bei der:Hosts LLM-Anwendungen (wie Claude Desktop oder IDEs) sind, die Verbindungen initiieren
Clients 1:1-Verbindungen mit Servern innerhalb der Host-Anwendung aufrechterhalten
Server Clients Kontext, Tools und Prompts bereitstellen
Die Protokollschicht behandelt die Nachrichtenformatierung, die Verknüpfung von Anfrage und Antwort sowie allgemeine Kommunikationsmuster.Zu den wichtigsten Klassen gehören:Die Transportschicht behandelt die eigentliche Kommunikation zwischen Clients und Servern. MCP unterstützt mehrere Transportmechanismen:1.
Verwendet Standard-Ein-/Ausgabe für die Kommunikation
Ideal für lokale Prozesse
2.
Verwendet Server-Sent Events für Server-zu-Client-Nachrichten
HTTP POST für Client-zu-Server-Nachrichten
Alle Transporte verwenden JSON-RPC 2.0, um Nachrichten auszutauschen. Detaillierte Informationen zum Nachrichtenformat des Model Context Protocol finden Sie in der Spezifikation.MCP kennt die folgenden Haupttypen von Nachrichten:1.
Requests erwarten eine Antwort von der Gegenseite: 2.
Results sind erfolgreiche Antworten auf Anfragen: 3.
Errors zeigen an, dass eine Anfrage fehlgeschlagen ist: 4.
Notifications sind unidirektionale Nachrichten, die keine Antwort erwarten: 1.
Client sendet initialize-Anfrage mit Protokollversion und Fähigkeiten
2.
Server antwortet mit seiner Protokollversion und seinen Fähigkeiten
3.
Client sendet initialized-Benachrichtigung als Bestätigung
4.
Normaler Nachrichtenaustausch beginnt
Nach der Initialisierung werden die folgenden Muster unterstützt:Request-Response: Client oder Server sendet Anfragen, der andere antwortet
Notifications: Beide Parteien senden unidirektionale Nachrichten
Jede Partei kann die Verbindung beenden:Sauberes Herunterfahren über close()
MCP definiert die folgenden Standardfehlercodes:SDKs und Anwendungen können ihre eigenen Fehlercodes oberhalb von -32000 definieren.Fehler werden weitergegeben durch:Fehlerantworten auf Anfragen
Fehlerereignisse auf Transporten
Fehlerbehandler auf Protokollebene
Hier ist ein einfaches Beispiel für die Implementierung eines MCP-Servers:1.
Verwenden Sie den Stdio-Transport für lokale Prozesse
Effizient für die Kommunikation auf derselben Maschine
Einfache Prozessverwaltung
2.
Verwenden Sie SSE für Szenarien, die HTTP-Kompatibilität erfordern
Berücksichtigen Sie Sicherheitsaspekte wie Authentifizierung und Autorisierung
1.
Validieren Sie Eingaben gründlich
Verwenden Sie typsichere Schemas
Behandeln Sie Fehler auf elegante Weise
Implementieren Sie Timeouts
2.
FortschrittsberichterstattungVerwenden Sie Fortschrittstoken für lange Operationen
Melden Sie den Fortschritt inkrementell
Geben Sie den Gesamtfortschritt an, wenn er bekannt ist
3.
Verwenden Sie geeignete Fehlercodes
Fügen Sie hilfreiche Fehlermeldungen hinzu
Bereinigen Sie Ressourcen bei Fehlern
1.
Verwenden Sie TLS für Remote-Verbindungen
Validieren Sie Verbindungsoriginen
Implementieren Sie bei Bedarf eine Authentifizierung
2.
Validieren Sie alle eingehenden Nachrichten
Überprüfen Sie die Größenbeschränkungen für Nachrichten
Überprüfen Sie das JSON-RPC-Format
3.
Implementieren Sie Zugriffskontrollen
Validieren Sie Ressourcenpfade
Überwachen Sie die Ressourcennutzung
Beschränken Sie die Anforderungsrate
4.
Geben Sie keine sensiblen Informationen preis
Protokollieren Sie sicherheitsrelevante Fehler
Implementieren Sie eine ordnungsgemäße Bereinigung
Behandeln Sie DoS-Szenarien
1.
Protokollieren Sie Protokollereignisse
Verfolgen Sie den Nachrichtenfluss
Überwachen Sie die Leistung
2.
Implementieren Sie Integritätsprüfungen
Überwachen Sie den Verbindungsstatus
Verfolgen Sie die Ressourcennutzung
Profilieren Sie die Leistung
3.
Testen Sie verschiedene Transporte
Überprüfen Sie die Fehlerbehandlung
Führen Sie Lasttests für Server durch
Modified at 2025-03-13 03:58:09