Modular RAG MCP Server
Modular RAG MCP Server
Ориентированная на внутренних консультантов DIY-команды по обучению за рубежом инфраструктура поиска знаний по поступлению и наблюдаемый RAG
Modular RAG MCP Server — это локально-ориентированный, подключаемый и наблюдаемый сервис генерации с дополнением поиска (RAG). Система предоставляет возможности поиска знаний AI-клиентам через Model Context Protocol (MCP) и управляет документами, задачами приёма, цепочками запросов и результатами оценки через Streamlit Dashboard.
Этот проект возник из реального сценария сотрудничества во время учёбы в университете: DIY-команда по обучению за рубежом внутри колледжа помогала студентам с подачей заявок в зарубежные вузы. Система решает проблему консультантов, которым приходилось многократно искать информацию о требованиях вузов, материалах для подачи, процедурных нормах и историческом опыте, а также сложность отслеживания источников. В настоящее время система развёрнута внутри команды; публичный репозиторий содержит только анонимизированные синтетические примеры и не включает реальные данные студентов, внутренние документы или эксплуатационные данные.
Все примеры материалов в репозитории должны использовать анонимизированные синтетические данные; выходные данные системы предназначены для проверки консультантами и не заменяют их суждение, а также не являются рекомендациями по вузам, визам или юридическими консультациями.
Содержание
Related MCP server: mcp-rag-assistant
Бизнес-контекст
Консультанты по DIY-обучению за рубежом при обработке заявок должны одновременно обращаться к официальным описаниям вузов, руководствам по программам, шаблонам материалов, внутренним контрольным спискам и историческим кейсам. Исходные материалы обычно хранятся в виде PDF-файлов, разбросанных по разным местам, и имеют следующие проблемы:
Одно и то же требование может быть сформулировано по-разному в нескольких документах, и чисто ключевой поиск легко пропускает релевантные результаты.
Специфические термины, такие как вузы, специальности, степени и сезоны поступления, требуют точного сопоставления, и чисто векторный поиск легко даёт ложные срабатывания.
Таблицы, диаграммы и скриншоты в PDF содержат важную информацию, и чисто текстовый анализ теряет контекст.
Консультантам нужно знать, из какого документа и какого фрагмента получен ответ, и оценивать, актуален ли документ.
После обновления документа векторное хранилище, индекс BM25, индекс изображений и записи о приёме должны оставаться согласованными.
Эффективность поиска должна проверяться с помощью стабильного набора тестов, а не субъективного опыта.
Система предназначена для внутренних консультантов команды. Типичный рабочий процесс включает:
Приём материалов о вузах и программах, внутренних контрольных списков и анонимизированных кейсов в указанную коллекцию.
Отправка вопросов на естественном языке через MCP Client или командную строку.
Система выполняет двухканальный поиск Dense + BM25, слияние RRF и опциональный Rerank.
Возврат текстовых фрагментов с указанием источников и мультимодальных блоков при обнаружении изображений.
Проверка процесса приёма, результатов поиска, времени выполнения и метрик оценки через Dashboard.
Границы системы
Этот проект отвечает за приём знаний, поиск, цитирование, оценку и наблюдение за цепочками, но не отвечает за:
Замену консультанта в выводах о выборе вуза, вероятности поступления или визовых решениях.
Автоматическую подачу заявок, отправку писем или изменение материалов студентов.
Предоставление студенческих аккаунтов, CRM, платежей или управления статусом заявок.
Автоматический сбор и заявление о владении актуальной политикой вузов.
Формирование определённых бизнес-выводов при отсутствии подтверждающих источников.
Ключевые возможности
Область возможностей | Текущая реализация |
Приём данных | PDF → Markdown → Chunk → Transform → Embedding → Upsert |
Гибридный поиск | Dense Embedding + BM25 двухканальный поиск, слияние RRF |
Ранжирование | Cross-Encoder или LLM Rerank, настраиваемое понижение |
Мультимодальность | Извлечение изображений из PDF, Image Captioning, совместный поиск текста и изображений, мультимодальный возврат через MCP |
Согласованность хранилищ | Chroma, BM25, история приёма в SQLite, файлы изображений и индекс изображений |
Инкрементальная обработка | Дедупликация по SHA256, стабильные Chunk ID, идемпотентный Upsert, координированное удаление |
Протокольный интерфейс | MCP Stdio Server и три Tools для базы знаний |
Панель управления | Streamlit Dashboard с шестью страницами |
Наблюдаемость | Структурированные Trace для цепочек Ingestion и Query |
Оценка качества | Custom Evaluator, Ragas, Golden Test Set |
Инженерная структура | Трёхуровневое тестирование: Unit, Integration, E2E |
Подключаемые интерфейсы | LLM, Embedding, Splitter, Reranker, Evaluator, VectorStore |
Архитектура системы
flowchart LR
A["PDF 业务资料"] --> B["Ingestion Pipeline"]
B --> C["Chroma 向量库"]
B --> D["BM25 索引"]
B --> E["SQLite 摄取历史"]
B --> F["图片文件与索引"]
G["顾问 / MCP Client"] --> H["MCP Server"]
H --> I["Query Processor"]
I --> J["Dense Retrieval"]
I --> K["Sparse Retrieval"]
J --> L["RRF Fusion"]
K --> L
L --> M["Optional Rerank"]
M --> N["Response + Citations + Images"]
B --> O["Ingestion Trace"]
I --> P["Query Trace"]
O --> Q["Streamlit Dashboard"]
P --> QОсновные каталоги:
src/
├── core/ # 数据契约、查询编排、响应构建、Trace、配置
├── ingestion/ # Chunk、Transform、Embedding、Storage 与 Pipeline
├── libs/ # LLM/Embedding/Loader/Reranker/Splitter/VectorStore 抽象
├── mcp_server/ # MCP 协议处理、Server 与 Tools
└── observability/ # Dashboard、评估与结构化日志
scripts/ # ingest、query、evaluate、Dashboard 启动入口
config/ # Provider、检索、重排、评估与摄取配置
tests/ # Unit、Integration、E2E 测试与固定样例Подробные интерфейсы, потоки данных и ограничения модулей см. в DEV_SPEC.md.
Согласованность данных и хранилищ
Один приём координирует несколько серверных хранилищ:
Хранилище | Ответственность |
Chroma | Текст Chunk, Dense Vector и Metadata |
BM25 | Инвертированный индекс для разреженного поиска |
SQLite ingestion history | SHA256, статус обработки, коллекция и время |
Каталог изображений | Исходные изображения, извлечённые из PDF |
SQLite image index | Связь изображений, документов, страниц и коллекций |
Проверка целостности файлов использует SHA256 для пропуска файлов, которые уже были успешно обработаны и не изменились. Chunk ID стабильно генерируется на основе источника, местоположения и содержимого, повторный приём использует идемпотентный Upsert. DocumentManager отвечает за координированное удаление в Chroma, BM25, истории приёма и индексе изображений и возвращает информацию о частичных сбоях.
MCP Tools
В настоящее время Server предоставляет четыре Tools. Первые три универсальных Tool сохранены без изменений, четвёртый — это адаптационный слой для бизнеса по обучению за рубежом:
Tool | Назначение | Основные входные данные |
| Выполнение гибридного поиска, опционального переранжирования и возврат цитат |
|
| Список доступных коллекций и статистика |
|
| Получение сводки, тегов и источника указанного документа |
|
| Повторное использование полной цепочки гибридного поиска с добавлением метаданных об обучении за рубежом и фильтрации по актуальности |
|
MCP использует Stdio Transport. stdout зарезервирован для JSON-RPC, журналы выполнения записываются в stderr, чтобы не нарушать кадры протокола.
search_admissions_knowledge по умолчанию запрашивает admissions_knowledge и всегда ограничивает business_domain=study_abroad_admissions. Он поддерживает точную фильтрацию по стране, вузу, программе, уровню степени, сезону поступления, раунду подачи и типу источника; по умолчанию исключает материалы, у которых valid_until раньше бизнес-даты запроса. Материалы с отсутствующим или неразрешимым сроком действия помечаются как needs_review и не молча считаются действующими правилами. Бизнес-Tool — это только адаптационный слой для параметров и ответов, в основе по-прежнему выполняются Dense + BM25, RRF, Cross-Encoder/LLM Rerank, цитирование и мультимодальный возврат.
Dashboard
Dashboard сохраняет структуру из шести страниц:
Overview: конфигурация компонентов, активы данных, статус работы, а также статистика действующих, требующих проверки и просроченных материалов по обучению за рубежом.
Data Browser: документы, Chunk, Metadata и связанные изображения; поддержка комбинированной фильтрации по стране, вузу, программе, степени, сезону поступления, раунду подачи, типу источника и статусу актуальности.
Ingestion Manager: запуск приёма, просмотр прогресса и координированное удаление документов.
Ingestion Traces: этапы приёма, методы обработки, время выполнения и исключения.
Query Traces: Dense/Sparse поиск, слияние, переранжирование и окончательные результаты.
Evaluation Panel: выполнение оценки и просмотр метрик и исторических результатов.
Быстрый старт
1. Подготовка окружения
Требуется Python 3.10–3.12.
git clone https://github.com/xiaoxinbuxingyeyuan/MODULAR-RAG-MCP-SERVER.git
cd MODULAR-RAG-MCP-SERVER
python -m venv .venvWindows PowerShell:
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"macOS / Linux:
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"В
pyproject.tomlзафиксированы версии прямых зависимостей, проверенные для текущего проекта. При обновлении MCP, Ragas, LangChain или компонентов хранилища следует обновлять их отдельно и повторно выполнять офлайн- и онлайн-регрессию.
2. Настройка Provider
Отредактируйте config/settings.yaml, чтобы настроить LLM, Embedding, Vision LLM, VectorStore, Reranker и бэкенд оценки. API-ключи должны внедряться через безопасную конфигурацию и не должны попадать в репозиторий.
Если локально нет сервиса моделей, можно отключить необязательные LLM-улучшения и Rerank для проверки базовой цепочки, не зависящей от внешних сервисов.
3. Приём документов
python scripts/ingest.py \
--path tests/fixtures/sample_documents/simple.pdf \
--collection admissions_knowledgeПриём каталога:
python scripts/ingest.py \
--path tests/fixtures/sample_documents/ \
--collection admissions_knowledgeПриём с использованием бизнес-манифеста для обучения за рубежом:
python scripts/ingest.py \
--path examples/documents/synthetic/ \
--collection admissions_knowledge \
--manifest examples/admissions_manifest.example.jsonlМанифест использует UTF-8 JSONL, каждая строка соответствует одному PDF. Относительный document_path разрешается относительно каталога, в котором находится манифест; обязательные поля: document_path, title, country и source_type. Необязательные поля включают institution, program, degree_level, intake, application_round, published_at, valid_until, language, tags и access_scope. Полный пример см. в examples/admissions_manifest.example.jsonl.
После передачи манифеста каждый PDF, подлежащий приёму, должен иметь уникальное совпадение. Неизвестные поля, повторяющиеся пути, недопустимые перечисления и инвертированные даты приводят к сбою до записи в хранилище. Метаданные манифеста распространяются от Document к Chunk и записям Chroma; заголовки и теги на уровне Chunk, созданные LLM, не переопределяют document_title и business_tags.
Инкрементальное определение одновременно сравнивает SHA256 PDF и SHA256 нормализованных бизнес-метаданных: если оба не изменились, приём пропускается; изменение только манифеста автоматически повторно принимает документ и перезаписывает метаданные, соответствующие стабильному Chunk ID. При изменении содержимого PDF система сначала записывает новую версию, затем очищает Chunk Chroma, изображения и старые записи приёма по старому doc_hash; BM25 заменяет postings по префиксу стабильного пути источника. Старая история приёма в SQLite автоматически получает поле metadata_hash без ручной миграции. --force по-прежнему можно использовать для явного пересоздания, но он больше не является обязательным условием для применения обновлений манифеста.
Репозиторий предоставляет три полностью вымышленных бизнес-примера без личной информации, охватывающих действующие материалы, отсутствие срока действия и просроченные материалы; руководство по курсу включает блок-схему для проверки мультимодальной цепочки. Для повторной генерации примеров PDF выполните:
python examples/generate_synthetic_admissions_pdfs.py4. Запросы из командной строки
python scripts/query.py \
--query "申请材料需要包含哪些证明?" \
--collection admissions_knowledge \
--verbose5. Запуск Dashboard
python scripts/start_dashboard.pyАдрес по умолчанию: http://localhost:8501.
6. Запуск MCP Server
python -m src.mcp_server.serverФорматы конфигурации разных MCP Client немного отличаются, основная конфигурация процесса выглядит так:
{
"command": "<project>/.venv/Scripts/python.exe",
"args": ["-m", "src.mcp_server.server"],
"cwd": "<project>"
}В macOS / Linux замените путь к Python на <project>/.venv/bin/python.
7. Выполнение оценки
python scripts/evaluate.py \
--test-set examples/admissions_golden_test_set.json \
--collection admissions_knowledgeЕсли нет внешней среды поиска, можно выполнить:
python scripts/evaluate.py --no-searchОбеспечение качества
Проект использует трёхуровневую структуру тестирования:
Unit: контракты данных, алгоритмы, Factory, Tool Handler и адаптеры хранилищ.
Integration: комбинированное поведение приёма, гибридного поиска, MCP, Provider и Trace.
E2E: приём через CLI, MCP Client, smoke-тесты Dashboard и регрессия Recall.
python -m pytest tests/unit
python -m pytest tests/integration
python -m pytest tests/e2e
python -m pytestПриведённые выше команды по умолчанию пропускают все тесты, помеченные как online, и не вызывают реальные Provider. Для реальных сервисов Azure, OpenAI или Ollama явно выполните в среде с соответствующими учётными данными и доступными сервисами:
python -m pytest --run-online -m onlineШлюз, совместимый с OpenAI, можно внедрить через OPENAI_API_KEY, OPENAI_BASE_URL и OPENAI_MODEL без изменения конфигурации репозитория или отправки учётных данных. Тесты Provider, которые не настроены, должны оставаться пропущенными.
Чтобы проверить только правильную классификацию онлайн-тестов без их запуска, выполните python -m pytest --collect-only -m online. Офлайн- и онлайн-результаты следует записывать отдельно; --run-online только снимает ограничение пропуска и не заменяет конфигурацию Provider.
Слой оценки продолжает поддерживать Custom Evaluator и Ragas. Бизнес-набор Golden Test Set дополнительно записывает комбинированную фильтрацию, бизнес-дату, политику истечения, ожидаемые источники и эталонные ответы; офлайн-приёмка бизнеса проверяет эти поля и поведение по актуальности бизнес-адаптера MCP. Общие интерфейсы оценки и исходный Golden Test Set не изменены.
Безопасность и эксплуатационные ограничения
По умолчанию используется локальный Stdio и локальное хранилище, сетевые порты не открываются.
API-ключи и личная информация студентов не сохраняются в журналах, Trace, тестовых фиксированных данных или истории Git.
Перед попаданием бизнес-материалов в базу знаний необходимо подтвердить авторизацию и выполнить деидентификацию конфиденциальных данных.
Результаты поиска должны сохранять ссылки на источники; при отсутствии надёжных источников следует возвращать пустой результат или подсказку о ручной проверке.
Требования вузов имеют ограниченный срок действия; бизнес-Tool по умолчанию исключает материалы, у которых истёк
valid_until, и явно указывает на отсутствие срока действия, но консультанты всё равно должны сверяться с официальными источниками.Текущая архитектура — это однопользовательский локальный сервис, не предоставляющий аутентификацию, изоляцию прав или гарантии многопользовательности.
Текущее состояние и план развития
Существующая ветка main уже имеет полный каркас универсального RAG, MCP, Dashboard, Trace и оценки. Доработка для обучения за рубежом ведётся инкрементально и не может удалять или упрощать существующие технические возможности.
Этап | Статус | Содержание |
Универсальный RAG-базис | Существует | Приём, гибридный поиск, переранжирование, мультимодальность, множественные хранилища, Trace, оценка и трёхуровневое тестирование |
Бизнес-документация | Завершено | Публичное описание, границы системы и инженерная спецификация переведены на сценарий внутреннего поиска знаний консультантов |
Стабилизация базовых зависимостей | Завершено | Зафиксированы проверенные версии прямых зависимостей, по умолчанию пропускаются тесты реальных Provider и предоставлен явный онлайн-вход |
Список документов по обучению за рубежом | Завершено | JSONL Schema, строгая валидация, сопоставление путей, вход приёма через CLI и распространение метаданных в Chunk/Chroma |
Инкрементальное обновление метаданных | Завершено | SHA256 PDF + SHA256 нормализованных метаданных, автоматическая миграция SQLite и согласованная замена версий содержимого |
Бизнес MCP Tool | Завершено | Сохранены исходные три Tool, добавлен |
Бизнес-поля Dashboard | Завершено | Сохранена структура из шести страниц, только в Overview и Data Browser добавлены бизнес-метаданные, комбинированная фильтрация и статистика актуальности |
Синтетический бизнес-набор оценки | Завершено | Три вымышленных PDF, скрипт для повторной генерации, манифест и семь типов Golden Test Case |
Бизнес-регрессионная приёмка | Завершено | Добавлены офлайн-фикстуры, smoke-тесты актуальности, комбинированной фильтрации и извлечения изображений; основная цепочка поиска не изменена |
Реализация любого этапа должна сохранять полный конвейер приёма PDF, Dense + BM25, RRF, Rerank, мультимодальность, согласованность множественных хранилищ, инкрементальное обновление и удаление, исходные три MCP Tools, шестистраничный Dashboard, двухканальные Trace, Custom + Ragas, трёхуровневое тестирование и все подключаемые интерфейсы.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityAmaintenanceLocal end-to-end RAG system for agentic code editors, exposing retrieval-augmented generation via MCP to any compatible client.331MIT
- FlicenseNot gradedqualityCmaintenanceProvides RAG-based knowledge retrieval and document management as MCP tools, supporting hybrid search, reranking, and retrieval process visualization.
- FlicenseNot gradedqualityBmaintenanceA pluggable, observable modular RAG service framework that exposes tools via MCP protocol for AI assistants, supporting hybrid search, reranking, multi-modal processing, and evaluation.
- AlicenseNot gradedqualityAmaintenanceA local-first RAG engine that ingests documents (PDF, Markdown, images, etc.) and provides hybrid search, reranking, and LLM answer synthesis via MCP for AI agent integration.1MIT
Related MCP Connectors
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Apple Developer Documentation with Semantic Search, RAG, and AI reranking for MCP clients
Search your knowledge bases from any AI assistant using hybrid RAG.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xiaoxinbuxingyeyuan/MODULAR-RAG-MCP-SERVER'
If you have feedback or need assistance with the MCP directory API, please join our Discord server