Leer recursos desde el cliente
Vamos con el paso final: añadir funcionalidad al cliente para que pueda leer los datos del recurso desde tu servidor MCP. Esta lista de divisas y sus símbolos podría servir a un LLM como lista de comprobación para verificar que la persona usuaria solicita una divisa admitida por la herramienta convert_currency() y, además, que los argumentos de la función de la herramienta son símbolos de divisa válidos.
El archivo currency_server.py ya está ejecutándose y listo para que lo uses.
Este ejercicio forma parte del curso
Introducción a Model Context Protocol (MCP)
Instrucciones del ejercicio
- Define una función asíncrona llamada
read_resource()que reciba un parámetroresource_uride tipostr - Dentro de la función, usa
session.read_resource()conawaitpara leer el recurso en la URI indicada y asigna el resultado aresource_content - Recorre los contenidos de cada recurso e imprime sus atributos
.mimeTypey.text
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
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"))