Model Context Protocol Einführung
Tiefgehende Einblicke in das Model Context Protocol (MCP)
Protokoll-Übersicht
Das Model Context Protocol (MCP) ist ein offener Standard, der standardisiert, wie Anwendungen Kontext an große Sprachmodelle (LLMs) bereitstellen. Denken Sie an MCP wie einen USB-C-Anschluss für KI-Anwendungen—der eine standardisierte Möglichkeit bietet, KI-Modelle mit verschiedenen Datenquellen und Tools zu verbinden.
Hauptvorteile
- Standardisierte Kommunikationsschnittstelle
- Sichere Datenübertragung
- Erweiterbare Architektur-Design
- Plattformübergreifende Kompatibilität
- Echtzeit-Kontext-Synchronisation
- Plugin-basierte Erweiterungsunterstützung
Anwendungsfälle
- Code-Analyse und -Verständnis
- Dokumentationserstellung und -wartung
- Projektmanagement-Integration
- Datenbankabfragen und -operationen
- API-Service-Integration
- Workflow-Automatisierung
Architektur-Design
MCP-Protokoll-Schichtarchitektur und Komponentenübersicht
MCP-Host
KI-Anwendung
Die KI-Anwendung, die einen oder mehrere MCP-Clients koordiniert und verwaltet
Hauptverantwortlichkeiten:
- Mehrere MCP-Clients koordinieren
- KI-Modell-Interaktionen verwalten
- Server-Antworten verarbeiten
- Sitzungsstatus handhaben
MCP-Client
Verbindungsmanager
Eine Komponente, die eine Verbindung zu einem MCP-Server aufrechterhält und Kontext von einem MCP-Server für die Verwendung durch den MCP-Host erhält
Hauptverantwortlichkeiten:
- Eins-zu-eins-Server-Verbindung aufrechterhalten
- Kontext-Abfragen senden
- Server-Antworten handhaben
- Verbindungslebenszyklus verwalten
MCP-Server
Kontext-Anbieter
Ein Programm, das MCP-Clients über Tools, Ressourcen und Prompts Kontext bereitstellt
Hauptverantwortlichkeiten:
- Client-Verbindungen akzeptieren
- Kontext-Anfragen verarbeiten
- Strukturierte Daten zurückgeben
- Ressourcenstatus aufrechterhalten
Transport-Schicht
Kommunikationskanal
Verwaltet Kommunikationskanäle und Authentifizierung zwischen Clients und Servern
Hauptverantwortlichkeiten:
- STDIO-Transport für lokale Prozesse
- HTTP-Transport für entfernte Server
- Nachrichten-Framing und Serialisierung
- Authentifizierung und Sicherheit
Datenschicht
Protokoll-Definition
Definiert das JSON-RPC-basierte Protokoll für Client-Server-Kommunikation
Hauptverantwortlichkeiten:
- JSON-RPC 2.0 Nachrichtenformat
- Lebenszyklus-Management
- Primitive Definitionen (Tools, Ressourcen, Prompts)
- Benachrichtigungssystem
MCP-Primitive
Kern-Primitive, die definieren, was Clients und Server einander anbieten können
Tools
Ausführbare Funktionen, die KI-Anwendungen aufrufen können, um Aktionen durchzuführen
Beispiele:
- Dateioperationen (lesen, schreiben, erstellen)
- API-Aufrufe an externe Dienste
- Datenbankabfragen und -operationen
- Code-Analyse und Kompilierung
- Systembefehl-Ausführung
Verfügbare Methoden:
tools/list
tools/call
Ressourcen
Datenquellen, die kontextuelle Informationen für KI-Anwendungen bereitstellen
Beispiele:
- Dateiinhalte und Metadaten
- Datenbankdatensätze und Schemas
- API-Antworten und Dokumentation
- Git-Repository-Informationen
- Konfigurationsdateien
Verfügbare Methoden:
resources/list
resources/read
Prompts
Wiederverwendbare Vorlagen, die bei der Strukturierung von Interaktionen mit Sprachmodellen helfen
Beispiele:
- System-Prompts für spezifische Aufgaben
- Few-Shot-Beispiele zum Lernen
- Code-Review-Vorlagen
- Dokumentationsgenerierungs-Prompts
- Analyse- und Zusammenfassungsvorlagen
Verfügbare Methoden:
prompts/list
prompts/get
Transport-Schicht
Kommunikationsmechanismen, die den Datenaustausch zwischen Clients und Servern ermöglichen
STDIO-Transport
Verwendet Standard-Ein-/Ausgabeströme für direkte Prozesskommunikation
Anwendungsfälle:
- Lokale MCP-Server auf derselben Maschine
- Direkte Prozesskommunikation
- Optimale Leistung ohne Netzwerk-Overhead
- Einfache Einrichtung und Konfiguration
Beispiel:
npx @modelcontextprotocol/server-filesystem /path/to/files
Dateisystem-Server über STDIO starten
HTTP-Transport
Verwendet HTTP POST für Client-zu-Server-Nachrichten mit optionalen Server-Sent Events
Anwendungsfälle:
- Entfernte MCP-Server
- Cloud-basierte Dienste
- Authentifizierung mit Bearer-Token
- Skalierbare Server-Deployments
Beispiel:
https://api.example.com/mcp
Verbindung zu entferntem MCP-Server über HTTP
Nachrichtentypen
JSON-RPC 2.0-basierte Nachrichtentypen, die vom MCP-Protokoll unterstützt werden
initialize
Verbindung initialisieren und Protokollversion und Fähigkeiten aushandeln
Nachrichtenbeispiel:
{ "method": "initialize", "params": { "protocolVersion": "2025-06-18", "capabilities": { "tools": {}, "resources": {} }, "clientInfo": { "name": "gemini-cli", "version": "1.0.0" } } }
tools/list
Verfügbare Tools auf dem Server entdecken
Nachrichtenbeispiel:
{ "method": "tools/list", "params": {} }
tools/call
Ein spezifisches Tool mit bereitgestellten Argumenten ausführen
Nachrichtenbeispiel:
{ "method": "tools/call", "params": { "name": "com.example.weather/current", "arguments": { "location": "San Francisco", "units": "imperial" } } }
resources/list
Liste der verfügbaren Ressourcen abrufen
Nachrichtenbeispiel:
{ "method": "resources/list", "params": {} }
resources/read
Spezifischen Ressourceninhalt lesen
Nachrichtenbeispiel:
{ "method": "resources/read", "params": { "uri": "file:///path/to/file.ts" } }
prompts/list
Verfügbare Prompt-Vorlagen abrufen
Nachrichtenbeispiel:
{ "method": "prompts/list", "params": {} }
notifications/tools/list_changed
Client benachrichtigen, wenn sich verfügbare Tools ändern
Nachrichtenbeispiel:
{ "method": "notifications/tools/list_changed" }
Tool-Definitionsbeispiel
Beispiel dafür, wie Tools im MCP-Protokoll definiert werden
Wetter-Tool-Definition
Dieses Beispiel zeigt, wie ein Wetter-Tool mit ordnungsgemäßer Eingabeschema-Validierung und Dokumentation definiert wird.
// MCP 工具定义示例 { "name": "com.example.weather/current", "title": "Get Current Weather", "description": "Get current weather information for a specified location", "inputSchema": { "type": "object", "properties": { "location": { "type": "string", "description": "The location to get weather for" }, "units": { "type": "string", "enum": ["metric", "imperial"], "description": "Temperature units", "default": "metric" }, "include_forecast": { "type": "boolean", "description": "Whether to include forecast data", "default": false } }, "required": ["location"] } }
Schlüsselkomponenten:
- name: Eindeutige Kennung für das Tool
- title: Menschenlesbarer Anzeigename
- description: Detaillierte Erklärung der Funktionalität
- inputSchema: JSON Schema für Eingabevalidierung
Bewährte Praktiken:
- Verwenden Sie Namensraum-Tool-Namen (z.B. com.example.weather/current)
- Klare, beschreibende Dokumentation bereitstellen
- Umfassende Eingabeschemas definieren
- Standardwerte wo angemessen einschließen
Kommunikationsfluss
Vollständiger Kommunikationsfluss zwischen MCP-Clients und -Servern
Verbindung Initialisieren
Client stellt Verbindung her und verhandelt Fähigkeiten mit dem Server
Detaillierte Schritte:
- Client sendet Initialisierungsanfrage mit Protokollversion
- Server antwortet mit unterstützten Fähigkeiten
- Beide Parteien verhandeln Kommunikationsparameter
- Verbindung mit vereinbarter Protokollversion hergestellt
Fähigkeitserkennung
Client entdeckt verfügbare Tools, Ressourcen und Prompts
Detaillierte Schritte:
- Liste verfügbarer Tools anfordern (tools/list)
- Verfügbare Ressourcen anfordern (resources/list)
- Verfügbare Prompts anfordern (prompts/list)
- Fähigkeitsinformationen für effizienten Zugriff zwischenspeichern
Kontext-Austausch
Client fordert kontextuelle Daten von Ressourcen an und empfängt sie
Detaillierte Schritte:
- Ressourcen-Leseanfragen senden (resources/read)
- Strukturierte Daten in verschiedenen Formaten empfangen
- Datenformat-Konvertierung nach Bedarf verarbeiten
- Lokalen Kontext mit empfangenen Informationen aktualisieren
Tool-Ausführung
Client ruft Server-Tools auf, um Aktionen durchzuführen
Detaillierte Schritte:
- Tool-Aufruf-Anfragen konstruieren (tools/call)
- Erforderliche Parameter mit ordnungsgemäßer Validierung übergeben
- Auf Ausführungsergebnisse vom Server warten
- Zurückgegebene Daten verarbeiten und Fehler behandeln
Echtzeit-Updates
Synchronisation durch Benachrichtigungen aufrechterhalten
Detaillierte Schritte:
- Auf Ressourcenänderungs-Benachrichtigungen hören
- Tool-Listen-Updates dynamisch handhaben
- Verbindungsunterbrechungen elegant verarbeiten
- Verbindungen bei Bedarf wiederherstellen
Sicherheitsfeatures
Sicherheitsmechanismen und Schutzmaßnahmen im MCP-Protokoll
Authentifizierung
Mehrere Authentifizierungsmechanismen unterstützt
Unterstützte Methoden:
- API-Schlüssel-Authentifizierung
- OAuth 2.0-Flows
- Bearer-Token
- Benutzerdefinierte Authentifizierungs-Header
Autorisierung
Feinkörnige Berechtigungsverwaltung
Unterstützte Methoden:
- Ressourcen-Ebene Berechtigungen
- Operationstyp-Beschränkungen
- Zeitbasierte Zugriffskontrolle
- Ratenbegrenzung und Kontingente
Datenschutz
Ende-zu-Ende-Datensicherheit
Unterstützte Methoden:
- TLS/SSL-Transport-Verschlüsselung
- Nachrichteninhalt-Verschlüsselung
- Maskierung sensibler Daten
- Sichere Schlüsselverwaltung
Audit & Überwachung
Umfassende Operationsverfolgung
Unterstützte Methoden:
- Anfrage/Antwort-Protokollierung
- Berechtigungsprüfungs-Aufzeichnungen
- Fehler- und Ausnahme-Verfolgung
- Leistungsmetriken-Sammlung
Erste Schritte
Bereit, MCP mit Gemini CLI zu verwenden? Erkunden Sie diese Ressourcen