Wird geladen

Ressourcen in MCP ermöglichen es deinem Server, Informationen bereitzustellen, die direkt in Prompts eingebunden werden können, anstatt Tool-Aufrufe zu erfordern, um auf Daten zuzugreifen. Dies schafft eine effizientere Möglichkeit, KI-Modellen Kontext bereitzustellen.

Sequenzdiagramm des Ressourcenzugriffs: ein Benutzer tippt „What's in the @..." in die CLI ein, unser Code sendet eine ReadResourceRequest an den MCP-Server, und der Server gibt ein ReadResourceResult mit dem Ressourceninhalt zurück

Das obige Diagramm zeigt, wie Ressourcen funktionieren: Wenn ein Benutzer etwas wie „What's in the @..." eingibt, erkennt unser Code dies als Ressourcenanfrage, sendet eine ReadResourceRequest an den MCP-Server und erhält ein ReadResourceResult mit dem tatsächlichen Inhalt zurück.

Implementierung des Ressourcenlesens

Um den Ressourcenzugriff in deinem MCP-Client zu ermöglichen, musst du eine read_resource-Funktion implementieren. Füge zunächst die notwendigen Imports hinzu:

python
import json
from pydantic import AnyUrl

Die Kernfunktion stellt eine Anfrage an den MCP-Server und verarbeitet die Antwort basierend auf ihrem MIME-Typ:

python
async def read_resource(self, uri: str) -> Any:
    result = await self.session().read_resource(AnyUrl(uri))
    resource = result.contents[0]

    if isinstance(resource, types.TextResourceContents):
        if resource.mimeType == "application/json":
            return json.loads(resource.text)

    return resource.text

Verständnis der Antwortstruktur

Wenn du eine Ressource anfragst, gibt der Server ein Ergebnis mit einer contents-Liste zurück. Wir greifen auf das erste Element zu, da wir in der Regel nur eine Ressource gleichzeitig benötigen. Die Antwort enthält:

  • Den tatsächlichen Inhalt (Text oder Daten)
  • Einen MIME-Typ, der uns mitteilt, wie der Inhalt zu parsen ist
  • Weitere Metadaten über die Ressource

Umgang mit Inhaltstypen

Die Funktion prüft den MIME-Typ, um zu bestimmen, wie der Inhalt verarbeitet werden soll:

  • Wenn es sich um application/json handelt, wird der Text als JSON geparst und das geparste Objekt zurückgegeben
  • Andernfalls wird der rohe Textinhalt zurückgegeben

Dieser Ansatz behandelt sowohl strukturierte Daten (wie JSON) als auch reine Textdokumente nahtlos.

Testen des Ressourcenzugriffs

Sobald implementiert, kannst du die Ressourcenfunktionalität über deine CLI-Anwendung testen. Wenn du „@" gefolgt von einem Ressourcennamen eingibst, wird das System:

  1. Verfügbare Ressourcen in einer Autocomplete-Liste anzeigen
  2. Dir ermöglichen, eine Ressource mit den Pfeiltasten und der Leertaste auszuwählen
  3. Den Ressourceninhalt direkt in deinen Prompt einbinden
  4. Alles an das KI-Modell senden, ohne zusätzliche Tool-Aufrufe zu erfordern

Dies schafft eine deutlich reibungslosere Benutzererfahrung im Vergleich dazu, dass das KI-Modell separate Tool-Aufrufe durchführt, um auf Dokumentinhalte zuzugreifen. Der Ressourceninhalt wird Teil des anfänglichen Kontexts, was sofortige Antworten zu den Daten ermöglicht.