MCP-Tutorial für Anfänger
MCP steht für Model Context Protocol, ein offenes Standardprotokoll, das verwendet wird, um zu standardisieren, wie KI-Anwendungen eine Verbindung zu externen Tools und Datenquellen herstellen.
MCP ist wie USB-C: Es ermöglicht verschiedenen Geräten, sich über dieselbe Schnittstelle zu verbinden.

Bevor es MCP gab, musste jedes Mal, wenn ein neues Tool (wie GitHub, Slack oder eine Datenbank) integriert wurde, jede KI-Anwendung ihren eigenen Satz Integrationscode schreiben, was zumN × M-Integrationsproblemführte (N KI-Anwendungen × M Tools = N×M Code-Sätze).
Mit MCP muss der Tool-Anbieter nur einen einzigen MCP-Server nach dem Standard erstellen, und jede KI-Anwendung, die MCP unterstützt, kann ihn direkt nutzen – das wird zu1 Server + kompatibel mit allen Hosts。
Das folgende Diagramm zeigt intuitiv den Unterschied zwischen traditioneller N×M-Integration und MCP-standardisierter Integration:
Im Dezember 2025 wurde MCP von Anthropic an die Agentic AI Foundation (AAIF) unter der Linux Foundation gespendet und wurde damit ein offener Standard, der von der Branche gemeinsam genutzt wird. Anbieter wie OpenAI und Block beteiligen sich gemeinsam an seiner Governance.
Entwicklungszeitleiste
| Zeit | Meilenstein |
|---|---|
| Vor 2023 | OpenAI startete Function Calling und das ChatGPT-Plugin-Framework, aber beide waren anbieterspezifische Formate, die an eine einzige Plattform gebunden waren. |
| November 2024 | Anthropic veröffentlichte MCP, das modellagnostisch und anbieterneutral ist; jedes Modell kann denselben Server verwenden. |
| März 2025 | OpenAI hat offiziell die Unterstützung für MCP angekündigt. |
| Mitte 2025 | Hinzugefügte Funktionen wie Streamable-HTTP-Transport, OAuth-2.1-Autorisierung und Elicitation (Informationselizitation); MCP entwickelt sich in Richtung produktionsreifer Remote-Dienste. |
| Dezember 2025 | Die Protokoll-Governance wurde an AAIF (Linux Foundation) übertragen, wodurch eine Phase der Multi-Vendor-Co-Governance eingeleitet wurde. |
| 2026 | Der Kern entwickelt sich in Richtung Zustandslosigkeit und ergänzt Erweiterungsfunktionen wie Tasks (lang laufende Aufgaben) und MCP Apps (interaktive UI). |
Kernarchitektur: Host / Client / Server
MCP orientiert sich am Designansatz von LSP (Language Server Protocol, ein Protokoll, das Editoren eine einheitliche Unterstützung für Programmiersprachen bietet) und definiert drei Rollen:
| Rolle | Beschreibung | Beispiel |
|---|---|---|
| Host | Die vom Benutzer direkt verwendete KI-Anwendung; verantwortlich für die Koordinierung mehrerer Clients und die Verwaltung von Konversationen. | Claude Code、Claude Desktop、Cursor、ChatGPT |
| Client | Eine interne Komponente des Hosts, die eine Eins-zu-eins-Verbindung mit einem bestimmten Server aufrechterhält und dafür verantwortlich ist, die Tool-Call-Anfragen des Modells in standardmäßige Protokollnachrichten zu übersetzen. | Der Host erstellt für jeden Server, zu dem er eine Verbindung herstellt, einen Client. |
| Server | Kapselt eine standardmäßige Protokollschicht, stellt die Fähigkeiten eines bestimmten Tools oder einer Datenquelle bereit und kommuniziert nicht direkt mit dem großen Sprachmodell. | GitHub-API-Server, Datenbank-Server, Dateisystem-Server |
Die Beziehung der Dreischichtenarchitektur ist im folgenden Diagramm dargestellt:
Die zugrunde liegende Kommunikation verwendet einheitlich dasJSON-RPC 2.0Nachrichtenformat, wodurch eine standardisierte Interaktion zwischen verschiedenen Rollen gewährleistet wird.
Detaillierte Erläuterung des MCP-Kommunikationsablaufs
Am Beispiel "der Nutzer bittet die KI, das Wetter zu prüfen" läuft ein vollständiger Tool-Aufrufprozess wie folgt ab:

