НачатьНачать бесплатно

Чтение ресурсов на стороне клиента

Сделаем последний шаг: добавим в клиент функциональность для чтения данных ресурса с вашего 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"))
Редактировать и запускать код