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)
Instrukcje do ćwiczenia
- Zdefiniuj asynchroniczną funkcję o nazwie
read_resource(), która przyjmuje parametrresource_uritypustr - Wewnątrz funkcji użyj
session.read_resource()zawait, aby odczytać zasób spod podanego URI, a wynik przypisz do zmiennejresource_content - Przejdź pętlą przez zawartość każdego zasobu i wypisz jego atrybuty
.mimeTypeoraz.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"))