Lendo recursos a partir do cliente
Agora vamos ao passo final: adicionar funcionalidade ao cliente para que ele possa ler os dados do recurso do seu servidor MCP! Esta lista de moedas e seus símbolos pode ser usada como um checklist por um LLM para verificar se o usuário está solicitando uma moeda compatível com a ferramenta convert_currency() e também se os argumentos da função da ferramenta são símbolos de moeda válidos.
O arquivo currency_server.py já foi iniciado e está pronto para você usar.
Este exercicio faz parte do curso
Introdução ao Model Context Protocol (MCP)
Instruções do exercicio
- Defina uma função assíncrona chamada
read_resource()que receba um parâmetroresource_urido tipostr - Dentro da função, use
session.read_resource()comawaitpara ler o recurso no URI fornecido, atribuindo o resultado aresource_content - Faça um loop pelo conteúdo de cada recurso e imprima seus atributos
.mimeTypee.text
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
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"))