Всем привет! Меня зовут Максим Максимов, я — NLP-инженер в AI R&D лаборатории в red_mad_robot. Мы работаем с прикладными AI-системами, проводим эксперименты и пВсем привет! Меня зовут Максим Максимов, я — NLP-инженер в AI R&D лаборатории в red_mad_robot. Мы работаем с прикладными AI-системами, проводим эксперименты и п

MCP Tool Registry: автоматизированное создание систем RAG

eb5601b37ec7e223b73fd23f5d309243.jpg

Всем привет! Меня зовут Максим Максимов, я — NLP-инженер в AI R&D лаборатории в red_mad_robot. Мы работаем с прикладными AI-системами, проводим эксперименты и проверяем архитектурные подходы в реальных сценариях.

Современные AI-архитектуры всё чаще выносят прикладную логику за пределы LLM — в инструменты, внешние источники данных и правила их оркестрации. Модель выступает вычислительным ядром, а ценность формируется на уровне системы вокруг неё.

Из этого подхода в R&D-лаборатории вырос MCP Tool Registry — центральный реестр для управления системой серверов, необходимых для построения RAG. В этой статье я подробно расскажу, из каких частей состоит MCP Tool Registry, как он работает и покажу его применение на практическом примере.

Ограничения LLM и роль RAG и MCP

Сама по себе LLM неплохо справляется с написанием текстов. Но два ключевых ограничения не позволяют полноценно использовать языковую модель в сложных бизнес-процессах: это проблема памяти — модель не запоминает весь контекст и отсутствие доступа к внешним инструментам и данным, чтобы выполнять комплексные задачи.

Два основных метода снимают эти ограничения:

  • Retrieval Augmented Generation (RAG) — позволяет LLM запрашивать релевантную информацию из внешних баз знаний прямо в процессе генерации ответа.

  • Model Context Protocol (MCP) — предоставляет удобную интеграцию модели с внешними инструментами: сторонними сервисами, системами и API.

При этом MCP играет ключевую роль для построения RAG, так как все компоненты работы RAG — эмбеддинги, базы данных, ранкер — могут быть представлены в виде отдельного MCP сервера. Это преобразует базовую монолитную систему в набор модульных и взаимозаменяемых микросервисов. Так появляется новая задача — управление множеством таких серверов и оркестрация workflows между ними.

Наше решение — MCP Tool Registry — выступает в роли центрального реестра. Оно предоставляет единую точку входа для управления всей системой серверов, необходимых для построения RAG.

Полный код MCP реестра выложили на новеньком GitHub лаборатории AI R&D
Полный код MCP реестра выложили на новеньком GitHub лаборатории AI R&D

Реестр автоматизирует многоэтапные процессы, которые требуют последовательного обращения к нескольким серверам, скрывая эту часть от конечного пользователя. С помощью MCP Tool Registry можно разрабатывать LLM-приложения через единый интерфейс — без ручной интеграции каждого компонента.

Архитектура MCP реестра

Реализованный MCP реестр — это единый интерфейс между MCP серверами и клиентами. Его архитектура построена вокруг главного MCP сервера, который выполняет пять основных функций:

  • регистрация и обнаружение MCP серверов — всё в одном каталоге;

  • агрегация tools — клиент видит унифицированные возможностей;

  • маршрутизация запросов к соответствующим сервисам — определяет, какой именно сервер должен обработать полученный запрос от клиента, после чего перенаправляет ему этот запрос;

  • Health check и мониторинг состояния сервисов — система способна проверять работоспособность каждого сервера, чтобы маршрутизировать запросы только на активные и отвечающие сервисы;

  • Управление аутентификацией и авторизацией — предоставляет функционал только авторизированным пользователям, используя токен Bearer.

MCP Tool Registry представляет собой единый интерфейс взаимодействия с MCP серверами. Он освобождает клиентов от ручного взаимодействия с каждым компонентом системы.

Реестр агрегирует в себе сразу несколько сервисов
Реестр агрегирует в себе сразу несколько сервисов

Реестр объединяет сервисы, которые закрывают ключевые задачи работы с данными и моделями — от подготовки и разметки текстов и аудио до хранения векторных представлений и генерации ответов LLM. Вместе они формируют базовый набор инструментов для построения различных AI-сценариев, где каждый компонент отвечает за свой участок работы, но в связке создают целостный workflow для выполнения различных задач.

