Model Context Protocol Einführung

Tiefgehende Einblicke in das Model Context Protocol (MCP)

Protokoll-Spezifikation40 Min. Lesezeit

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/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/listresources/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/listprompts/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

Client → Server

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

Client → Server

Nachrichtenbeispiel:

{
  "method": "tools/list",
  "params": {}
}

tools/call

Ein spezifisches Tool mit bereitgestellten Argumenten ausführen

Client → Server

Nachrichtenbeispiel:

{
  "method": "tools/call",
  "params": {
    "name": "com.example.weather/current",
    "arguments": {
      "location": "San Francisco",
      "units": "imperial"
    }
  }
}

resources/list

Liste der verfügbaren Ressourcen abrufen

Client → Server

Nachrichtenbeispiel:

{
  "method": "resources/list",
  "params": {}
}

resources/read

Spezifischen Ressourceninhalt lesen

Client → Server

Nachrichtenbeispiel:

{
  "method": "resources/read",
  "params": {
    "uri": "file:///path/to/file.ts"
  }
}

prompts/list

Verfügbare Prompt-Vorlagen abrufen

Client → Server

Nachrichtenbeispiel:

{
  "method": "prompts/list",
  "params": {}
}

notifications/tools/list_changed

Client benachrichtigen, wenn sich verfügbare Tools ändern

Server → Client

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

1

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
2

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
3

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
4

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
5

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