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

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

2025/12/30 21:07
9м. чтение
Для обратной связи или замечаний по поводу данного контента, свяжитесь с нами по адресу crypto.news@mexc.com
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 там всё другое, а ещё есть анонсы мероприятий.

Источник

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

Вам также может быть интересно

Cardano застрял в двухмесячном диапазоне: приближается ли долгосрочное дно для ADA?

Cardano застрял в двухмесячном диапазоне: приближается ли долгосрочное дно для ADA?

Статья "Cardano застрял в 2-месячном диапазоне: виднеется ли долгосрочное дно для ADA?" появилась на BitcoinEthereumNews.com. Cardano [ADA] продолжал торговаться в пределах
Поделиться
BitcoinEthereumNews2026/03/25 07:57
NASA переориентирует программу Artemis на строительство постоянной базы на Луне

NASA переориентирует программу Artemis на строительство постоянной базы на Луне

Статья NASA переориентирует программу Artemis на строительство постоянной базы на Луне появилась на BitcoinEthereumNews.com. Вкратце, NASA меняет свою стратегию Artemis
Поделиться
BitcoinEthereumNews2026/03/25 10:03
Стейблкоины захватывают 83% объема спотовой торговли криптовалютой в USD, в то время как фиатные пары исчезают, выяснил Kaiko – Bitcoin News

Стейблкоины захватывают 83% объема спотовой торговли криптовалютой в USD, в то время как фиатные пары исчезают, выяснил Kaiko – Bitcoin News

Публикация «Стейблкоины захватывают 83% объема спотовой торговли криптовалютой в USD, поскольку фиатные пары исчезают, выяснила Kaiko – Bitcoin News» появилась на BitcoinEthereumNews.com. Стейблкоины
Поделиться
BitcoinEthereumNews2026/03/25 09:59