Der Prozess ist in sieben Schritte unterteilt:
- Nutzer stellt eine Frage: Der Nutzer gibt "Prüfe das Wetter in Peking für mich" im Host (z. B. Claude Code) ein.
- Modell entscheidet: Das im Host integrierte große Sprachmodell analysiert die Frage, stellt fest, dass das Wetterabfrage-Tool aufgerufen werden muss, und sendet die Aufrufabsicht an den Client.
- Protokollübersetzung: Der Client wandelt die Tool-Aufrufanforderung in eine Nachricht im JSON-RPC 2.0-Format um und sendet sie an den entsprechenden Server.
- Server führt aus: Nach Erhalt der Anfrage führt der Server die eigentliche Operation aus (z. B. Aufrufen einer Wetter-API oder Abfragen einer Datenbank).
- Ergebnis zurückgeben: Der Server gibt das Ergebnis im JSON-RPC-Format an den Client zurück.
- Zurück an das Modell übergeben: Der Client übergibt das Ergebnis zurück an den Host, damit das Modell es in seine Antwort einbezieht.
- Dem Benutzer antworten: Das Modell integriert die vom Tool zurückgegebenen Daten in natürliche Sprache und gibt die endgültige Antwort aus.
Während des gesamten Prozesses ist dem Server die Existenz des großen Sprachmodells völlig unbekannt—er verarbeitet nur JSON-RPC-Nachrichten. Dies ist das entscheidende Design, das MCP modellunabhängig macht.
Drei zentrale Primitive
Ein MCP-Server kann drei Arten von Fähigkeiten nach außen bereitstellen, die als „Primitives“ bezeichnet werden:
| Primitiv | Definition | Typische Anwendungsfälle |
|---|---|---|
| Werkzeuge | Ausführbare Aktionen, die das Modell proaktiv aufrufen kann und die Nebenwirkungen erzeugen (z. B. das Schreiben von Daten oder das Senden von Nachrichten). | E-Mails senden, Tickets erstellen, Datenbankabfragen ausführen, Dateien manipulieren |
| Ressourcen | Schreibgeschützte Daten, die dem Modell als Kontext zum Lesen bereitgestellt werden; beinhaltet keine Ausführung. | Inhalte von Logdateien, Datenbanktabellen-Snapshots, API-Dokumentation |
| Prompts | Vorgefertigte, wiederverwendbare Prompt-Vorlagen, die Benutzer oder Anwendungen direkt aufrufen können. | "Hilf mir, die wichtigsten Klauseln dieses Vertrags zusammenzufassen", "Analysiere die Leistungsprobleme dieses Codes" |
Darüber hinaus gibt es zwei fortgeschrittene Mechanismen:
- Sampling: Der Server kann wiederum das Modell des Hosts bitten, Inhalte für ihn zu generieren, wodurch eine Rollenumkehr erreicht wird.
- Elicitation: Wenn der Server mitten in der Ausführung feststellt, dass Informationen unzureichend sind, kann er den Benutzer proaktiv um Klärung bitten, zum Beispiel: "Nach welchem Datum soll ich filtern?"
Wenn du gerade anfängst, kannst du dich zunächst auf Tools und Resources konzentrieren. Es ist nicht zu spät, später mehr über Prompts, Sampling und Elicitation zu lernen, wenn du sie brauchst.
Transportmethoden
MCP unterstützt zwei Transportmethoden, die für unterschiedliche Szenarien geeignet sind:
| Transportmethode | Geeignete Szenarien | Eigenschaften |
|---|---|---|
| stdio (Standardeingabe/-ausgabe) | Lokale Tools; der Host startet den Server als Unterprozess. | Am einfachsten; keine Netzwerkkonfiguration erforderlich; geeignet für lokale Tools auf einem Personal Computer. |
| Streamable HTTP | Remote-Produktionsumgebungen; der Server wird als HTTPS-Dienst bereitgestellt. | Unterstützt gleichzeitige Verbindungen und horizontale Skalierung, kombiniert mit OAuth 2.1 zur Authentifizierung. |
Für persönliches Lernen und lokale Entwicklung ist die Verwendung vonstdioausreichend.
Für Unternehmensszenarien, die eine gemeinsame Nutzung durch mehrere Benutzer erfordern, verwenden SieStreamable HTTP。
Alle Demonstrationsfälle in diesem Tutorial verwenden die stdio-Methode.
Sicherheitshinweise
MCP verleiht der KI die Fähigkeit, Code auszuführen und auf reale Systeme zuzugreifen, daher sind Sicherheitsrichtlinien besonders wichtig:
- Tool-Beschreibungen selbst sind nicht vertrauenswürdig: Sofern sie nicht von einem vertrauenswürdigen Server stammen, können Funktionsbeschreibungen böswillig manipuliert werden (Prompt-Injection-Risiko). Der Host sollte in Bezug auf Tool-Beschreibungen wachsam bleiben.
- Ausdrückliche Benutzereinwilligung muss eingeholt werden: Sensible Vorgänge dürfen nicht stillschweigend ausgeführt werden; jeder Tool-Aufruf sollte vom Benutzer bestätigt werden.
- Schutz in Produktionsumgebungen verstärken: Der Server sollte als OAuth-Ressourcenserver bereitgestellt werden, kombiniert mit TLS-Verschlüsselung, Zugriffskontrolle und Protokollauditierung.
- Drittanbieter-Server müssen überprüft werden: Bestätigen Sie vor der Verwendung, dass die Quelle vertrauenswürdig ist, und verwenden Sie bei Bedarf Sandbox-Isolierung.
Praktische Demo: Claude Code mit einem MCP-Server verbinden
Nachfolgend finden Sie zwei vollständige Beispiele, die zeigen, wie man einen MCP-Server schreibt und ihn mit Claude Code verbindet.
Das erste Beispiel verwendet Python, um einen Wetterabfragedienst zu schreiben, und das zweite verwendet Node.js/TypeScript, um eine Todo-Listen-Verwaltung zu schreiben.
Fall 1: Python-Wetterabfrage-Server
Ziel: Einen MCP-Server schreiben, der ein Wetterabfrage-Tool bereitstellt, das über Claude Code aufgerufen wird.
Umgebungsvorbereitung
pip install mcp httpx
Zwei Python-Pakete müssen installiert werden:mcpIst das offizielle MCP Python SDK,httpxWird verwendet, um HTTP-Anfragen zum Aufrufen der Wetter-API zu stellen.
Schreiben des Servercodes
Erstellen Sie die Dateiweather_server.py:
Beispiel
from mcp.server.fastmcp import FastMCP
import httpx
# Eine MCP-Server-Instanz namens "weather" erstellen
# FastMCP bietet eine High-Level-API, die die Serverentwicklung vereinfacht
mcp = FastMCP("weather")
@mcp.tool()
async def get_weather(city: str) -> str:
"""Fragt das aktuelle Wetter für die angegebene Stadt ab.
Argumente:
city: Stadtname, unterstützt Chinesisch oder Englisch, z. B. "Beijing" oder "Shanghai"
"""
# Verwende die kostenlose Wetter-API von wttr.in, keine API-Schlüssel-Registrierung erforderlich
# Der format-Parameter gibt das Rückgabeformat an: %C=Wetterbedingung, %t=Temperatur
url = f"https://wttr.in/{city}?format=%C+%t"
async with httpx.AsyncClient() as client:
resp = await client.get(url, timeout=10)
resp.raise_for_status()
return f"{city} aktuelles Wetter: {resp.text.strip()}"
@mcp.resource("weather://cities/supported")
def supported_cities() -> str:
"""Gibt die Liste der derzeit unterstützten abfragbaren Städte zurück (Beispiel für eine schreibgeschützte Ressource)."""
return "Beijing, Shanghai, Guangzhou, Shenzhen, Hangzhou, Chengdu, Beispiel"
if __name__ == "__main__":
# stdio-Transport verwenden, damit Claude Code es als Subprozess aufrufen kann
mcp.run(transport="stdio")
Code-Erklärung:
- @mcp.tool(): Registriert die Funktion als Tool; der Docstring wird dem LLM automatisch als Tool-Beschreibung bereitgestellt, wodurch das Modell entscheiden kann, wann es sie aufrufen soll.
- @mcp.resource(): Registriert die Funktion als Resource, die das Modell bei Bedarf lesen kann; dabei geht es nicht um "Ausführung", sondern nur um "Nachschlagen".
- mcp.run(transport="stdio"): Kommuniziert mit dem Host über Standardeingabe/-ausgabe, die gebräuchlichste Methode für lokale Tools.
Lokales Debugging (optional, aber empfohlen)
Bevor Sie eine Verbindung zu Claude Code herstellen, verwenden Sie das offizielle MCP Inspector-Tool, um den Server zu debuggen und zu bestätigen, dass er ordnungsgemäß funktioniert:
npx @modelcontextprotocol/inspector python weather_server.py
Nach der Ausführung öffnet sich automatisch eine Web-Debugging-Oberfläche, in der Sie sehen können, welche Tools und Resources der Server bereitstellt, und sie zum Testen manuell aufrufen können.

