Aan de slagBegin gratis

Resources lezen vanuit de client

Laten we nu de laatste stap zetten: functionaliteit toevoegen aan de client zodat die de gegevens van de resource kan lezen van je MCP-server! Deze lijst met valuta's en hun symbolen kan door een LLM worden gebruikt als checklist om te controleren of de gebruiker een valuta opvraagt die wordt ondersteund door de tool convert_currency() en ook of de argumenten van de functie geldige valutatekens zijn.

Het bestand currency_server.py is opgestart en klaar voor gebruik.

Deze oefening maakt deel uit van de cursus

Introductie tot Model Context Protocol (MCP)

Bekijk cursus

Oefeninstructies

  • Definieer een async-functie genaamd read_resource() die een parameter resource_uri van het type str aanneemt
  • Gebruik binnen de functie session.read_resource() met await om de resource op de opgegeven URI te lezen en wijs het resultaat toe aan resource_content
  • Loop door de inhoud van elke resource en print de attributen .mimeType en .text

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

# Define an async function for reading MCP resources
____ ____ ____(____: ____):
    """Read a specific resource by URI."""
    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()

            print(f"Reading resource: {resource_uri}")
            # Read the resource from the session context
            resource_content = ____ ____

            # Print the contents of each resource
            for content in ____:
                print(f"\nContent ({content.mimeType}):")
                print(content.____)

            return resource_content

asyncio.run(read_resource("file://currencies.txt"))
Code bewerken en uitvoeren