MCP и навыки в AI-агентах: интеграция внешних баз знаний

опубликовано: ⏰ 8

Немного запоздалая статья: ещё в прошлом году планировал написать об использовании MCP и навыков в AI-агентах. Основная цель – сделать возможным получение данных из внешней базы знаний для использования в AI-агентах. Вероятно, уже не актуально и многие вещи давно известны, но лучше поздно, чем никогда.

Введение

Как сказано ранее, основная задача – получение точных данных из внешней базы знаний для использования в AI-агентах. Проблема агентов, да и LLM в целом, в том, что они содержат знания на определённый момент времени, но не имеют доступа к актуальным данным. Всё, что они знают, – это то, что было в их датасетах при обучении. Вторая более критическая проблема – галлюцинации, когда LLM выдают информацию, которая вообще не существует или не соответствует действительности.

Решение – использовать внешние источники данных и интегрировать их в процесс работы агентов. Идея не новая и давно используется; как пример – Context7 для получения информации по библиотекам и фреймворкам.

Общая схема взаимодействия

Для примера буду использовать связку из tekBlueprint.kbase с MCP, навыка и CLI-агента для кодинга.

Компоненты архитектуры:

  1. AI Agent выступает в роли центрального оркестратора. Он принимает задачу пользователя, определяет необходимое для её решения и выбирает, какие инструменты или данные потребуются.
    • MCP Client это встроенный модуль агента, реализующий протокол MCP. Отвечает за установку соединения с MCP Server (API), отправку JSON-RPC запросов и получение ответов.
    • SKILLS.md это навык для базы знаний. Загружаемая в контекст информация, которая “обучает” модель работе с конкретным сервером базы знаний. Он определяет промпты (если есть), правила использования MCP-инструментов (Tools) и доступ к ресурсам (Resources).
  2. Knowledge Base – хранилище информации, из которого будут получены необходимые данные в процессе работы агента.
    • MCP Server (MCP API) это промежуточный слой (шлюз), который реализует спецификацию MCP. Предоставляет агенту стандартизированный интерфейс: Tools (для выполнения действий, например, поиска) и Resources (для чтения данных, например, спецификаций).
    • Internal API обрабатывает запросы от MCP API и агента. Например, ищет данные в базе знаний, или выполняет какую-то расчётную логику по запросу от агента.
  3. Databases слой отвечает за долговременное хранение базы знаний и поиск по ней. Может быть организован как на одном типе баз, так и состоять из групп источников данных под различные варианты использования.

Поток данных:

  1. Пользователь задает вопрос в чате с агентом (AI Agent).
  2. Агент анализирует запрос, активирует навык (SKILLS.md) если есть и понимает, что нужно обратиться к базе знаний.
  3. Через клиент (MCP Client) агент отправляет запрос на сервер (MCP Server) (например, tools/call для поиска или resources/read для чтения).
  4. Сервер (MCP Server) принимает запрос, аутентифицирует его и преобразует в понятный для внутреннего API (Internal API) запрос.
  5. Internal API выполняет обработку запроса или запрашивает данные из базы (Databases) через REST, gRPC или прямой SQL/векторный запрос.
  6. Сервер базы знаний (Databases) находит релевантные документы/факты и возвращает их обратно по цепочке Internal API → MCP Server.
  7. Сервер (MCP Server) упаковывает результат в формат MCP и передает обратно агенту (AI Agent).
  8. Агент (AI Agent) обогащает свой контекст полученными данными и формирует финальный ответ пользователю.

Эта схема обеспечивает слабую связанность: AI-агенту не нужно знать внутреннюю структуру базы данных, достаточно работать со стандартизированным интерфейсом MCP. Дополнительно Internal API может быть вынесен в отдельные микросервисы, если требуется масштабирование под нагрузку.

Model Context Protocol (MCP)

MCP (Model Context Protocol) – протокол, разработанный для стандартизации взаимодействия между LLM и внешними источниками данных. MCP позволяет агентам запрашивать данные из различных источников, скрывая всю логику взаимодействия с различными источниками данных и бизнес-логику внутри. По-моему, варианты реализации MCP-серверов есть под все популярные языки разработки. Поэтому не так сложно найти примеры: здесь есть список SDK Model Context Protocol servers, сгруппированный по языкам разработки, а также примеры реализаций.

Если в качестве основного языка разработки используется Java, то можно использовать Spring AI. Как раз на нем построен MCP для tekBlueprint.kbase. Позволяет разрабатывать все основные инструменты вроде ресурсов, шаблонов ресурсов, утилит, автодополнения и так далее.

Необходимо продумать архитектуру и структуру ресурсов и утилит, которые он будет предоставлять.

Tools, Resources, Prompts

Проблемы ограниченного контекста в LLM и потеря фокуса на больших контекстах требуют, чтобы MCP-сервер мог отдавать данные в компактном виде. Это касается как формата передачи самих ресурсов, так и лимитов на количество объектов при поиске каких-либо данных. Например, в качестве альтернативы JSON есть формат TOON, который позволяет экономить токены. Для лимитов можно использовать стандартные page/pageSize и фильтры, которые агент может указывать на своё усмотрение.

