Zacznij terazZacznij za darmo

Odczytywanie zasobów po stronie klienta

Czas na ostatni krok: dodanie do klienta funkcjonalności umożliwiającej odczytanie danych zasobu z serwera MCP! Lista walut i ich symboli może służyć modelowi językowemu jako punkt odniesienia – pozwoli sprawdzić, czy użytkownik podaje walutę obsługiwaną przez narzędzie convert_currency(), a także zweryfikować, czy argumenty przekazane do tej funkcji są poprawnymi symbolami walut.

Plik currency_server.py jest już uruchomiony i gotowy do użycia.

To ćwiczenie jest częścią kursu

Wprowadzenie do Model Context Protocol (MCP)

Zobacz kurs

Instrukcje do ćwiczenia

  • Zdefiniuj asynchroniczną funkcję o nazwie read_resource(), która przyjmuje parametr resource_uri typu str
  • Wewnątrz funkcji użyj session.read_resource() z await, aby odczytać zasób spod podanego URI, a wynik przypisz do zmiennej resource_content
  • Przejdź pętlą przez zawartość każdego zasobu i wypisz jego atrybuty .mimeType oraz .text

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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"))
Edytuj i uruchom kod