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/listtools/callRessourcen
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/listresources/readPrompts
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/listprompts/getTransport-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/filesDateisystem-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/mcpVerbindung 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