Kom igångKom igång gratis

Hämta resurs och prompt från MCP

Din valutaserver exponerar en resurs (file://currencies.txt) och en prompt (convert_currency_prompt) som kombinerar användarens förfrågan med uppgiftsspecifikt sammanhang och regler. För att mata en LLM måste klienten hämta båda i ett enda anrop. Implementera en hjälpfunktion med namnet get_context_from_mcp() som returnerar resurstexten och prompttexten (med användarens fråga redan inbäddad) så att anroparen kan bygga meddelandet.

Filen currency_server.py finns tillgänglig med ett verktyg, en resurs och en prompt. Använd samma session för att läsa resursen och hämta prompten med användarens indata.

Den här övningen är en del av kursen

Introduktion till Model Context Protocol (MCP)

Visa kurs

Övningsinstruktioner

  • Anropa metoden inuti sessionen för att läsa resursen på "file://currencies.txt".
  • Anropa metoden för att hämta prompten med namn och användarens indata: använd promptnamnet "convert_currency_prompt" och en arguments-dict med nyckeln "currency_request" och värdet user_query.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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?")))
Redigera och kör kod