Труды КНЦ (Технические науки вып.3/2025(16))

Примитивы Примитивы MCP — важнейший концепт MCP. Примитивы определяют типы контекстной информации, которой можно поделиться с приложениями ИИ, и диапазон доступных действий. MCP определяет три основных примитива, которые могут предоставлять серверы: 1) инструменты (Tools) — исполняемые функции, которые приложения ИИ могут вызывать для выполнения действий (например, файловых операций, вызовов API, запросов к базе данных); 2) ресурсы (Resources) — источники данных, предоставляющие контекстную информацию приложениям ИИ (например, содержимое файлов, записи базы данных, ответы API); 3) запросы к языковой модели (Promts, промпты) — многоразовые шаблоны, помогающие структурировать взаимодействие с языковыми моделями (например, системные промпты, «few-shot» примеры). Каждому типу примитива соответствуют методы обнаружения (' */list ), извлечения ('*/get') и (в некоторых случаях) выполнения ('tools/call'). Клиенты MCP будут использовать методы ' */list' для поиска доступных примитивов. Например, клиент может сначала составить список всех доступных инструментов ('tools/list'), а затем выполнить их. Такая структура позволяет создавать динамические списки. MCP также определяет примитивы, которые могут предоставлять клиенты. Эти примитивы позволяют разработчикам серверов MCP создавать более сложные взаимодействия. Выборка (Sampling) позволяет серверам запрашивать дополнения языковой модели из клиентского приложения ИИ. Это полезно, когда авторы серверов хотят получить доступ к языковой модели, но при этом сохранить независимость от модели и не включать SDK языковой модели в свой сервер MCP. Они могут использовать метод sampling/complete' для запроса дополнения языковой модели из клиентского приложения ИИ. Извлечение (Elicitation) позволяет серверам запрашивать дополнительную информацию у пользователей. Это полезно, когда авторы серверов хотят получить дополнительную информацию от пользователя или запросить подтверждение действия. Они могут использовать метод 'elicitation/request' для запроса дополнительной информации у пользователя. Ведение журнала (Logging) позволяет серверам отправлять сообщения журнала клиентам для отладки и мониторинга. Уведомления (Notifications) Протокол поддерживает уведомления в режиме реального времени для обеспечения динамических обновлений между серверами и клиентами. Так, при изменении доступных инструментов сервера, например при появлении новых функций или изменении существующих инструментов, сервер может отправлять уведомления об обновлениях инструментов, чтобы информировать подключенных клиентов об этих изменениях. Уведомления отправляются в виде уведомлений JSON-RPC 2.0 (без ожидания ответа) и позволяют серверам MCP предоставлять обновления подключенным клиентам в режиме реального времени. Инициализация Процесс инициализации является ключевой частью управления жизненным циклом MCP и служит нескольким важным целям: 1. Согласование версии протокола. Поле 'protocolVersion' (например, "2025-06-18") гарантирует, что клиент и сервер используют совместимые версии протокола. Это предотвращает ошибки связи, которые могут возникнуть при попытке взаимодействия разных версий. Если взаимосовместимая версия не согласована, соединение следует разорвать. 2. Определение возможностей. Объект 'capabilities' позволяет каждой стороне указать поддерживаемые функции, включая [примитивы](#primitives), которые она может обрабатывать (инструменты, ресурсы, подсказки), а также указать, поддерживает ли она такие функции, как [уведомления](#notifications). Это обеспечивает эффективное взаимодействие и позволяет избегать неподдерживаемых операций. 3. Обмен идентификацией. Объекты 'clientlnfo' и 'serverlnfo' предоставляют информацию об идентификации и версиях для отладки и обеспечения совместимости. Труды Кольского научного центра РАН. Серия: Технические науки. 2025. Т. 16, № 3. С. 5-21. Transactions of the Kola Science Centre of RAS. Series: Engineering Sciences. 2025. Vol. 16, No. 3. P. 5-21. © Федоров А. М., Датьев И. О., Илясов М. О., Вишняков И. Г., Базегский М. О., Фигуркин Д. С., Любимова К. Д., 2025 9

RkJQdWJsaXNoZXIy MTUzNzYz