Lire des ressources depuis le client
Passons maintenant à l'étape finale : ajouter des fonctionnalités au client pour qu'il puisse lire les données de la ressource depuis votre serveur MCP ! Cette liste de devises et de leurs symboles pourrait servir de liste de contrôle à un LLM pour vérifier que l'utilisateur demande une devise prise en charge par l'outil convert_currency() et aussi que les arguments de la fonction de l'outil sont des symboles de devise valides.
Le fichier currency_server.py a été démarré et est prêt à être utilisé.
Cet exercice fait partie du cours
<cours>Introduction au Model Context Protocol (MCP)</cours>Instructions de l’exercice
- Définissez une fonction asynchrone appelée
read_resource()qui prend un paramètreresource_uride typestr - À l'intérieur de la fonction, utilisez
session.read_resource()avecawaitpour lire la ressource à l'URI donné et affectez le résultat àresource_content - Parcourez le contenu de chaque ressource et affichez ses attributs
.mimeTypeet.text
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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"))