返回市场
检索增强生成-MCP

检索增强生成-MCP

作者:mohandshamada2 星标更新:2025-10-31

项目介绍

PDF RAG MCP 服务器

Python 3.9+ License: MIT UV MCP

一款高性能的**模型上下文协议(MCP)**服务器,用于智能文档处理,包括检索增强生成(RAG)。支持处理PDF、Excel电子表格、Word文档和图像,并具备语义搜索和合规性检查功能。

✨ 特性

  • 📄 多格式支持:PDF、Excel、Word、图像(带OCR)
  • 🔍 语义搜索:使用FAISS向量存储的RAG驱动查询
  • 合规性检查:对比文档与规范
  • 📊 报告生成:文本、JSON和HTML合规性报告
  • 🤖 Claude桌面集成:无缝MCP集成
  • 闪电般快速:使用UV包管理器实现10-100倍加速
  • 🐳 Docker就绪:生产级容器化

🚀 快速开始(60秒)

方案1:UV安装(推荐 - 最快 ⚡)

Unix/Linux/macOS:

pip install uv

Windows:

git clone https://github.com/mohandshamada/RAG-MCP.git
cd pdf_rag_mcp_server
.\install_uv.ps1

运行服务器:

uv run python main.py

方案2:传统pip

git clone https://github.com/mohandshamada/RAG-MCP.git
cd pdf_r_ mcp_server
pip install -r requirements.txt
python main.py

方案3:Docker

git clone https://github.com/mohandshamada/RAG-MCP.git
cd pdf_rag_mcp_server
docker-compose up -d

📋 要求

  • Python: 3.9或更高版本
  • 可选: Tesseract OCR用于图像处理
  • 可选: Java用于PDF表格提取

🎯 使用示例

命令行客户端

# 导入文档
uv run python client.py ingest document.pdf -n my_doc

# 语义搜索查询
uv run python client.py query my_doc "关键要求是什么?"

# 列出所有索引文档
uv run python client.py list

# 对比规范
uv run python client.py compare my_doc requirements.txt --format html

# 生成合规性报告
uv run python client.py report my_doc specs.json --format json

# 删除文档
uv run python client.py delete my_doc

Python API

from src.rag_server import ingest_document, rag_query, compare_document_to_specification

# 导入文档
result = ingest_document("document.pdf", "my_doc")

# 查询
results = rag_query("my_doc", "这是关于什么的?", top_k=5)

# 对比规范
with open("requirements.txt") as f:
    specs = f.read()

comparison = compare_document_to_specification(
    "my_doc",
    specs,
    "requirements",
    threshold=0.7
)

🖥️ Claude桌面集成

添加到您的Claude桌面配置中:

位置:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

配置:

{
  "mcpServers": {
    "rag-document-server": {
      "command": "uv",
      "args": [
        "run",
        "python",
        "/绝对路径/to/pdf_rag_mcp_server/src/rag_server.py"
      ],
      "cwd": "/绝对路径/to/pdf_rag_mcp_server"
    }
  }
}

不使用UV:

{
  "mcpServers": {
    "rag-document-server": {
      "command": "python",
      "args": ["/绝对路径/to/pdf_rag_mcp_server/src/rag_server.py"],
      "env": {
        "PYTHONPATH": "/绝对路径/to/pdf_rag_mcp_server"
      }
    }
  }
}

重启Claude桌面,您将拥有访问文档处理工具的能力!

🐳 Docker部署

快速开始

# 构建并启动
docker-compose up -d

# 检查状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 在容器中使用CLI
docker-compose exec rag-mcp-server python client.py list

# 停止
docker-compose down

生产部署

# 构建
docker-compose build

# 使用自定义配置运行
docker-compose -f docker-compose.yml up -d

# 扩展(如有需要)
docker-compose up -d --scale rag-mcp-server=3

# 查看健康状态
docker-compose ps

Docker命令参考

# 代码更改后重新构建
docker-compose build --no-cache

# 前台运行(查看日志)
docker-compose up

# 在容器中执行命令
docker-compose exec rag-mcp-server python verify_installation.py

# 访问容器shell
docker-compose exec rag-mcp-server /bin/bash

# 清理一切
docker-compose down -v --remove-orphans

🌐 部署选项

1. 本地开发

# 使用UV安装(最快)
./install_uv.sh  # 或在Windows上使用install_uv.ps1

# 运行服务器
uv run python main.py

2. 生产服务器(Linux)

# 安装依赖
./install_uv.sh

# 作为systemd服务运行(创建服务文件)
sudo nano /etc/systemd/system/rag-mcp-server.service

服务文件(/etc/systemd/system/rag-mcp-server.service):

[Unit]
Description=RAG MCP Server
After=network.target

[Service]
Type=simple
User=youruser
WorkingDirectory=/路径/to/pdf_rag_mcp_server
ExecStart=/路径/to/.venv/bin/python main.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

启用并启动:

sudo systemctl enable rag-mcp-server
sudo systemctl start rag-mcp-server
sudo systemctl status rag-mcp-server

3. Docker生产

# 生产部署
docker-compose -f docker-compose.yml up -d

# 带监控
docker-compose -f docker-compose.yml -f docker-compose.monitoring.yml up -d

# 反向代理后面(nginx)
# 添加nginx配置以进行端口转发

4. 云部署

AWS EC2

# 启动EC2实例(Ubuntu 22.04)
# 安装Docker
sudo apt-get update
sudo apt-get install docker.io docker-compose -y

# 克隆并部署
git clone <您的仓库>
cd pdf_rag_mcp_server
docker-compose up -d

Google Cloud Run

