Wird geladen

Das Erstellen eines MCP-Servers wird viel einfacher, wenn du das offizielle Python-SDK verwendest. Anstatt komplexe JSON-Schemas für Tools manuell zu schreiben, übernimmt das SDK diese ganze Komplexität für dich mit Decorators und Type Hints.

Unser MCP-Server mit Tools zum Lesen und Aktualisieren eines Dokuments, verbunden mit document.pdf, spreadsheet.xlsx, report.txt und spec.md.

In diesem Beispiel erstellen wir einen MCP-Server, der Dokumente verwaltet, die im Speicher abgelegt sind. Der Server stellt zwei wesentliche Tools bereit: eines zum Lesen von Dokumentinhalten und ein weiteres zum Aktualisieren dieser Inhalte durch Suchen-und-Ersetzen-Operationen.

Einrichten des MCP-Servers

Das Python-MCP-SDK macht die Server-Erstellung unglaublich einfach. Du kannst einen vollständigen MCP-Server mit nur einer Zeile initialisieren:

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

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

Für diese Implementierung werden Dokumente in einem einfachen Python-Dictionary gespeichert, bei dem die Schlüssel Dokument-IDs sind und die Werte den Dokumentinhalt enthalten:

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 expenditure",
    "outlook.pdf": "This document presents the projected future performance of the",
    "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

Unser MCP-Server mit Tools zum Lesen und Aktualisieren eines Dokuments, verbunden mit document.pdf, spreadsheet.xlsx, report.txt und spec.md.

Das SDK verwandelt die Tool-Erstellung von einem umständlichen Prozess in etwas Sauberes und Lesbares. Anstatt lange JSON-Schemas zu schreiben, verwendest du Python-Decorators und Type Hints.

Erstellen des Dokument-Lese-Tools

Das erste Tool ermöglicht es Claude, jedes Dokument anhand seiner ID zu lesen. 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 @mcp.tool-Decorator generiert automatisch das JSON-Schema, das Claude benötigt. Die Field-Klasse von Pydantic liefert Parameterbeschreibungen, die Claude helfen zu verstehen, was jedes Argument erwartet.

Erstellen des Dokument-Editor-Tools

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 verwendet der Einfachheit halber die eingebaute String-Methode replace() von Python.

Fehlerbehandlung

Beide Tools enthalten eine grundlegende Fehlerbehandlung für Fälle, in denen Claude ein Dokument anfordert, das nicht existiert. Wenn eine ungültige Dokument-ID angegeben wird, lösen die Tools einen ValueError mit einer aussagekräftigen Meldung aus, die Claude verstehen und gegebenenfalls darauf reagieren kann.

Wesentliche Vorteile des SDK-Ansatzes

  • Automatische JSON-Schema-Generierung aus Python-Type-Hints
  • Sauberer, lesbarer Code, der leicht zu warten ist
  • Eingebaute Parametervalidierung durch Pydantic
  • Reduzierter Boilerplate-Code im Vergleich zum manuellen Schreiben von Schemas
  • Typsicherheit und IDE-Unterstützung für die Entwicklung

Das MCP-Python-SDK verwandelt das, was früher ein komplexer Prozess des Schreibens von Tool-Definitionen war, in etwas, das sich für Python-Entwickler natürlich anfühlt. Du konzentrierst dich auf die Geschäftslogik, während das SDK die Protokolldetails übernimmt.