一款高性能的**模型上下文协议(MCP)**服务器,用于智能文档处理,包括检索增强生成(RAG)。支持处理PDF、Excel电子表格、Word文档和图像,并具备语义搜索和合规性检查功能。
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
git clone https://github.com/mohandshamada/RAG-MCP.git
cd pdf_r_ mcp_server
pip install -r requirements.txt
python main.py
git clone https://github.com/mohandshamada/RAG-MCP.git
cd pdf_rag_mcp_server
docker-compose up -d
# 导入文档
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
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桌面配置中:
位置:
%APPDATA%\Claude\claude_desktop_config.json~/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-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-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
# 使用UV安装(最快)
./install_uv.sh # 或在Windows上使用install_uv.ps1
# 运行服务器
uv run python main.py
# 安装依赖
./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
# 生产部署
docker-compose -f docker-compose.yml up -d
# 带监控
docker-compose -f docker-compose.yml -f docker-compose.monitoring.yml up -d
# 反向代理后面(nginx)
# 添加nginx配置以进行端口转发
# 启动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
# 构建并推送
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
# 构建并推送到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-200ms | FAISS搜索 |
| 批量查询(3个文档) | ~150-600ms | 并行搜索 |
| 安装 | pip | UV | 加速 |
|---|---|---|---|
| 新安装 | ~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-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函数 │
└─────────────────────────────────────────┘
文档输入 → 提取 → 分块 → 嵌入 → 向量存储
↓
查询输入 → 嵌入 → 相似性搜索 → 结果 ← 向量存储
↓
规范 → 解析 → 语义匹配 → 合规性报告
欢迎贡献!请:
git checkout -b feature/amazing-feature)git commit -m '添加惊人的功能')git push origin feature/amazing-feature)此项目采用MIT许可 - 详情见LICENSE文件。
为MCP生态系统制作 ❤️
⚡ 使用UV实现10-100倍加速 | 🤖 Claude桌面就绪 | 🐳 Docker优化