Aan de slagBegin gratis

Resource en prompt ophalen uit MCP

Je currency-server stelt een resource (file://currencies.txt) en een prompt (convert_currency_prompt) bloot die de vraag van de gebruiker combineren met taakspecifieke context en regels. Om een LLM van input te voorzien, moet de client beide in één keer ophalen. Implementeer een helperfunctie get_context_from_mcp() die de resource-tekst en de prompttekst retourneert (met de gebruikersquery er al in) zodat de aanroeper het bericht kan opbouwen.

Het bestand currency_server.py is beschikbaar met een tool, resource en prompt. Gebruik dezelfde sessie om de resource te lezen en de prompt op te halen met de invoer van de gebruiker.

Deze oefening maakt deel uit van de cursus

Introductie tot Model Context Protocol (MCP)

Bekijk cursus

Oefeninstructies

  • Roep binnen de sessie de methode aan om de resource op "file://currencies.txt" te lezen.
  • Roep de methode aan om de prompt op naam op te halen met de invoer van de gebruiker: gebruik promptnaam "convert_currency_prompt" en een arguments-dict met sleutel "currency_request" en waarde user_query.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

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 bewerken en uitvoeren