Modular RAG MCP Server
Modular RAG MCP Server
Modular RAG MCP Server 是一个面向私有知识库的模块化 RAG(Retrieval-Augmented Generation,检索增强生成)服务框架。项目支持文档摄取、稠密/稀疏混合检索、可选重排、链路追踪、评估面板,并通过 MCP(Model Context Protocol)协议向外暴露知识库查询能力。
该项目适合作为企业内部知识库、团队文档问答、AI 助手工具接入、RAG 原型验证和检索质量分析的工程基础。
更多架构细节可参考 系统架构说明。
核心功能
模块 | 能力 |
文档摄取 | 文件完整性检查、PDF 解析、分块、元数据增强、图片描述、向量化和存储 |
混合检索 | Dense 向量检索 + BM25 稀疏检索 + RRF 融合排序 |
重排 | 支持关闭、Cross-Encoder 重排或 LLM 重排 |
MCP 服务 | 通过标准 MCP tools 对外提供知识库查询能力 |
Dashboard | 基于 Streamlit 的系统总览、数据浏览、摄取管理、链路追踪和评估面板 |
可观测性 | 记录 Ingestion 和 Query 两条链路的结构化 trace |
评估 | 支持自定义指标和 Ragas 评估扩展 |
可插拔架构 | LLM、Embedding、Reranker、Splitter、VectorStore、Evaluator 均通过接口和工厂模式组织 |
适用场景
企业内部知识库:技术文档、产品手册、制度文档、客服资料、研究报告等。
团队文档问答:帮助研发、产品、运营或支持团队快速定位内部资料。
AI 助手接入:通过 MCP 让兼容客户端调用私有知识库查询工具。
RAG 原型验证:快速验证不同分块、检索、融合、重排和评估策略。
检索质量分析:通过 trace、评估集和 Dashboard 检查召回与排序效果。
行业知识问答:在法律、医疗、金融、制造、教育等领域接入专有文档。
系统架构
文档
-> Ingestion Pipeline
-> Loader
-> Chunker
-> Transform
-> Dense + Sparse Encoding
-> ChromaDB + BM25 Index + Image Index
-> Query Pipeline
-> Query Processing
-> Dense Retrieval
-> Sparse Retrieval
-> RRF Fusion
-> Optional Rerank
-> Response + Citations
-> MCP Tools / CLI / Dashboard主要目录:
src/ingestion/:文档摄取流水线、分块、编码和存储协调。src/core/query_engine/:查询处理、混合检索、融合排序和重排编排。src/mcp_server/:MCP 服务、协议处理和工具注册。src/observability/:日志、trace、Dashboard 和评估相关能力。src/libs/:LLM、Embedding、Loader、Splitter、Reranker、VectorStore 等 provider 抽象和实现。scripts/:摄取、查询、评估和 Dashboard 启动脚本。
MCP 工具
当前 MCP Server 注册了以下工具:
query_knowledge_hub:对指定 collection 执行混合检索并返回带引用的结果。list_collections:列出当前向量库中的 collection,可选返回统计信息。get_document_summary:根据文档 ID 查询文档标题、摘要、来源、标签和 chunk 数量。
环境要求
Python 3.10+
一个可用的 LLM provider,用于生成、元数据增强、图片描述或可选重排
一个可用的 Embedding provider,用于稠密向量检索
ChromaDB,用于本地向量存储
Provider 配置位于 config/settings.yaml。
当前代码支持的 provider 类型包括:
LLM:OpenAI、Azure OpenAI、Ollama、DeepSeek
Embedding:OpenAI、Azure OpenAI、Ollama
Vision LLM:OpenAI、Azure OpenAI、Ollama
Vector Store:ChromaDB
Rerank:关闭、Cross-Encoder、LLM Reranker
安装
python -m venv .venv
.venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"macOS 或 Linux:
source .venv/bin/activate配置
编辑 config/settings.yaml,配置实际使用的模型和存储参数。
至少需要关注:
llm.providerllm.modelllm.api_key或 provider 对应 endpoint 配置embedding.providerembedding.modelembedding.api_key或 provider 对应 endpoint 配置vector_store.persist_directoryvector_store.collection_name
默认运行数据目录:
data/db/chroma:ChromaDB 持久化目录data/db/bm25:BM25 稀疏索引data/db/ingestion_history.db:摄取历史与文件完整性记录data/db/image_index.db:图片索引data/images:提取出的图片资源
这些运行时目录默认不会提交到 git。
使用方式
摄取文档
摄取单个 PDF:
python scripts/ingest.py --path documents/report.pdf --collection default摄取目录下的所有 PDF:
python scripts/ingest.py --path documents/ --collection default强制重新处理已摄取文件:
python scripts/ingest.py --path documents/report.pdf --collection default --force查询知识库
python scripts/query.py --query "Azure OpenAI 如何配置?" --collection default查看 dense、sparse、fusion、rerank 等中间结果:
python scripts/query.py --query "RRF 融合策略是什么?" --collection default --verbose关闭重排:
python scripts/query.py --query "RRF 融合策略是什么?" --collection default --no-rerank启动 Dashboard
python scripts/start_dashboard.py指定 host 和 port:
python scripts/start_dashboard.py --host localhost --port 8502启动 MCP Server
python -m src.mcp_server.server服务使用 stdio transport。接入 MCP 兼容客户端时,将客户端命令指向该 Python 模块即可。
示例命令结构:
{
"command": "python",
"args": ["-m", "src.mcp_server.server"]
}项目结构
config/
settings.yaml 主配置文件
prompts/ Transform 和 Rerank 使用的提示词模板
scripts/
ingest.py 文档摄取命令行入口
query.py 查询命令行入口
evaluate.py 评估命令行入口
start_dashboard.py Dashboard 启动入口
src/
core/ 共享类型、配置、trace、查询引擎、响应构建
ingestion/ 摄取流水线和文档生命周期管理
libs/ provider 抽象和适配器
mcp_server/ MCP server 和 tools
observability/ 日志、trace、Dashboard、评估
tests/
unit/ 单元测试
integration/ 集成测试
e2e/ 端到端测试
fixtures/ 测试数据和样例文档测试
运行单元测试:
pytest tests/unit -v运行全部测试:
pytest部分 integration/e2e 测试依赖真实 provider 凭证或本地服务。只运行快速测试时可使用 pytest markers:
pytest -m "unit and not llm"扩展方式
项目通过接口和工厂模式组织 provider。新增或替换组件时,建议保持配置驱动的方式:
新增 LLM provider:
src/libs/llm/新增 Embedding provider:
src/libs/embedding/新增 Vector Store:
src/libs/vector_store/新增 Splitter:
src/libs/splitter/新增 Reranker:
src/libs/reranker/新增 Evaluator:
src/libs/evaluator/或src/observability/evaluation/
新增组件时应完成:
实现对应 base interface。
在 factory 中注册 provider。
在
config/settings.yaml中补充配置项。添加单元测试和必要的集成测试。
更新 README 或 DEV_SPEC 中的配置说明。
运行说明
MCP stdio server 的 stdout 只用于协议消息,日志应写入 stderr。
摄取默认通过 SHA256 做幂等跳过,避免重复处理未变化文件。
查询和摄取 trace 以 JSONL 形式写入本地文件。
当前版本实际实现的向量库后端是 ChromaDB。
API Key、运行数据、日志和索引文件不应提交到仓库。
License
MIT
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/supeng0916-beep/RAG-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server