Для использования MCP реестра необходимо наличие инфраструктуры:

  • Сервис с моделью для векторизации текста — подойдёт bge-m3;

  • Сервис для извлечения текста из pdf — можно использовать инструменты LangChain;

  • Сервис с моделью для ранжирования текстов — например, bge-reranker;

  • Сервис с векторной базой данных — Qdrant;

  • Сервис с PostgreSQL;

  • Сервис с LLM для генерации текста — к примеру, llama-3-8b-instruct-8k;

  • Сервис для деления текста на фрагменты — также можно использовать LangChain;

  • Сервис для транскрибации текста — подойдёт модель Whisper.

Построение RAG с помощью MCP реестра

В качестве практического применения возможностей MCP Tool Registry мы разработали workflow, автоматизирующий процесс построения и работы RAG. Решение позволяет клиенту локально развернуть сервис для семантического поиска по своим данным, обеспечивая их безопасность и конфиденциальность. Весь процесс можно разделить на два шага: автоматическая подготовка данных для векторной базы и последующее взаимодействие с готовой RAG-системой через чат-интерфейс.

Workflow автоматизированного построения RAG

Это локальный proxy-сервер для реестра, который позволяет обрабатывать данные пользователя. Для отправки данных на удаленный сервер, используется base64 формат, который переводит бинарный файл в строку, что позволяет передавать данные по сети. В качестве векторного хранилища мы использовали qdrant, потому что это одна из самых высокопроизводительных и надежных векторных база данных.

Pipeline обработки состоит из следующих этапов:

  1. Извлечение текстов из локальных файлов;

  2. Деление текста на чанки;

  3. Получение векторных представлений каждого чанка — была использована модель bge-m3;

  4. Сохранение векторов в векторную базу данных.

Workflow подготовки данных для RAG
Workflow подготовки данных для RAG

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

Workflow для инференса RAG

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

Пять этапов workflow для взаимодействия с RAG:

  1. На входе — запрос пользователя к данным;

  2. Вопрос преобразуется в вектор при помощи модели bge-m3;

  3. Происходит поиск по векторной базе данных qdrant;

  4. Ранжирование полученных чанков через Reranker;

  5. Самый релевантный чанк подаётся LLM вместе с вопросом пользователя — после этого генерируется ответ на вопрос.

Workflow для инференса RAG
Workflow для инференса RAG

Кодовая база проекта

Реализация MCP реестра производилось на Python с применением библиотеки FastMCP.

from fastmcp import FastMCP from mcp_services.pdf_extractor_server import pdf_extract_mcp from mcp_services.embedding_server import embedding_mcp from mcp_services.reranker_server import reranker_mcp from mcp_services.postgres_server import postgres_mcp from mcp_services.markup_server import markup_mcp from mcp_services.qdrant_server import qdrant_mcp from mcp_services.llm_server import llm_mcp from mcp_services.transcribe_server import transcribe_mcp ... MCP_SERVERS = [ embedding_mcp, pdf_extract_mcp, reranker_mcp, qdrant_mcp, postgres_mcp, llm_mcp, markup_mcp, transcribe_mcp, ] MCP_SERVERS_DICT = {server.name: server for server in MCP_SERVERS} main_mcp_server = FastMCP(name="Main MCP server", auth=verifier) @main_mcp_server.tool async def get_server_and_tools(): """ Get tools from all servers :return: List of servers and tools """ ... @main_mcp_server.tool async def router(server_name: str, tool_name: str, params: dict): """ Router for all servers :param server_name: Name of the server :param tool_name: Name of the tool :param params: Parameters for the tool :return: Result of the tool """ ... @main_mcp_server.tool async def health_check_servers(): """ health check for all server :return: List of servers status """ ... if __name__ == "__main__": main_mcp_server.run(transport="stdio")

Функция get_server_and_tools позволяет получить всю информацию о имеющихся серверах и их инструментах. Функция router перенаправляет запрос на нужный сервер и вызывает необходимый инструмент. Данная функция реализует паттерн Facade, предоставляя унифицированный программный интерфейс для доступа к MCP серверам. Это позволяет клиентам взаимодействовать с разнородными сервисами через единый протокол и endpoint. Функция health_check_servers позволяет получить статус работы MCP серверов.

