Wird geladen

MCP-Server können Prompts definieren - vorgefertigte, hochwertige Anweisungen, die Clients verwenden können, anstatt ihre eigenen Prompts von Grund auf zu schreiben. Stell dir Prompts als sorgfältig erstellte Vorlagen vor, die bessere Ergebnisse liefern als das, was Nutzer möglicherweise selbst schreiben würden.

Warum Prompts verwenden?

Angenommen, du möchtest, dass Claude ein Dokument in Markdown umformatiert. Du könntest einfach fragen „Konvertiere report.pdf in Markdown" und es würde gut funktionieren. Aber du würdest wahrscheinlich viel bessere Ergebnisse mit einem gründlich getesteten, detaillierten Prompt erzielen, der Grenzfälle abdeckt und spezifische Formatierungsanweisungen gibt.

Die Idee ist einfach: Als MCP-Server-Entwickler können wir Zeit damit verbringen, wirklich gute Prompts zu erstellen und zu testen, und sie dann jedem zur Verfügung stellen, der unseren Server nutzt. Nutzer erhalten bessere Ergebnisse, ohne selbst zu Experten im Prompt Engineering werden zu müssen.

Einen Prompt definieren

Prompts verwenden ein ähnliches Decorator-Muster wie Tools und Ressourcen. Hier ist die grundlegende Struktur:

python
@mcp.prompt(
    name="format",
    description="Rewrites the contents of the document in Markdown format."
)
def format_document(
    doc_id: str = Field(description="Id of the document to format")
) -> list[base.Message]:
    # Gib eine Liste von Nachrichten zurück

Die Funktion gibt eine Liste von Nachrichten zurück, die direkt an Claude gesendet werden können. Dies ermöglicht es dir, bei Bedarf komplexe Prompts mit mehreren Nutzer- und Assistenten-Nachrichten zu erstellen.

Den Format-Prompt erstellen

Für unseren Dokumentenserver erstellen wir einen Prompt, der Dokumente in Markdown umformatiert. Der Prompt muss:

  • Eine Dokument-ID als Eingabe entgegennehmen
  • Das Tool read_doc_contents verwenden, um das Dokument abzurufen
  • Es mit korrekter Markdown-Syntax umformatieren
  • Die Änderungen zurück in das Dokument speichern

So sieht die Implementierung aus:

python
def format_document(
    doc_id: str = Field(description="Id of the document to format")
) -> list[base.Message]:
    prompt = f"""
Your goal is to reformat a document to be written with markdown syntax.

The id of the document you need to reformat is:

{doc_id}


Add in headers, bullet points, tables, etc as necessary. Feel free to add in structure.
Use the 'edit_document' tool to edit the document. After the document has been reformatted...
"""
    
    return [
        base.UserMessage(prompt)
    ]

Den Prompt testen

Sobald du deinen Prompt definiert hast, kannst du ihn mit dem MCP Inspector testen. Navigiere zum Tab „Prompts", wähle deinen Prompt aus und gib die erforderlichen Parameter an.

Der Inspector zeigt dir die generierten Nachrichten an, die an Claude gesendet würden. Du kannst überprüfen, ob die Parameterinterpolation korrekt funktioniert und ob dein Prompt alle notwendigen Anweisungen enthält.

Wichtige Vorteile

  • Qualitätskontrolle - Server-Autoren können Prompts testen und verfeinern, bevor Nutzer sie sehen
  • Konsistenz - Alle erhalten den gleichen hochwertigen Prompt, anstatt zu improvisieren
  • Spezialisierung - Prompts können auf den spezifischen Bereich und die Fähigkeiten deines Servers zugeschnitten werden
  • Wiederverwendbarkeit - Mehrere Client-Anwendungen können dieselben gut erstellten Prompts verwenden

Denke daran, das Basismodul für Nachrichtentypen zu importieren:

python
from mcp.server.fastmcp.prompts import base

Prompts sind besonders wertvoll, wenn dein MCP-Server einen spezifischen Schwerpunktbereich hat - wie Dokumentenverwaltung, Datenanalyse oder Codegenerierung. Du kannst Nutzern bewährte Prompts zur Verfügung stellen, die die Tools deines Servers effektiv nutzen.