Чтение ресурсов на стороне клиента
Сделаем последний шаг: добавим в клиент функциональность для чтения данных ресурса с вашего MCP-сервера! Список валют и их символов может служить для языковой модели своеобразным справочником: с его помощью она будет проверять, поддерживается ли запрошенная пользователем валюта инструментом convert_currency(), а также корректны ли символы валют, переданные в качестве аргументов функции.
Файл currency_server.py уже запущен и готов к работе.
Это упражнение является частью курса
Введение в Model Context Protocol (MCP)
Инструкции к упражнению
- Определите асинхронную функцию
read_resource(), принимающую параметрresource_uriтипаstr - Внутри функции используйте
session.read_resource()сawait, чтобы прочитать ресурс по указанному URI, и сохраните результат в переменнуюresource_content - Переберите содержимое каждого ресурса в цикле и выведите его атрибуты
.mimeTypeи.text
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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"))