Es wird empfohlen, jedes Mal den Inspector-Debugging-Prozess zu durchlaufen, um Codeprobleme zu beheben, bevor Sie eine Verbindung zu einem echten KI-Assistenten herstellen, was viel Debugging-Zeit sparen kann.
Konfigurieren des MCP-Servers in Claude Code
Methode 1: Es direkt von der KI hinzufügen lassen
Wir können Claude direkt starten:
claude
Geben Sie die folgenden Informationen ein und lassen Sie Claude sie für uns konfigurieren und hinzufügen:
添加 @weather_server.py 这个 MCP 服务

Dies ist die einfachste Variante; nach Eingabe des Prompts werden Konfiguration und Abhängigkeiten automatisch abgeschlossen.

Sie können sehen, dass die Konfigurationsinformationen automatisch in der Datei .mcp.json im aktuellen Verzeichnis generiert wurden:

Nach Abschluss der Konfiguration fragen Sie direkt in Claude Code:
Help me check the current weather in Beijing

Wenn Sie lieber selbst herumexperimentieren möchten, können Sie auch das Hinzufügen per Befehlszeile und die Dateikonfiguration verwenden.
Methode 2: Hinzufügen über die Befehlszeile
Beachten Sie, dass der Befehl und die Dateipfade von Ihnen selbst geändert werden müssen:
claude mcp add weather python /Users/example/example-test/weather_server.py
Die Bedeutung dieses Befehls:
- claude mcp add: Der MCP-Verwaltungsunterbefehl von Claude Code.
- weather: Geben Sie diesem MCP-Server einen Namen für die spätere Verwendung.claude mcp listSo können Sie es sehen.
- python: Der Befehl zum Starten des Servers.
- /Users/.../weather_server.py: Der absolute Pfad zum Server-Skript.
Nach erfolgreichem Hinzufügen können Sie den folgenden Befehl verwenden, um die verbundenen MCP-Server anzuzeigen:
claude mcp list
Beispielausgabe:
NAME STATUS COMMAND weather active python /Users/example/example-test/weather_server.py
Zum Entfernen eines Servers:
$ claude mcp remove weather
Methode 3: Konfigurationsdatei (geeignet für Team-Sharing)
Erstellen Sie sie im Projektstammverzeichnis als.mcp.jsonDatei:
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["/Users/example/example-test/weather_server.py"]
}
}
}
Nach dem Speichern starten Sie Claude Code neu (oder öffnen Sie das Projekt erneut), und die Konfiguration wird wirksam.
Der Vorteil des Konfigurationsdatei-Ansatzes besteht darin, dass er im Git-Repository committet werden kann und Teammitglieder nach dem Klonen des Projekts automatisch dieselbe MCP-Server-Konfiguration erhalten.
Wenn ein MCP-Server auf Benutzerebene konfiguriert ist (gespeichert in ~/.claude/mcp.json), gilt er für alle Projekte. Die projektweite .mcp.json gilt nur für das aktuelle Projekt.
Tatsächliche Verwendung
Nach Abschluss der Konfiguration fragen Sie direkt in Claude Code:
> Help me check the current weather in Beijing
Claude Code wird automatisch:
- Erkennen, dass das get_weather-Tool des Wetter-Servers aufgerufen werden muss.
- Einen Autorisierungsbestätigungsdialog einblenden, in dem gefragt wird, ob der Aufruf erlaubt werden soll.
- Nachdem Sie auf Zustimmen geklickt haben, ruft es den Server auf, um die Wetterdaten abzurufen.
- Integriere die Ergebnisse in eine Antwort in natürlicher Sprache.
Dies ist der vollständige geschlossene Kreislauf vom Modell zu realen Daten.
Fall 2: Node.js/TypeScript Todo-Server
Wenn du mit dem JavaScript/TypeScript-Ökosystem besser vertraut bist, findest du hier ein MCP-Server-Beispiel in Node.js.
Umgebungsvorbereitung
npm install @modelcontextprotocol/sdk zod
Schreiben des Servercodes
Erstelle die Dateitodo_server.ts:
Beispiel
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
// Eine MCP-Server-Instanz erstellen, Name und Versionsnummer festlegen
const server = new McpServer({
name: "todo-list",
version: "1.0.0"
});
// Ein Array verwenden, um den Todo-Speicher zu simulieren (kann in realen Projekten durch eine Datenbank ersetzt werden)
const todos: string[] = [];
// Das erste Tool registrieren: ein Todo-Element hinzufügen
server.tool(
"add_todo", // Tool-Name
"Ein Todo-Element hinzufügen", // Tool-Beschreibung (das Modell verwendet sie, um zu bestimmen, wann es aufgerufen werden soll)
{
// Parameterschema, definiert mit Zod, generiert automatisch JSON Schema
item: z.string().describe("Todo-Inhalt")
},
async ({ item }) => {
todos.push(item);
return {
content: [{
type: "text",
text:`Hinzugefügt:"${item}", aktuell insgesamt ${todos.length}Todo-Elemente`
}]
};
}
);
// Zweites Tool registrieren: alle Todos auflisten
server.tool(
"list_todos",
"Alle Todo-Einträge auflisten",
{}, // Keine Parameter
async () => {
const text = todos.length
? todos.map((t, i) => `${i + 1}. ${t}`).join("\n")
: "Noch keine Todo-Einträge";
return {
content: [{ type: "text", text }]
};
}
);
// Server mit stdio-Transport starten
const transport = new StdioServerTransport();
await server.connect(transport);
Die Verbindung zu Claude Code funktioniert genauso wie in der Python-Version.
Wir können Claude direkt starten:
claude
Geben Sie die folgenden Informationen ein und lassen Sie Claude sie für uns konfigurieren und hinzufügen:
添加 @todo_server.ts 这个 MCP 服务
Sage dann in der Unterhaltung "Füge für mich ein Todo hinzu: kaufe das Beispiel-Tutorial", und Claude Code ruft das Tool add_todo auf.
Bestehendes Ökosystem: Du musst nicht alles selbst schreiben
Seit der Veröffentlichung von MCP hat die Community über 500 öffentliche Server veröffentlicht, die die überwiegende Mehrheit der gängigen Szenarien abdecken:
| Kategorie | Vorgefertigte MCP-Server-Beispiele |
|---|---|
| Code-Hosting | GitHub, GitLab, Bitbucket |
| Instant Messaging | Slack, Discord |
| Cloud Storage | Google Drive, OneDrive |
| Datenbank | PostgreSQL, MySQL, SQLite, MongoDB |
| Web-Automatisierung | Puppeteer, Playwright |
| Wissensmanagement | Notion, Obsidian |
| Dateisystem | Dateisystem (lokales Lesen/Schreiben von Dateien) |
Das offizielle SDK deckt die folgenden Programmiersprachen ab: TypeScript, Python, C#, Java, Swift.
In der tatsächlichen Entwicklung können Sie für die meisten Szenarien einfach einen vorhandenen Server finden und verwenden. Nur wenn Sie eine Verbindung zu internen Unternehmenssystemen oder privaten Datenbanken herstellen, müssen Sie Ihren eigenen MCP Server schreiben.
FAQ
| Frage | Antwort |
|---|---|
| Wird MCP Function Calling ersetzen? | Nein. Function Calling ist der zugrunde liegende Mechanismus, mit dem Modelle Tools aufrufen. MCP legt einen standardisierten Protokollrahmen um diesen Mechanismus und ermöglicht es Modellen verschiedener Anbieter, dieselben Tooldefinitionen zu verwenden. Die Beziehung zwischen beiden ist „Standardisierung“ und nicht „Ersetzung“. |
| Kann ein Server gleichzeitig von mehreren KI-Anwendungen verwendet werden? | Ja, und genau das ist der Kernwert von MCP — schreiben Sie einen Server einmal, und jeder MCP-kompatible Host (Claude Code, Claude Desktop, Cursor, ChatGPT usw.) kann ihn verwenden. |
| Muss man Code schreiben, um MCP zu verwenden? | Wenn Sie nur einen MCP Server verwenden, der von jemand anderem erstellt wurde, müssen Sie überhaupt keinen Code schreiben — konfigurieren Sie ihn einfach mit dem Befehl claude mcp add in Claude Code. Nur wenn Sie Ihren eigenen Server entwickeln, müssen Sie Code schreiben. |
| Wie wählt man zwischen stdio und Streamable HTTP? | Für die persönliche Nutzung und lokale Tools wählen Sie stdio (ohne Konfiguration); für Team-Sharing und Produktions-Deployment wählen Sie Streamable HTTP (erfordert die Konfiguration von HTTPS und OAuth). |
Referenzen
- Offizielle Dokumentation:https://modelcontextprotocol.io
- Offizielle Spezifikation:https://modelcontextprotocol.io/specification
- Offizielles GitHub (enthält SDKs und Referenzimplementierungen in verschiedenen Sprachen):https://github.com/modelcontextprotocol
- MCP-Protokoll:https://www.example.com/np/mcp-protocol.html
- Debugging-Tool Inspector:npx @modelcontextprotocol/inspector