Wird geladen

Das Erstellen eines MCP-Servers wird viel einfacher, wenn du das offizielle Python-SDK verwendest. Anstatt komplexe JSON-Schemas von Hand zu schreiben, kannst du Tools mit Decorators definieren und das SDK die Schwerstarbeit erledigen lassen.

Die Lese- und Aktualisierungs-Tools unseres MCP-Servers, verbunden mit vier Dateien: document.pdf, spreadsheet.xlsx, report.txt und spec.md.

In diesem Beispiel erstellen wir einen Dokumentenverwaltungsserver mit zwei Kern-Tools: eines zum Lesen von Dokumenten und ein weiteres zum Aktualisieren. Alle Dokumente existieren im Speicher als einfaches Dictionary, bei dem die Schlüssel Dokument-IDs und die Werte der Inhalt sind.

Das Projekt beschaffen

Die Lektionen in diesem Kurs bauen auf einem kleinen Startprojekt auf, einem Kommandozeilen-Chatbot mit einem MCP-Client und einem MCP-Server. Lade cli_project.zip aus dem Downloads-Bereich am Ende dieser Lektion herunter und entpacke es in dein bevorzugtes Entwicklungsverzeichnis. Öffne deinen Code-Editor im Projektordner.

Das Projekt enthält eine README-Datei mit Einrichtungsanweisungen. Füge deinen Anthropic-API-Key zur .env-Datei hinzu. Installiere dann die Abhängigkeiten entweder mit uv (empfohlen) oder pip. Das Projekt verwendet Version 1 des MCP Python SDK, und dessen Einrichtung installiert diese Version für dich.

Den MCP-Server einrichten

Das MCP Python SDK macht die Servererstellung unkompliziert. Öffne mcp_server.py. Es initialisiert bereits einen Server mit nur einer Zeile. Die untenstehenden Tools benötigen außerdem den Field-Import:

python
from mcp.server.fastmcp import FastMCP
from pydantic import Field

mcp = FastMCP("DocumentMCP", log_level="ERROR")

Deine Dokumente können in einer einfachen Dictionary-Struktur gespeichert werden:

python
docs = {
    "deposition.md": "This deposition covers the testimony of Angela Smith, P.E.",
    "report.pdf": "The report details the state of a 20m condenser tower.",
    "financials.docx": "These financials outline the project's budget and expenditures",
    "outlook.pdf": "This document presents the projected future performance of the system",
    "plan.md": "The plan outlines the steps for the project's implementation.",
    "spec.txt": "These specifications define the technical requirements for the equipment"
}

Tool-Definition mit Decorators

Das SDK verwendet Decorators, um Tools zu definieren. Anstatt JSON-Schemas manuell zu schreiben, kannst du Python-Type-Hints und Feldbeschreibungen verwenden. Das SDK generiert automatisch das passende Schema, das Claude verstehen kann.

Ein Dokumentenleser-Tool erstellen

Das erste Tool liest Dokumentinhalte anhand der ID. Hier ist die vollständige Implementierung:

python
@mcp.tool(
    name="read_doc_contents",
    description="Read the contents of a document and return it as a string."
)
def read_document(
    doc_id: str = Field(description="Id of the document to read")
):
    if doc_id not in docs:
        raise ValueError(f"Doc with id {doc_id} not found")
    
    return docs[doc_id]

Der Decorator gibt den Tool-Namen und die Beschreibung an, während die Funktionsparameter die erforderlichen Argumente definieren. Die Field-Klasse von Pydantic liefert Argumentbeschreibungen, die Claude helfen zu verstehen, was jeder Parameter erwartet.

Ein Dokumenteneditor-Tool erstellen

Das zweite Tool führt einfache Suchen-und-Ersetzen-Operationen an Dokumenten durch:

python
@mcp.tool(
    name="edit_document",
    description="Edit a document by replacing a string in the documents content with a new string."
)
def edit_document(
    doc_id: str = Field(description="Id of the document that will be edited"),
    old_str: str = Field(description="The text to replace. Must match exactly, including whitespace."),
    new_str: str = Field(description="The new text to insert in place of the old text.")
):
    if doc_id not in docs:
        raise ValueError(f"Doc with id {doc_id} not found")
    
    docs[doc_id] = docs[doc_id].replace(old_str, new_str)

Dieses Tool nimmt drei Parameter entgegen: die Dokument-ID, den zu suchenden Text und den Ersatztext. Die Implementierung enthält eine Fehlerbehandlung für fehlende Dokumente und führt eine einfache String-Ersetzung durch.

Wichtige Vorteile des SDK-Ansatzes

  • Kein manuelles Schreiben von JSON-Schemas erforderlich
  • Type-Hints bieten automatische Validierung
  • Klare Parameterbeschreibungen helfen Claude, die Tool-Nutzung zu verstehen
  • Fehlerbehandlung integriert sich natürlich mit Python-Exceptions
  • Die Tool-Registrierung erfolgt automatisch über Decorators

Das MCP Python SDK verwandelt die Tool-Erstellung von einer komplexen Schema-Schreibübung in einfache Python-Funktionsdefinitionen. Dieser Ansatz macht es viel einfacher, MCP-Server zu erstellen und zu pflegen, während gleichzeitig sichergestellt wird, dass Claude ordnungsgemäß formatierte Tool-Spezifikationen erhält.

Downloads

  • Starter project (cli_project.zip)

    The chatbot project you build on for the rest of this course.

    Herunterladen
  • Completed project (cli_project_COMPLETE.zip)

    The finished version, for checking your work.

    Herunterladen