Lettura delle risorse dal client
Facciamo ora l'ultimo passo: aggiungere funzionalità al client in modo che possa leggere i dati della risorsa dal tuo server MCP! Questo elenco di valute e dei relativi simboli potrebbe essere usato come checklist da un LLM per verificare che l'utente stia richiedendo una valuta supportata dallo strumento convert_currency() e anche che gli argomenti della funzione siano simboli di valuta validi.
Il file currency_server.py è stato avviato ed è pronto per essere utilizzato.
Questo esercizio fa parte del corso
Introduzione al Model Context Protocol (MCP)
Istruzioni dell'esercizio
- Definisci una funzione async chiamata
read_resource()che accetta un parametroresource_uridi tipostr - All'interno della funzione, usa
session.read_resource()conawaitper leggere la risorsa all'URI indicato, assegnando il risultato aresource_content - Itera sui contenuti di ciascuna risorsa e stampa i suoi attributi
.mimeTypee.text
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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"))