Skip to content

Инструменты MCP: обзор ​

Что такое MCP в EVA, как инструменты подключаются, как платформа передаёт им доступ к файлам чата и почему они не входят в ядро платформы.

Что такое MCP ​

MCP это протокол, по которому языковая модель получает доступ к внешним инструментам. Инструмент это отдельный сервис со своим списком функций. Модель видит эти функции и может их вызывать.

Инструменты не входят в ядро

Ни один сервис MCP не является частью платформы и не обязателен для установки. EVA без них работает как обычный чат с моделью. Каждый инструмент подключается отдельно и может быть выключен в любой момент.

Что подключено ​

На стенде подключены пять источников, все по транспорту Streamable HTTP.

Название в платформеЧто делаетРепозиторий
Doc WorkerЧтение офисных документовdocument-worker-mcp
Knowledge BaseПоиск ответов по внутренним документамИсходный код не передан
OCRРаспознавание сканов и фотографийpaleograph
SearcherПоиск в интернете и загрузка страницsearcher
TranscriptРасшифровка аудио и видеоscriber

Расхождение имён

Имя папки не всегда совпадает с именем сервиса. Репозиторий paleograph внутри называет себя ocr-mcp, а заголовок его файла README (hippocampus) устарел и в коде нигде не встречается. Так же в коде нет ни компонента Preprocessor, ни обращений к Milvus, ни встроенных векторных вычислений, ни интеграции с Confluence, хотя на архитектурной схеме продукта они есть.

Как модель видит инструменты ​

Платформа переименовывает инструменты перед тем, как показать их модели. Правило такое:

mcp_<имя источника>_<имя инструмента>

Например инструмент transcribe_audio источника Transcript модель видит как mcp_transcript_transcribe_audio. Имя источника приводится к нижнему регистру, недопустимые символы заменяются, длина обрезается до 40 символов.

Переименование источника меняет имена инструментов

Если администратор переименует источник в разделе MCP, изменятся имена всех его инструментов для модели. Это может сломать запреты на инструменты, настроенные у агентов по старому имени.

Два вида инструментов ​

У каждого сервиса, кроме searcher, инструменты делятся на два вида.

Скрытые от модели. Это init_eva_session, привязка сессии. Его вызывает только Runtime. Модель этот инструмент не видит и вызвать не может. Внутри него передаются временные ключи доступа к файлам чата.

Видимые модели. Рабочие инструменты: проверить схему, прочитать документ, распознать скан и так далее. У них в параметрах никогда нет ни адреса хранилища, ни ключа доступа, ни идентификатора чата. Модель передаёт только имя файла и настройки работы.

Как инструмент получает файл ​

Схема одинаковая у всех сервисов, кроме searcher.

Привязка сессии выполняется заново перед каждым вызовом инструмента. Это же и есть механизм обновления ключа доступа: повторный вызов просто перезаписывает сохранённые данные.

Правило про результат ​

Все сервисы, работающие с файлами, возвращают модели ссылку на файл, а не текст. Сделано это специально: если вернуть текст, модель напечатает весь документ в переписку. Когда модель получает ссылку, печатать нечего, и пользователь получает аккуратную карточку файла.

Отсюда следует важное для документации: результат распознавания, расшифровки или чтения документа всегда появляется как новый файл в чате.

Ограничение по времени вызова ​

Платформа обрывает вызов инструмента через 30 секунд. Значение меняется переменной MCP_TOOL_CALL_TIMEOUT_MS.

Поэтому длинные операции построены как фоновые задачи: инструмент сразу возвращает номер задачи, а модель потом опрашивает состояние.

ИнструментКак работает
Чтение документаСразу, ждём результат
Распознавание скановФоновая задача с опросом
Расшифровка аудио и видеоФоновая задача с опросом
Поиск в интернетеСразу, ждём результат

Риск обрыва на долгих операциях

Чтение очень большого документа и преобразование крупной схемы в Visio выполняются без фоновой задачи и могут не успеть за 30 секунд. Пользователь увидит ошибку, хотя работа продолжится и файл в итоге запишется.

Проверка источников на подозрительные описания ​

Платформа проверяет описание инструментов на попытки подмены поведения модели. Проверяются общие указания сервиса, описания всех инструментов и все строки внутри схем параметров.

Если источник получил состояние «заблокирован», он исключается из всех обращений модели.

Общее устройство сервисов ​

Все сервисы, кроме searcher, написаны по одному внутреннему регламенту. Он описан в разделе Свой MCP-сервер.

Searcher устроен иначе

searcher не реализует контракт EVA: у него нет привязки сессии, нет доступа к файлам чата, нет единого формата ответа и нет устойчивых кодов ошибок. Загруженные страницы он сохраняет на свой диск, а не в чат. Подробности на его странице.

Документация платформы EVA