Содержание
RAG MCP-сервер — это knowledge base, обёрнутая в протокол MCP: AI-агент получает доступ к поиску по документам, как к обычному инструменту. Вместо жёсткого пайплайна «запрос ретривер LLM», агент сам решает, как и сколько раз обратиться к базе знаний. Multi-query, реранкинг, поиск по нескольким источникам — всё это становится инструментами, а не стадиями конвейера. Сборка такого сервера занимает 30 минут через FastMCP, а готовые SDK вроде akyn-ai или Firecrawl MCP позволяют стартануть за 5 минут.
Что такое RAG-сервер для MCP
RAG (Retrieval-Augmented Generation) — это техника, при которой LLM перед ответом находит релевантные фрагменты в базе знаний и подкладывает их в контекст. Обычный RAG — это конвейер: пользователь задаёт вопрос ретривер ищет чанки в векторной БД LLM формирует ответ. MCP (Model Context Protocol) меняет эту схему: база знаний становится сервером, а агент — клиентом, который вызывает поиск как обычный инструмент.
Разница фундаментальная. В конвейере логика извлечения (сколько искать, какими словами, что делать с результатами) зашита в код. В MCP-схеме эту логику принимает сам AI-агент — он решает, разбить запрос на три подзапроса, переформулировать его или выполнить несколько поисков подряд. Сообщество MCP обсуждает этот подход как лучший способ строить RAG в 2026 году.
Почему RAG как сервер, а не пайплайн
У классического RAG-пайплайна три системных проблемы, которые агентный подход решает на архитектурном уровне.
Одноразовый запрос. Пользователь пишет найди в годовых отчётах компании Магнит за последние 3 года упоминания рисков. RAG-пайплайн выполнит один поиск по этой фразе и получит посредственный результат — потому что в векторное пространство ушла сырая строка, а не три отдельных запроса по годам. В агентном RAG LLM сама декомпозирует задачу на три вызова ретривера, переформулирует каждый под текущий год и только потом собирает ответ.
Жёсткая схема извлечения. Классический пайплайн всегда проходит одни и те же стадии: эмбеддинг HNSW-поиск реранкинг LLM. Он не может пропустить реранкинг на простом вопросе или выполнить два разнотипных поиска подряд. MCP-сервер даёт агенту инструменты search, query, rerank — и агент сам решает, что и когда вызывать.
Оторванность от контекста. RAG-пайплайн ничего не знает о диалоге, намерениях пользователя и истории поиска. Когда MCP-сервер становится инструментом в руках агента, весь контекст беседы доступен для принятия решения о стратегии поиска.
По данным тестов интеграции MCP с RAG, агентный подход даёт прирост качества ответов на 25-40% на вопросах, требующих многошаговой аналитики.
Архитектура RAG MCP-сервера
RAG MCP-сервер состоит из четырёх слоёв:
Транспортный слой (MCP Protocol). Сервер общается с агентами через стандартный MCP-транспорт — stdio (для локальных агентов вроде Claude Desktop) или SSE (для удалённых сценариев). FastMCP от PrefectHQ автоматически генерирует JSON-RPC-обработчики для всех инструментов.
Инструментальный слой. Сервер предоставляет набор MCP-инструментов. Базовый минимум — два инструмента: search_knowledge (семантический поиск по базе знаний) и query_documents (точный поиск по метаданным). В продвинутой версии добавляются multi_query_search, rerank_results и get_document.
Ретривер и реранкер. Ключевое отличие от сырого RAG: результаты поиска проходят через реранкер до того, как попасть к агенту. Модель реранкинга Cross-encoder оценивает релевантность каждого чанка относительно запроса и отсеивает шум.
Слой данных. Под капотом — векторная база данных (Chroma, Qdrant или LanceDB), документы в Markdown/PDF/текстовом формате, и, опционально, веб-краулер для динамических источников.
Пишем RAG MCP-сервер на FastMCP
FastMCP — самый популярный Python-фреймворк для создания MCP-серверов: 25,8K звёзд на GitHub, Apache 2.0, около 1 млн загрузок в день. Около 70% всех MCP-серверов используют FastMCP. Вот минимальный RAG-сервер:
import chromadb
from fastmcp import FastMCP
from sentence_transformers import SentenceTransformer
mcp = FastMCP("RAG Knowledge Base")
model = SentenceTransformer("intfloat/multilingual-e5-small")
client = chromadb.PersistentClient(path="./kb")
collection = client.get_or_create_collection("documents")
@mcp.tool()
def search(query: str, top_k: int = 5) -> str:
"""Semantic search across knowledge base."""
emb = model.encode(query).tolist()
results = collection.query(query_embeddings=[emb], n_results=top_k)
return "\n---\n".join(results["documents"][0])
mcp.run(transport="stdio")
Этот код — рабочий MCP-сервер. Claude Desktop, Cursor или любой MCP-клиент могут подключиться к нему и вызывать инструмент search. Установка зависимостей: pip install fastmcp chromadb sentence-transformers.
SSE-режим для удалённого доступа запускается одной строкой: mcp.run(transport="sse", port=8080).
Продвинутые техники: multi-query и реранкинг
Простой семантический поиск — хорошая база, но для сложных запросов этого мало. Вот две техники, которые превращают базовый RAG-сервер в агентный knowledge base.
Multi-query search. Вместо того чтобы искать по сырому запросу пользователя, LLM разбивает его на несколько связанных подзапросов. Например, запрос «сравни подходы к RAG в 2024 и 2025» превращается в три поиска: RAG best practices 2024, RAG improvements 2025, RAG benchmark results 2024 2025. Каждый запускает отдельный вызов ретривера, результаты объединяются и дедуплицируются.
Ретривал с реранкингом. Multi-query возвращает 20-30 чанков. Реранкер (например, BAAI/bge-reranker-v2-m3 или cohere/rerank-multilingual-v3.0) оценивает каждый чанк относительно исходного запроса и оставляет только топ-5.
Агентная стратегия поиска. Продвинутый RAG MCP-сервер даёт несколько инструментов с разной семантикой: quick_search (грубый, но быстрый), deep_search (с multi-query и реранкингом) и explore_topic (итеративный поиск). Агент сам выбирает стратегию под задачу. На Хабре есть подробный разбор того, как такой агентный RAG обрабатывает аналитические запросы с разбивкой на подзадачи.
Готовые решения: akyn-sdk и другие
Писать RAG MCP-сервер с нуля — не всегда нужно. На рынке уже есть готовые решения:
| Инструмент | Язык | Хранилище | Фишки | Лицензия |
|---|---|---|---|---|
| akyn-sdk | TypeScript | Локально (JSON) | Multi-source, Smart chunking | MIT |
| Firecrawl MCP | TS | Веб-страницы | Map endpoint, Markdown | AGPL-3.0 |
| Agentic RAG MCP | Python | Chroma / FAISS | Multi-query, реранкинг | MIT |
| Akyn AI | TS | Локально / JSON | 5 минут до старта | MIT |
akyn-sdk (GitHub, 22 звезды) — TypeScript SDK, превращает любую директорию с файлами, URL или сырой текст в MCP-сервер за 5 минут. Добавляет addFile, addDirectory, addURL, автоматически чанкует и индексирует.
Firecrawl MCP (138K звёзд) — для тех, чья база знаний — веб-страницы. Превращает сайты в Markdown, MCP-сервер уже встроен.
Agentic RAG MCP (GitHub) — Python-репозиторий с Chroma, multi-query, реранкингом, агентной логикой.
Коротко
RAG как MCP-сервер — это не замена классическому RAG, а его эволюция. Вместо жёсткого конвейера «ретривер LLM» вы даёте агенту инструменты для работы со знаниями, и он сам решает, какую стратегию поиска применить. Это даёт прирост качества на сложных, аналитических запросах.
Собрать простой сервер можно за 30 минут через FastMCP и Chroma. Готовые SDK (akyn-sdk, Firecrawl MCP) позволяют стартануть за 5 минут. Агенты вроде Claude Desktop и Cursor подключаются к ним через стандартный MCP-транспорт.
Что ещё важно знать
MCP заменит RAG?
Нет, это разные уровни абстракции. RAG решает проблему доступа к внешним знаниям. MCP — стандартизирует, как агенты вызывают инструменты. ProjectPro описывает это как «RAG — это что искать, MCP — как вызывать».
Какой транспорт: stdio или SSE?
Stdio — для локальных агентов (Claude Desktop, Cursor). SSE — для удалённого доступа. MCP spec рекомендует stdio для локальных сценариев и SSE для production.
Какая векторная БД лучше?
Chroma для прототипа (pip install, до 500K векторов). Qdrant или LanceDB для продакшена (гибридный поиск, any scale).
Сколько это стоит?
FastMCP и Chroma — бесплатно. Эмбеддинги: локально (бесплатно, 2 ГБ VRAM) или OpenAI API ($0.13/1M токенов). Реранкер: Cohere ($1/1K) или локальный bge-reranker. Для 10K документов и 1K запросов/день — $5-15/мес.
Нужен ли GPU?
Для базовой версии — нет, CPU достаточно. Локальные эмбеддинги (e5-small) работают на CPU до 100K векторов. Реранкер на CPU медленный (~2-5 сек), GPU даёт 10-100x ускорение.