
Одна из основных проблем моделей искусственного интеллекта — их замкнутость на обучающие данные. Поэтому они часто формируют слишком общие ответы, оторванные от реальности. Технологии MCP позволяют решить данную проблему за счет предоставления ИИ контекстной информации из различных источников как внутри компании, так и в ее бизнес-окружении.
Одной из наиболее важных проблем, с которой сталкиваются пользователи систем искусственного интеллекта (ИИ), является оторванность выдаваемых ими результатов от контекста. Действительно, когда заблудившийся путешественник-автомобилист на вопрос прохожему «где я нахожусь?» получает ответ «в автомобиле», это ему мало помогает. Хотя ответ абсолютно точный и правильный.
Причина в том, что отвечающий не понимает, зачем требуется его ответ, если не владеет контекстом проблемы, которым в данном случае является информация о том, что автомобилист не может идентифицировать свое текущее местоположение, чтобы сориентироваться и найти дорогу.
Аналогично, в бизнесе, если задать ИИ вопрос: «Как увеличить прибыль предприятия?» можно получить ответ «Нужно снизить себестоимость продукции и сделать выше цену». Ответ также абсолютно верный, но лишенный смысла. Потому что бизнесмена интересует не «что нужно сделать» (это в большинстве случаев очевидно), а «каким образом». А для этого требуется учесть массу факторов: виды продукции, текущую динамику продаж, поведение клиентов, состояние рынка и многое другое, что и образует контекст.
Таким образом, чтобы получить от ИИ внятный ответ, ему нужно предоставить доступ к информации с контекстом. Для этого ИИ должен «сходить» в БД компании, чтобы получить сведения о продукции, «посетить» систему CRM, где «ознакомиться» с поведением клиентов, «наведаться» во внутренние документы компании, которые регламентируют предоставление гарантии на продукцию или ее возврат.
Традиционно, подобные задачи решались, что называется, «на коленке»: разрабатывались специализированные интерфейсы (коннекторы) для доступа к источникам информации о контексте, а также утилиты (инструменты) для различных сопутствующих действий, связанных, например, с обработкой данных, формированием и рассылкой подсказок и уведомлений пользователям.
Однако, как показала практика, подход «на коленке» имеет массу недостатков. Во-первых, он связан с потерями времени, которые при принятии решений в бизнесе могут оказаться критичными с точки зрения упущенных возможностей или предотвращения рисков. Во-вторых, при большом количестве источников данных может потребоваться множество плохо совместимых друг с другом решений. И, наконец, при добавлении новых источников контекстной информации или изменении существующих, приходится модифицировать код, чтобы снова «подружить» с ними ИИ-приложение.
Все это, и многое другое, привело к появлению запроса на унификацию и стандартизацию процесса подключения ИИ к разнообразным источникам, содержащим контекстную информацию, и предоставления необходимого функционала. Именно такой запрос и постаралась удовлетворить компания Anthropic, которая в 2024 году представила открытый стандарт и платформу с открытым исходным кодом для подключения ИИ-приложений к внешним системам, известный как MCP (Model Context Protocol — протокол контекста модели).
Используя MCP, ИИ-приложения могут подключаться к источникам контекстной информации и инструментам (утилитам), реализующим сопутствующий функционал. MCP часто сравнивают с USB-портом: подобно тому, как USB-порт реализует стандартизированный метод подключения электронных устройств, MCP обеспечивает стандартизированный способ получения доступа ИИ-приложений к внешним системам.
MCP построен по клиент-серверной архитектуре и основан на следующих базовых принципах:
MCP использует клиент-серверную архитектуру, где хостом является ИИ-приложение, которое устанавливает связи с одним или несколькими MCP-серверами, создавая одного клиента для каждого сервера и поддерживая с ним выделенное соединение.
Архитектура MCP
Ключевыми участниками архитектуры MCP являются:
MCP-сервер предоставляет данные контекста независимо от места, где он выполняется (локально или удаленно).
Структурно MCP состоит из двух уровней (слоев):
Концептуально уровень данных — является внутренним, а транспортный — внешним. Рассмотрим их более подробно.
Уровень данных реализует протокол обмена данными на основе JSON-RPC 2.0, который определяет структуру и семантику сообщений. Этот слой включает:
Таким образом, транспортный уровень отвечает за управление каналами связи между клиентами и серверами, а также за аутентификацию. Он осуществляет установление соединения, формирование сообщений и безопасную связь между участниками MCP-сессии.
MCP поддерживает два механизма обмена данными:
Протокол уровня данных является ключевым элементом MCP и отвечает за определение схемы и семантики взаимодействия между клиентами и серверами. С точки зрения разработчика, наиболее интересной частью MCP является именно уровень данных, в частности, набор примитивов. Именно эта часть определяет способы обмена контекстом между серверами и клиентами.
MCP использует JSON-RPC 2.0 в качестве базового протокола RPC. Клиент и серверы отправляют друг другу запросы и отвечают соответствующим образом. Когда ответ не требуется, могут использоваться уведомления.
MCP поддерживает уведомления в реальном времени, что позволяет осуществлять динамические обновления между серверами и клиентами. Например, когда изменяются доступные инструменты сервера вследствие появления новой функциональности или модификации существующей, он может отправлять уведомления об обновлениях, чтобы информировать подключенных клиентов об этих изменениях. Уведомления отправляются в виде сообщений JSON-RPC 2.0 (без ожидания ответа) и позволяют серверам MCP предоставлять обновления подключенным клиентам в реальном времени.
Сервер MCP — это программа, которая предоставляет ИИ-приложениям доступ к контексту и определенным возможностям через стандартизированные протокольные интерфейсы. В качестве примеров можно привести файловые серверы для доступа к документам, серверы для запросов к базам данных, сервер Loginom для интеллектуального анализа данных, серверы GitHub для разработки кода и т.д.
Серверы обеспечивают функциональность посредством трех основных компонентов, называемых примитивами. Они определяют функции, которые клиент и сервер могут предоставлять друг другу: типы контекстной информации, передаваемые ИИ-приложениям, а также набор действий, которые могут быть выполнены ими.
Подключения к MCP
Реальная мощь MCP проявляется, когда несколько серверов работают вместе, объединяя свои возможности через единый интерфейс.
Серверы MCP предоставляют три основных примитива (стандартизированных интерфейса), определяющих строительные блоки для взаимодействий между клиентами, хостами и языковыми моделями. Эти примитивы задают типы контекстной информации и действий, доступных через протокол. MCP определяет три основных примитива, которые могут быть предоставлены серверами:
Каждый примитив имеет связанные с ним методы для обнаружения (.../list), извлечения (.../get) и, в некоторых случаях, выполнения (tools/call). Клиенты MCP будут использовать эти методы для обнаружения доступных примитивов. Например, клиент может сначала вывести список всех доступных инструментов (tools/list), а затем выполнить их. Такая конструкция позволяет динамически формировать списки примитивов.
MCP также определяет примитивы, которые могут быть доступны клиентам. Они позволяют разработчикам серверов MCP создавать более сложные интерактивные интерфейсы. Помимо серверных и клиентских примитивов, протокол предлагает различные общие вспомогательные примитивы, которые расширяют возможности выполнения запросов. Более подробно основные примитивы будут рассмотрены ниже.
Инструменты (tools) представляют собой исполняемые модули, которые позволяют моделям ИИ выполнять те или иные действия. Каждый инструмент определяет конкретную операцию с типизированными входными и выходными данными. Модель запрашивает выполнение инструмента в зависимости от контекста. MCP Host может запрашивать согласие пользователя перед выполнением инструментов, что помогает гарантировать сохранение контроля над работой ИИ-приложения.
Несмотря на то, что инструменты могут самостоятельно обнаруживаться и запускаться ИИ-приложениями, MCP тем не менее ориентирован на человеческий контроль посредством нескольких механизмов:
Ресурсами (resources) являются источники данных, предоставляющие контекстную информацию для ИИ-приложений.
Каждый ресурс имеет уникальный URL (например, file:///path/to/document.md) и указывает свой MIME-тип для соответствующей обработки содержимого. Ресурсы ориентированы на конкретное приложение, что обеспечивает им гибкость в способах получения, обработки и представления доступного контекста.
Типичные средства взаимодействия ресурсов с пользователями включают:
Приложения могут реализовать поиск ресурсов с помощью любого совместимого интерфейса. Протокол не предписывает использование конкретных шаблонов пользовательского интерфейса, что позволяет создавать средства выбора ресурсов с возможностью предварительного просмотра, интеллектуальных подсказок на основе текущего контекста, множественного выбора нескольких ресурсов, а также интегрирования с имеющимися файловыми браузерами и средствами просмотра данных.
Подсказки (prompts) — шаблоны типовых взаимодействий, которые клиент может запускать от имени пользователя.
Они могут включать структуру запроса, инструкции по обработке данных, а также рекомендации по выбору подходящих источников контекста. Подсказки позволяют стандартизировать сценарии работы с ИИ, с одной стороны, снижая зависимость от формулировок пользователя, с другой — облегчая написание запроса.
Клиенты MCP создаются хост-приложениями для связи с конкретными серверами MCP. Хост-приложение, например Claude.ai или IDE, управляет общим пользовательским интерфейсом и координирует работу нескольких клиентов, каждый из которых осуществляет одно прямое взаимодействие с единственным сервером.
Таким образом, хост — это приложение, с которым взаимодействуют пользователи, а клиенты — это компоненты протокола, обеспечивающие подключение к серверу.
Хост MCP
Помимо использования контекста, предоставляемого MCP-серверами, клиенты сами могут предоставлять серверам ряд функций, которые позволяют разработчикам создавать более сложные интерактивные интерфейсы. К ним относятся:
Элицитация (elicitation) — механизм протокола MCP, который позволяет серверу запрашивать дополнительные данные у пользователя во время сеанса. Он позволяет клиентам сохранять контроль над взаимодействием с пользователями и обменом данными, в то время как серверы могут динамически собирать необходимую информацию.
Элицитация предоставляет серверам более гибкий способ сбора необходимой контекстной информации: вместо того чтобы запрашивать всю информацию заранее или выдавать ошибку при ее отсутствии, серверы могут приостанавливать свою работу, чтобы запросить у пользователей конкретные уточнения. Это создает взаимодействие, при котором серверы адаптируются к потребностям пользователей, а не следуют жестким шаблонам.
Данный алгоритм обеспечивает динамический сбор информации. Серверы могут запрашивать конкретные данные по мере необходимости, пользователи предоставляют информацию через соответствующий пользовательский интерфейс, а серверы продолжают обработку с учетом полученного контекста.
Корневые каталоги (roots) — это механизм, определяющий границы, в которых могут работать MCP‑серверы. Обеспечивает стандартизированный способ для клиентов предоставлять серверам доступ к «корневым» папкам файловой системы, которые определяют границы, в которых серверы могут работать внутри нее, позволяя им «понимать», к каким каталогам и файлам они имеют доступ. Серверы могут запрашивать список корневых папок у поддерживающих их клиентов и получать уведомления об изменении этого списка.
Корневые ресурсы в MCP обычно доступны через интерфейсы конфигурации рабочего пространства или проекта. Например, в решениях может быть предусмотрен инструмент выбора рабочей области/проекта, позволяющий пользователям выбирать каталоги и файлы, к которым сервер должен иметь доступ.
По сути, «корни» — это URI, которые клиент предлагает серверу использовать в качестве основной области работы. При подключении клиента к серверу передаются «корни», и сервер должен ориентироваться на них при выполнении операций, например, file:///home/user/projects/frontend. MCP‑спецификация не обязывает сервер строго соблюдать границы корней, а конкретное решение зависит от реализации сервера.
Результатом работы механизма является улучшение релевантности ответов, ускорение обработки запросов и, при правильной настройке, повышение безопасности за счет четкого определения границы доступа.
Семплинг (sampling) — протокольный механизм, посредством которого серверы MCP могут запрашивать через клиента у ИИ-приложения (например, у LLM) определенную генерацию (дополнение). При этом инструмент сервера определяет необходимость использования LLM (например, для анализа или генерации текста).
После этого сервер отправляет запрос клиенту через механизм семплинга, который получает его, и вызывает свою LLM для генерации дополнения. Клиент возвращает сгенерированный результат серверу и инструмент продолжает работу, используя контент, сгенерированный LLM, как если бы сервер создал его сам.
Применение механизма семплинга позволяет серверу обрабатывать больше одновременных запросов, поскольку избавляет его от траты времени на генерацию больших фрагментов текста. Кроме этого, семплинг дает возможность пользователю просматривать и одобрять как запрос перед отправкой его ИИ-приложению, так и сгенерированное дополнение перед возвращением его серверу.
Семплинг особенно полезен при необходимости генерировать креативный контент (резюме, переводы), принимать решения, обрабатывать неструктурированные данные и т.д.
Применение MCP для сбора и использования контекстной информации в ИИ-приложениях обеспечивает следующие преимущества.
Однако, основное преимущество MCP заключается в его открытости и стандартизации. В отличие от проприетарных решений, он предоставляет универсальный протокол, который может использоваться разными разработчиками и компаниями, создавая более совместимую экосистему ИИ. Это позволяет избежать «зацикливания» на единственном поставщике решений и дает разработчикам больше гибкости при создании ИИ-приложений.
Организация и эффективное управление процессом доставки контекстной информации ИИ-приложениям с использованием MCP особенно полезны для аналитиков, которым нужно оперативно получать инсайты из больших объемов данных. Рассмотрим как это работает в различных областях бизнеса.
В бизнес-аналитике c помощью MCP могут решаться задачи поддержания аналитических моделей ИИ в работоспособном состоянии, предотвращая их коллапс и деградацию. Для этого модель через экосистему MCP подключается к соответствующим источникам данных и «заправляется» из них актуальными данными, на которых происходит ее дообучение.
Например, ИИ-модель сегментации клиентов постоянно устаревает из-за изменений возраста, дохода, потребительского поведения, экономических и демографических факторов. Использование MCP для «подпитки» таких моделей свежей информацией из внутренних источников данных компании (CRM, данные о продажах) и бизнес-окружения (статистические, экономические показатели).
В модели кредитного скоринга целесообразно актуализировать контекстную информацию о заемщиках и внешних финансовых показателях (ставка рефинансирования, курсы валют и т.д.). В моделях онлайн-страхования полезно собирать контекстные данные о стоимости объектов страхования (недвижимость, автомобили, водный транспорт), количестве и объеме выплат по аналогичным объектам и т.д.
Особенно полезным MCP может быть в динамическом ценообразовании, где ИИ-модель, назначающая скидку для определенного клиента, должна автоматически запрашивать его историю продаж, социальные и демографические параметры из CRM, сведения из базы данных товаров.
В персонализированном маркетинге c помощью MCP могут создаваться ИИ-агенты, формирующие персонализированные коммуникации с клиентами, используя данные из CRM-систем и других источников, отражающих клиентское поведение. Это значительно повышает эффективность маркетинговых кампаний за счет точного таргетирования.
Системы клиентской поддержки могут использовать MCP для формирования и отправки автоматизированных голосовых сообщений, обеспечивая более естественное взаимодействие с клиентами. Это улучшает клиентский опыт и снижает нагрузку на операторов.
Инструменты разработки и IDE MCP интегрируются в среды разработки, такие как, например GitHub, предоставляя разработчикам контекстно-зависимые предложения кода и документации напрямую из различных источников. Это значительно ускоряет процесс разработки и повышает качество кода.
Серверы MCP повышают эффективность управления интернетом вещей, позволяя ИИ-моделям взаимодействовать с его физическими устройствами через стандартизированный интерфейс. Это упрощает создание различных IoT-приложений.
Применение MCP в многоагентных системах позволяет создавать сложные рабочие процессы, в которых несколько ИИ-агентов координируют свои действия через стандартизированный протокол для решения сложных задач.
Таким образом, MCP можно рассматривать как важный шаг в развитии экосистем ИИ, новейший, фундаментальный стандарт, который превращает большие языковые модели из изолированных источников знаний в активных участников рабочих процессов. Предоставляя стандартизированный способ их взаимодействия с внешним окружением, он позволяет разработчикам создавать более мощные и функциональные ИИ-приложения с меньшими затратами, а пользователи получают ИИ-модели, способные решать сложные задачи не только на основе собственных данных, но и за счет использования полученной контекстной информации.
Другие материалы по теме:
MCP-server Loginom: от «умных» ответов ИИ к реальным решениям