Workflow для подготовки данных был написан с использованием библиотеки LangGraph и реализован по принципу ETL.

... def get_base64_list(state: State): ... async def get_text_from_file(state: State): ... async def get_chunks(state: State): ... async def get_vectors(state: State): ... def create_and_get_qdrant_collection(state: State): ... def build_graph_workflow(): ...

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

... # Your existing methods here (keep them as provided) def vector_search( name_collection: str, query_vector: List[float], limit: int = 5 ) -> list: """ Search for similar vectors :param name_collection: name collection :param query_vector: query vector :param limit: limit closest points :return: """ ... def rerank_documents(query: str, documents: List[str]): """ Rerank texts :param query: user query :param documents: documents for rerank :return: reranked list of documents """ ... def llm_chat_completion(text: str) -> str: """ Generate answer for text :param text: :return: answer """ def get_embedding(text: str) -> List[float]: """Generate embedding for input text using embedding service""" ... ...

Практическое значение и эксперименты

Для бизнеса MCP Tool Registry выступает готовым решением для быстрого прототипирования и внедрения AI. Он позволяет компаниям в короткие сроки развернуть рабочую RAG-систему для внутренних данных, экономя ресурсы на дорогостоящих NLP-инженерах. Разработанный workflow подготовит данные и запустит RAG автоматически.

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

Для AI-инженеров и исследователей решение служит не просто платформой для экспериментов, а готовым, производственным каркасом для построения сложных агентских систем. Они могут использовать реестр для создания приложений, которые выходят за рамки простого RAG, например, агентов, способных планировать решение задач, последовательно используя разные инструменты — поиск в базе знаний, выполнение вычислений и взаимодействие с внешними API.

Важная ценность MCP реестра — возможность легко обновлять или заменять отдельные компоненты, например, модель эмбеддингов или базу данных — без переписывания всей системы. Это превращает реестр в инструмент, который можно использовать много раз для разных задач. Кроме того, общую логику реестра можно упаковать в библиотеку, чтобы стандартизировать создание MCP приложений, предоставляя готовый каркас с маршрутизацией, health-чеками и шаблонами для добавления новых серверов. Библиотека упрощает разработку MCP приложений, ускоряя интеграцию MCP серверов в новые проекты и позволяя сосредоточиться на предметной логике, а не инфраструктуре.

Пример применения MCP реестра для Cursor

Чтобы продемонстрировать работу MCP Tool Registry в реальных условиях, можно интегрировать его в популярную IDE Cursor, которая имеет встроенную поддержку MCP. Тут всего за несколько шагов легко превратить локальные файлы в полнофункциональную RAG-систему.

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

{ "mcpServers": { "server-name": { "ur1": "http://localhost:8000/mcp/", "headers": { "Authorization": "Bearer my_best_api_key" } }, "ProxyServer": { "command": "uv", "args": [ "run" "fastmcp" "run" "YOUR_PATH_TO/proxy_mcp_server-py:proxy_mcp_server" ], "env": {}, "transport": "stdio" } } }

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

После подготовки данных можно начинать общение с RAG. Workflow для инференса RAG реализован с использованием библиотеки rich. Разработанные workflow будут автоматически готовить и обращаться к данным.

Интерфейс для взаимодействия с RAG
Интерфейс для взаимодействия с RAG

Эксперименты показали, что MCP Tool Registry снижает порог входа для создания сложных AI-приложений. Для бизнеса это удобный инструмент быстрого прототипирования, а для инженеров — стандартизированная платформа для экспериментов и сборки решений. Практическая ценность реестра хорошо видна на примере автоматического построения RAG и интеграции с IDE Cursor: многие этапы работы сводятся к нескольким автоматизированным шагам.


Над материалом работали:

текст — Максим Максимов

редактура — Игорь Решетников

иллюстрации — Саша Буяк


Подписывайтесь на мой Telegram-канал, в котором я рассказываю про IT и AI технологиях. А также Telegram-канал red_mad_robot там всё другое, а ещё есть анонсы мероприятий.

Источник

Возможности рынка
Логотип Sleepless AI
Sleepless AI Курс (AI)
$0.03773
$0.03773$0.03773
-2.48%
USD
График цены Sleepless AI (AI) в реальном времени
Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу service@support.mexc.com для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.