Skip to main content
Glama
supeng0916-beep

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 均通过接口和工厂模式组织

Related MCP server: Hybrid RAG MCP Server

适用场景

  • 企业内部知识库:技术文档、产品手册、制度文档、客服资料、研究报告等。

  • 团队文档问答:帮助研发、产品、运营或支持团队快速定位内部资料。

  • 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.provider

  • llm.model

  • llm.api_key 或 provider 对应 endpoint 配置

  • embedding.provider

  • embedding.model

  • embedding.api_key 或 provider 对应 endpoint 配置

  • vector_store.persist_directory

  • vector_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/

新增组件时应完成:

  1. 实现对应 base interface。

  2. 在 factory 中注册 provider。

  3. config/settings.yaml 中补充配置项。

  4. 添加单元测试和必要的集成测试。

  5. 更新 README 或 DEV_SPEC 中的配置说明。

运行说明

  • MCP stdio server 的 stdout 只用于协议消息,日志应写入 stderr。

  • 摄取默认通过 SHA256 做幂等跳过,避免重复处理未变化文件。

  • 查询和摄取 trace 以 JSONL 形式写入本地文件。

  • 当前版本实际实现的向量库后端是 ChromaDB。

  • API Key、运行数据、日志和索引文件不应提交到仓库。

License

MIT

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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