Resources lezen vanuit de client
Laten we nu de laatste stap zetten: functionaliteit toevoegen aan de client zodat die de gegevens van de resource kan lezen van je MCP-server! Deze lijst met valuta's en hun symbolen kan door een LLM worden gebruikt als checklist om te controleren of de gebruiker een valuta opvraagt die wordt ondersteund door de tool convert_currency() en ook of de argumenten van de functie geldige valutatekens zijn.
Het bestand currency_server.py is opgestart en klaar voor gebruik.
Deze oefening maakt deel uit van de cursus
Introductie tot Model Context Protocol (MCP)
Oefeninstructies
- Definieer een async-functie genaamd
read_resource()die een parameterresource_urivan het typestraanneemt - Gebruik binnen de functie
session.read_resource()metawaitom de resource op de opgegeven URI te lezen en wijs het resultaat toe aanresource_content - Loop door de inhoud van elke resource en print de attributen
.mimeTypeen.text
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
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"))