Также стоит делать подробные описания утилит и параметров в JSON Schema. Хотя и не всегда, но LLM полагаются на них для выбора инструмента.

Безопасность и контроль доступа

Важный пункт если предполагается работа с чувствительными данными или это публичный сервер.

Как обычно, необходимо проверять все входные данные от клиентов до вызова бизнес-логики. Важно ограничивать область доступа инструментов. Это касается доступа к файловой системе, базам и так далее. Здесь также стоит использовать стандартные проверки: ограничения по количеству запросов, таймауты на длительность обработки и прочие.

Если данные могут содержать информацию, доступную только для ограниченного круга лиц, то необходима аутентификация агента и пользователя перед передачей данных. Здесь подход схож с обычным API, например для UI. Проверяем права доступа, фильтруем только доступные данные. Как пример: получение почасовых ставок по должностям может быть доступно только менеджерам, а для обычных пользователей будут отдаваться пустые значения.

В идеале, запуск сервера в отдельных процессах/контейнерах для снижения риска компрометации данных при уязвимостях.

База знаний

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

Как писал выше, необходим нечёткий поиск по данным, так как агенты не всегда знают, какие точно документы требуются. Процесс выглядит как постепенное сужение выборки до требуемых данных. Реализация на обычных реляционных БД и SQL может быть проблематичной: потребуются дополнительные базы или подключение дополнительных движков для полнотекстового или векторного поиска. Вариантов таких баз сейчас огромное количество: Meilisearch, OpenSearch, Qdrant, Chroma, Weaviate, Pinecone, Milvus и другие. Выбирайте под свои требования и нагрузки.

Агенты и навыки

AI-агент – это автономная программа (CLI, сервис и так далее), которая принимает решения и предпринимает действия для достижения поставленных целей на основе внешних данных и запросов. В контексте современных больших языковых моделей (LLM) AI-агент – это не просто чат-бот, а система, способная к планированию, использованию инструментов и итеративному выполнению задач.

Навыки (skills) для AI-агентов – это узкоспециализированные и переиспользуемые описания функциональности, которые агент может вызывать для выполнения конкретных действий. Это “инструменты в руках агента”, позволяющие ему выходить за пределы генерации текста и взаимодействовать с внешним миром.

Для агента основным источником информации о том, как взаимодействовать с MCP, является схема с описанием его API. При реализации MCP-сервера важно понимать, что далеко не всегда агенты смогут понять по простому описанию утилит и ресурсов, как с ним работать. Поэтому важно делать корректные и точные описания для утилит и ресурсов. Например, работа с базой знаний требует определённого процесса из-за большого объёма данных и ограничений по контексту. Как следствие, агент должен чётко понимать, какие инструменты и ресурсы он должен использовать для оптимального поиска по ней.

Один из вариантов явно указать агенту, как работать с базой знаний, – это использовать дополнительные навыки, которые будут подгружаться в момент вызова. Например, навык определяет, какие инструменты и ресурсы доступны, указывает последовательность работы с ними, а также когда его нужно активировать и где применять. Примеры навыков можно найти на Agent Skills Marketplace; за несколько месяцев их количество выросло почти до миллиона.

Возможные проблемы

При связке агентов с MCP и навыками встречались проблемы с совместимостью и их корректной работой.

Некоторые из популярных агентов не поддерживают полностью всю спецификацию MCP. Например, OpenCode всё ещё не умеет работать с ресурсами, только с утилитами. Поэтому приходится делать утилиты повторяющие данные ресурсов. При этом Roo Code умеет работать с ресурсами и понимает когда их нужно запрашивать. То есть необходимо предусматривать подобные ограничения и делать избыточный API если планируется совместимость с большим набором агентов.

Ещё одна проблема в том, что агенты иногда “теряют” требование использования навыка или MCP при последовательных запросах. Например, первый запрос обрабатывается с использованием данных от MCP, а последующий запрос и ответ будет основываться на данных или галлюцинациях модели без дополнительного запроса к базе.

Особенности реализации конкретных агентов или проблемы совместимости API. Например, в Spring AI используется Java SDK с уже устаревшим MCP, а агенты используют более новый. Возможно, связано не с этим, но часто возникают потери соединения с MCP-сервером в некоторых агентах и требуется переподключение.

Пример работы

Ниже небольшой пример работы связки tekBlueprint.kbase с MCP, навыка и CLI-агента для кодинга. Данные за 2025 год и не совсем полные, но для понимания процесса подойдёт.

Грубый расчета стоимости проекта
Выбор API
Выбор формата хранения

Заключение

Пока не будут решены фундаментальные проблемы текущих генеративных моделей с устареванием данных и галлюцинациями, будут нужны дополнительные источники данных и инструменты, на которые будет опираться агент и модель при решении задачи. MCP и базы знаний – это довольно удобный и полезный инструмент в таких случаях.

Ai Mcp Agents Skills Llm Genai