1. Konzepte
MCP Offizielle Dokumentation (Deutsche)
  • Erste Schritte
    • Einführung
    • Beispielserver
    • Beispielkunden
    • Quickstart
      • Für Serverentwickler
      • Für Client-Entwickler
      • Für Claude Desktop-Benutzer
  • Anleitungen
    • Erstellen von MCP mit LLMs
    • Debuggen
    • Inspektor
  • Konzepte
    • Kernarchitektur
    • Ressourcen
    • Eingabeaufforderungen
    • Werkzeuge
    • Probenahme
    • Wurzeln
    • Transportmöglichkeiten
  • Entwicklung
    • Was ist neu
    • Fahrplan
    • Beitragen
  1. Konzepte

Kernarchitektur

Verstehen, wie MCP Clients, Server und LLMs verbindet
Das 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.

Überblick#

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
image-20250312145458026

Kernkomponenten#

Protokollschicht#

Die Protokollschicht behandelt die Nachrichtenformatierung, die Verknüpfung von Anfrage und Antwort sowie allgemeine Kommunikationsmuster.
TypeScript
Python
Zu den wichtigsten Klassen gehören:
Protocol
Client
Server

Transportschicht#

Die Transportschicht behandelt die eigentliche Kommunikation zwischen Clients und Servern. MCP unterstützt mehrere Transportmechanismen:
1.
Stdio-Transport
Verwendet Standard-Ein-/Ausgabe für die Kommunikation
Ideal für lokale Prozesse
2.
HTTP mit SSE-Transport
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.

Nachrichtentypen#

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:

Verbindungslebenszyklus#

1. Initialisierung#

image.png
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

2. Nachrichtenaustausch#

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

3. Beendigung#

Jede Partei kann die Verbindung beenden:
Sauberes Herunterfahren über close()
Transportunterbrechung
Fehlerzustände

Fehlerbehandlung#

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

Implementierungsbeispiel#

Hier ist ein einfaches Beispiel für die Implementierung eines MCP-Servers:
TypeScript
Python

Bewährte Verfahren#

Transportauswahl#

1.
Lokale Kommunikation
Verwenden Sie den Stdio-Transport für lokale Prozesse
Effizient für die Kommunikation auf derselben Maschine
Einfache Prozessverwaltung
2.
Remote-Kommunikation
Verwenden Sie SSE für Szenarien, die HTTP-Kompatibilität erfordern
Berücksichtigen Sie Sicherheitsaspekte wie Authentifizierung und Autorisierung

Nachrichtenverarbeitung#

1.
Anfragebearbeitung
Validieren Sie Eingaben gründlich
Verwenden Sie typsichere Schemas
Behandeln Sie Fehler auf elegante Weise
Implementieren Sie Timeouts
2.
Fortschrittsberichterstattung
Verwenden Sie Fortschrittstoken für lange Operationen
Melden Sie den Fortschritt inkrementell
Geben Sie den Gesamtfortschritt an, wenn er bekannt ist
3.
Fehlermanagement
Verwenden Sie geeignete Fehlercodes
Fügen Sie hilfreiche Fehlermeldungen hinzu
Bereinigen Sie Ressourcen bei Fehlern

Sicherheitsüberlegungen#

1.
Transportsicherheit
Verwenden Sie TLS für Remote-Verbindungen
Validieren Sie Verbindungsoriginen
Implementieren Sie bei Bedarf eine Authentifizierung
2.
Nachrichtenvalidierung
Validieren Sie alle eingehenden Nachrichten
Bereinigen Sie Eingaben
Überprüfen Sie die Größenbeschränkungen für Nachrichten
Überprüfen Sie das JSON-RPC-Format
3.
Ressourcenschutz
Implementieren Sie Zugriffskontrollen
Validieren Sie Ressourcenpfade
Überwachen Sie die Ressourcennutzung
Beschränken Sie die Anforderungsrate
4.
Fehlerbehandlung
Geben Sie keine sensiblen Informationen preis
Protokollieren Sie sicherheitsrelevante Fehler
Implementieren Sie eine ordnungsgemäße Bereinigung
Behandeln Sie DoS-Szenarien

Debugging und Überwachung#

1.
Protokollierung
Protokollieren Sie Protokollereignisse
Verfolgen Sie den Nachrichtenfluss
Überwachen Sie die Leistung
Erfassen Sie Fehler
2.
Diagnose
Implementieren Sie Integritätsprüfungen
Überwachen Sie den Verbindungsstatus
Verfolgen Sie die Ressourcennutzung
Profilieren Sie die Leistung
3.
Testen
Testen Sie verschiedene Transporte
Überprüfen Sie die Fehlerbehandlung
Überprüfen Sie Randfälle
Führen Sie Lasttests für Server durch
Modified at 2025-03-13 03:58:09
Previous
Inspektor
Next
Ressourcen
Built with