LoslegenKostenlos starten

Resource und Prompt aus MCP abrufen

Dein Currency-Server stellt eine Resource (file://currencies.txt) und einen Prompt (convert_currency_prompt) bereit, die die Anfrage der Nutzerin bzw. des Nutzers mit aufgabenspezifischem Kontext und Regeln kombinieren. Damit ein LLM damit arbeiten kann, muss der Client beides in einem Rutsch abrufen. Implementiere eine Hilfsfunktion namens get_context_from_mcp(), die den Resource-Text und den Prompt-Text (bereits mit der Nutzeranfrage) zurückgibt, sodass der Aufrufer daraus die Message bauen kann.

Die Datei currency_server.py ist mit einem Tool, einer Resource und einem Prompt verfügbar. Verwende dieselbe Session, um die Resource zu lesen und den Prompt mit der Nutzereingabe zu holen.

Diese Übung ist Teil des Kurses

<Kurs>Einführung in das Model Context Protocol (MCP)</Kurs>
Kurs ansehen

Übungsanweisungen

  • Rufe innerhalb der Session die Methode auf, um die Resource unter "file://currencies.txt" zu lesen.
  • Rufe die Methode auf, um den Prompt per Namen mit der Nutzereingabe zu holen: Verwende den Prompt-Namen "convert_currency_prompt" und ein arguments-Dict mit dem Schlüssel "currency_request" und dem Wert user_query.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def get_context_from_mcp(user_query: str) -> tuple[str, str]:
    """Fetch resource content and prompt text from the MCP server."""
    params = StdioServerParameters(command=sys.executable, args=["currency_server.py"])

    async with stdio_client(params) as (reader, writer):
        async with ClientSession(reader, writer) as session:
            await session.initialize()

            # Read the resource (supported currencies)
            resource_result = await session.____("file://currencies.txt")
            resource_text = resource_result.contents[0].text

            # Get the prompt with the user's query
            prompt_result = await session.____("convert_currency_prompt",
                arguments={"currency_request": user_query})
            prompt_text = prompt_result.messages[0].content.text

            return resource_text, prompt_text

print(asyncio.run(get_context_from_mcp("How much is 50 GBP in euros?")))
Code bearbeiten und ausführen