# 构建并推送
gcloud builds submit --tag gcr.io/PROJECT_ID/rag-mcp-server
gcloud run deploy rag-mcp-server --image gcr.io/PROJECT_ID/rag-mcp-server

Azure容器实例

# 构建并推送到ACR
az acr build --registry REGISTRY_NAME --image rag-mcp-server:latest .
az container create --resource-group RG_NAME --name rag-mcp-server \
  --image REGISTRY_NAME.azurecr.io/rag-mcp-server:latest

⚙️ 配置

环境变量

# 数据目录
export DATA_DIR=/路径/to/data
export LOG_DIR=/路径/to/logs

# 模型设置
export EMBEDDING_MODEL=all-MiniLM-L6-v2
export CHUNK_SIZE=1000
export CHUNK_OVERLAP=200

# 限制
export MAX_FILE_SIZE_MB=500
export TOP_K_DEFAULT=5

自定义配置

创建config/config.py或修改现有配置:

# 嵌入模型
EMBEDDING_MODEL = "all-MiniLM-L6-v2"

# 文本分块
CHUNK_SIZE = 1000
CHUNK_OVERLAP = 200

# 查询默认值
TOP_K_DEFAULT = 5

# 文件限制
MAX_FILE_SIZE_MB = 500

# 支持的格式
SUPPORTED_FORMATS = ["pdf", "xlsx", "docx", "png", "jpg"]

🧪 测试

运行测试

# 综合测试套件
uv run python run_tests.py

# 验证脚本
uv run python verify_installation.py

# 创建测试文件
uv run python test_data/create_test_files.py

测试覆盖率

# 使用pytest(开发依赖)
uv pip install -e ".[dev]"
uv run pytest --cov=src --cov-report=html

📊 性能

速度基准

操作时间详情
PDF导入~5-30ms/页使用PyMuPDF
Excel处理~5-20ms/表使用openpyxl
RAG查询~50-200msFAISS搜索
批量查询(3个文档)~150-600ms并行搜索

使用UV包管理器

安装pipUV加速
新安装~5分钟~30秒10x
缓存安装~2分钟~5秒24x
Docker构建~10分钟~2分钟5x

📖 文档

🔧 故障排除

安装问题

未找到UV:

# Unix/Linux/macOS
export PATH="$HOME/.cargo/bin:$PATH"

# Windows
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","User")

权限错误:

# Unix/Linux/macOS
chmod +x install_uv.sh

# Windows(以管理员身份运行)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

依赖冲突:

# UV有更好的解决方法
uv pip compile pyproject.toml

# 回退到pip
pip install -r requirements.txt

运行时问题

导入错误:

# 确保设置了PYTHONPATH
export PYTHONPATH=/路径/to/pdf_rag_mcp_server

Windows上的编码错误:

# 已在verify_installation.py中修复
# 现在自动使用UTF-8编码

未找到Tesseract:

# 安装Tesseract OCR
# Ubuntu: sudo apt-get install tesseract-ocr
# macOS: brew install tesseract
# Windows: 从https://github.com/UB-Mannheim/tesseract/wiki 下载

Docker问题

构建失败:

# 清除缓存并重新构建
docker-compose build --no-cache

容器无法启动:

# 查看日志
docker-compose logs rag-mcp-server

# 验证健康状况
docker-compose ps

端口冲突:

# 更改docker-compose.yml中的端口
ports:
  - "8001:8000"  # 使用不同的主机端口

🏗️ 架构

核心组件

┌─────────────────────────────────────────┐
│         MCP服务器(FastMCP)             │
├─────────────────────────────────────────┤
│  文档处理:                             │
│  - PDF(PyMuPDF)                      │
│  - Excel(openpyxl)                   │
│  - Word(python-docx)                 │
│  - 图像(pytesseract)                │
├─────────────────────────────────────────┤
│  RAG流水线:                           │
│  - 文本分块(langchain)              │
│  - 嵌入(HuggingFace)               │
│  - 向量存储(FAISS)                 │
├─────────────────────────────────────────┤
│  比较引擎:                             │
│  - 规范解析                            │
│  - 语义匹配                            │
│  - 合规评分                            │
├─────────────────────────────────────────┤
│  输出:                                 │
│  - 命令行客户端                         │
│  - MCP工具                             │
│  - API函数                             │
└─────────────────────────────────────────┘

数据流

文档输入 → 提取 → 分块 → 嵌入 → 向量存储
                                                          ↓
查询输入 → 嵌入 → 相似性搜索 → 结果 ← 向量存储
                                                          ↓
规范 → 解析 → 语义匹配 → 合规性报告

🤝 贡献

欢迎贡献!请:

  1. 分叉仓库
  2. 创建特性分支(git checkout -b feature/amazing-feature
  3. 提交更改(git commit -m '添加惊人的功能'
  4. 推送到分支(git push origin feature/amazing-feature
  5. 打开Pull Request

📝 许可

此项目采用MIT许可 - 详情见LICENSE文件。

🙏 致谢

📞 支持

🎯 路线图

  • Web API(FastAPI)
  • 持久向量数据库(Qdrant/Milvus)
  • 认证/授权
  • 监控和指标
  • Kubernetes部署清单
  • CI/CD管道
  • 更多文档格式
  • 高级OCR能力

📈 状态

  • 构建:✅ 通过
  • 测试:✅ 75%通过率
  • 覆盖率:🔄 进行中
  • 部署:✅ 生产就绪
  • 性能:⚡ 使用UV优化

为MCP生态系统制作 ❤️

⚡ 使用UV实现10-100倍加速 | 🤖 Claude桌面就绪 | 🐳 Docker优化