<div align="left" style="display: flex; align-items: center; gap: 20px;"> <img src="./logo.png" alt="Read_PDF Logo" width="100" style="flex-shrink: 0;"> <div> ReadPDFx 是一个全面的 MCP(模型上下文协议)服务器,使用官方 MCP SDK 和 STDIO 传输提供智能 OCR 和 PDF 处理功能。它会自动检测 PDF 是否包含数字文本或扫描图像,并应用适当的处理方法。 </div> </div>官方 MCP SDK STDIO 服务器 - 遵循 MCP 协议 2025-06-18
pip install -r requirements.txt
# 测试导入和工具
python validate_tools.py
服务器通过 STDIO 协议运行 - 配置您的 MCP 客户端:
Claude Desktop:
{
"mcpServers": {
"ocr-pdf": {
"command": "python",
"args": ["d:/AI/MCP/python/ocr_pdf_mcp/mcp_server_stdio.py"],
"env": {}
}
}
}
# 安装 Python 依赖项
pip install -r requirements.txt
# 安装 Tesseract
choco install tesseract
pip install -r requirements.txt
brew install tesseract
pip install -r requirements.txt
sudo apt-get install tesseract-ocr
智能处理,自动 OCR 检测:
{
"name": "process_pdf_smart",
"arguments": {
"pdf_path": "/path/to/document.pdf",
"language": "eng"
}
}
从数字 PDF 中直接提取文本:
{
"name": "extract_pdf_text",
"arguments": {
"pdf_path": "/path/to/document.pdf",
"page_range": "1-5"
}
}
对图像文件进行 OCR:
{
"name": "perform_ocr",
"arguments": {
"image_path": "/path/to/image.png",
"language": "eng"
}
}
分析文档结构和元数据:
{
"name": "analyze_pdf_structure",
"arguments": {
"pdf_path": "/path/to/document.pdf"
}
}
处理多个文件:
{
"name": "batch_process_pdfs",
"arguments": {
"input_directory": "/path/to/pdfs/",
"output_directory": "/path/to/output/",
"file_pattern": "*.pdf"
}
}
添加到 claude_desktop_config.json:
{
"mcpServers": {
"readpdfx": {
"command": "python",
"args": ["path/to/readpdfx/run.py"],
"env": {
"PYTHONPATH": "path/to/readpdfx"
}
}
}
}
配置 MCP 服务器:
pythonpath/to/readpdfx/run.pyhttp://localhost:8000 (HTTP 模式)添加到 config.json:
{
"contextProviders": [
{
"name": "mcp",
"params": {
"command": "python",
"args": ["path/to/readpdfx/run.py"]
}
}
]
}
在 settings.json 中配置:
{
"mcp.servers": {
"readpdfx": {
"command": "python",
"args": ["path/to/readpdfx/run.py"]
}
}
}
📁 查看 client-configs/ 以获取详细的集成指南。
POST /mcp/initialize - 初始化 MCP 会话POST /mcp/tools/list - 列出可用工具POST /mcp/tools/call - 调用 MCP 工具GET /mcp/manifest - 获取 MCP 清单GET /health - 健康检查POST /jsonrpc - JSON-RPC 2.0 端点GET /docs - API 文档GET /tools - 工具发现MCP_SERVER_HOST=localhost # 服务器主机
MCP_SERVER_PORT=8000 # 服务器端口
TESSERACT_CMD=/usr/bin/tesseract # Tesseract 路径
PYTHONPATH=. # Python 路径
mcp.json - MCP 协议配置mcp-config.yaml - YAML 配置pyproject.toml - Python 项目配置package.json - Node.js 兼容性# 使用 Docker 构建并运行
docker build -t ocr-pdf-mcp .
docker run -p 8000:8000 -v ./pdf-test:/app/pdf-test:ro ocr-pdf-mcp
# 或使用 Docker Compose
docker-compose up -d
# Linux/macOS
./scripts/docker-deploy.sh run
# Windows
scripts\docker-deploy.bat run
可用的 Docker 命令:
build - 仅构建 Docker 镜像run - 构建并运行容器(默认)start - 启动容器(假设镜像已存在)stop - 停止正在运行的容器logs - 显示容器日志clean - 停止容器并删除镜像status - 显示容器状态# 快速部署
./scripts/k8s-deploy.sh deploy
# 手动部署
kubectl apply -f k8s/ -n ocr-pdf-mcp
k8s/deployment.yaml - 主应用程序部署k8s/deployment.yaml - 服务暴露k8s/ingress.yaml - 外部访问k8s/configmap.yaml - 配置管理k8s/hpa.yaml - 水平 Pod 自动扩展器# 缩放部署
kubectl scale deployment ocr-pdf-mcp --replicas=5 -n ocr-pdf-mcp
# 端口转发以实现本地访问
kubectl port-forward svc/ocr-pdf-mcp-service 8000:80 -n ocr-pdf-mcp
# 查看日志
kubectl logs -f deployment/ocr-pdf-mcp -n o-ocr-pdf-mcp
# 检查状态
kubectl get pods,svc,ingress -n ocr-pdf-mcp
使用 Dockerfile.prod 进行优化的生产构建:
docker build -f Dockerfile.prod -t ocr-pdf-mcp:prod .
# Docker
docker run -e LOG_LEVEL=INFO -e CORS_ORIGINS="*" ocr-pdf-mcp
# Kubernetes - 更新 ConfigMap
kubectl edit configmap ocr-pdf-mcp-config -n ocr-pdf-mcp
# 添加到 deployment.yaml
volumeMounts:
- name: pdf-storage
mountPath: /app/pdf-test
volumes:
- name: pdf-storage
persistentVolumeClaim:
claimName: pdf-storage-pvc
python test_mcp_server.py
# 健康检查
curl http://localhost:8000/health
# 列出工具
curl -X POST http://localhost:8000/mcp/tools/list \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'
# 调用工具
curl -X POST http://localhost:8000/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "process_pdf_smart",
"arguments": {"pdf_path": "/path/to/test.pdf"}
},
"id": 1
}'
python run_server.py --dev --port 8000
readpdfx/
├── run.py # 简单生产运行器
├── run_server.py # 带选项的高级运行器
├── mcp_server.py # 核心 MCP 服务器
├── mcp_tools.py # MCP 工具实现
├── mcp_types.py # MCP 协议类型
├── mcp_server_runner.py # HTTP 服务器运行器
├── client-configs/ # 客户端集成指南
├── backup/ # 遗留文件
└── tests/ # 测试文件
mcp_tools.py 中定义工具模式MCPToolsRegistry 中注册工具服务器无法启动
# 检查端口可用性
netstat -an | grep 8000
# 尝试不同的端口
python run_server.py --port 8001
OCR 不工作
# 检查 Tesseract 安装
tesseract --version
# 安装语言数据
tesseract --list-langs
权限错误
连接超时
curl http://localhost:8000/healthpython run_server.py --dev
curl http://localhost:8000/health
git checkout -b feature/new-toolgit clone https://github.com/irev/mcp-readpdfx.git
cd readpdfx
pip install -r requirements-dev.txt
python test_mcp_server.py
MIT 许可证 - 详见 LICENSE 文件。
为 MCP 社区制作 ❤️