Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Mineru

FreeNot checked

MinerU MCP Server - 完整的文档处理解决方案。支持PDF/PPTX/DOCX/图片,真正异步并发,批量异步并行,MCP自然语言交互,性能提升10倍。

GitHubEmbed

About

MinerU MCP Server - 完整的文档处理解决方案。支持PDF/PPTX/DOCX/图片,真正异步并发,批量异步并行,MCP自然语言交互,性能提升10倍。

README

MinerU MCP Server

完整的 MinerU 文档处理解决方案 — v4.0.0 全面升级版

精准 API + Agent 轻量 API · 全参数透传 · 智能错误重试 · 自动拆分合并 · Token 自动续期

MinerU Version Python License MCP Tests

快速开始架构处理流程MCP 工具文档


✨ v4.0.0 亮点(2026-05-16)

  • 🚀 覆盖官方完整能力:精准 API(/api/v4/)+ Agent 轻量 API(/api/v1/agent/)双线
  • 🔥 6 个 MCP 工具process_document / process_directory / process_document_lite / query_task_status / renew_tokens / get_token_status
  • 🛡️ 健壮性大幅升级:30+ 错误码分类、智能重试、Token 自动续期、URL 服务端直传(无需下载)
  • 📐 服务端 200 页限制适配:自动拆分 180 页/片处理后合并;无缝处理 1000+ 页文档
  • 🐛 修复严重 bug:图片引用路径错位(影响所有历史输出,v4.0.0 已彻底解决)
  • 🧪 测试体系:30 unit + 31 integration + 24 regression + 2 e2e = 87 tests, 100% pass

详见 docs/CHANGELOG.mddocs/API_V4_REFERENCE.md


🏗️ 架构

5 层 / 10 模块 / 6 个 MCP 工具 / 双 API 客户端 — 一图看懂:

架构层次图

模块 职责
① MCP 接入层 mineru_mcp_server.py 6 个 MCP 工具的 schema + 调度
② 协调编排层 auto_split.py / mineru_batch_async.py / mineru_async.py / progress.py 拆分→处理→合并的本地协调(无网)
③ API 客户端层 MinerUAsyncClient / AgentAPIClient 调 MinerU 服务端的两套 API
④ 基础设施 api_errors.py / token_manager.py / path_fixer.py / split_large_file.py 错误处理、Token 管理、路径修复、PDF 物理拆分
⑤ 外部依赖 MinerU 服务端 / batch_login.py / all_tokens.json 6 个账号配额 6000 页/天

🔄 处理流程

输入 → 验证 → 拆分判断 → 提交 → 错误处理 → 轮询 → 下载 → 合并 → Markdown 输出:

处理流程图

关键能力

  • URL 优先服务端直传(不下载到本地),失败兜底走下载-上传
  • 图片自动开 OCR,HTML 自动切 MinerU-HTML 模型,Office 自动切 pipeline
  • 30+ 错误码分类:RETRYABLE / AUTH / QUOTA / PERMANENT,分别配重试策略
  • path_fixer 修复 v3.x 严重 bugimages/x.jpg{stem}_images/x.jpg,593 张图片缺失 0

🔪 自动拆分协调流程

服务端硬限制 200 页 / 200 MB。超规格文件全自动拆分→并发处理→智能合并,对调用方完全透明:

自动拆分流程

真实案例:某 496 页 PDF → 自动拆 3 片(166+166+164)→ 3 片同时处理 → 合并为单 .md ~210 K 字符。总耗时 ~3 分钟(vs 串行单线程预估 ~9 分钟)。


🛠️ MCP 工具

6 个 MCP 工具 · 决策树:

MCP 工具决策树

# 工具 用途 关键参数
1 process_document 精准 API 单文件处理 11 参数(含 language / is_ocr / page_ranges / extra_formats / data_id 等)
2 process_directory 精准 API 批量并行 10 参数 + max_workers
3 process_document_lite Agent 轻量 API(≤10MB / 20 页 / 免 Token) 6 参数
4 query_task_status 异步查询任务进度 task_id, lite
5 get_token_status Token 状态报告
6 renew_tokens 触发 Token 自动续期 force, headless

完整参数参考:docs/API_V4_REFERENCE.md


📊 性能与实测

真实数据(5 个文档 1229 页混合 PDF 集合)

文件 页数 处理方式 MD 字符 图片 缺失
PDF-A 91 直接处理 48,117 23 0
PDF-B 143 直接处理 82,443 1 0
PDF-C 190 直接处理 243,271 519 0
PDF-D 309 自动拆 2 片 247,435 30 0
PDF-E 496 自动拆 3 片 209,471 0 0
合计 1,229 830,737 573 0

总耗时(含 OCR 全部 5 个文件):约 10 分钟

异步并发性能对比

场景 串行处理 v4 并发处理 提升
单文件 23 秒 23 秒
3 文件 149 秒 88 秒 1.7×
10 文件 300 秒 30 秒 10×

OCR 收益分布(A/B 实测)

PDF 异体字(无 OCR) 异体字(有 OCR) OCR 收益
PDF-A 5,063 0 🟢 巨大(GBK 字体异体字 → 标准中文)
其他 4 本 0 0 🟡 微小(PDF 已用标准字体)

结论:OCR 对 GBK 古籍 PDF 收益巨大;对标准 Unicode PDF 收益不显著。process_document 默认 is_ocr=False,扫描型 PDF 显式传 is_ocr=True 即可。


🚀 快速开始

一键安装

git clone https://github.com/neosun100/mineru-mcp-server.git
cd mineru-mcp-server
./install_mcp.sh

配置账户

cp config/accounts.yaml.example config/accounts.yaml
vi config/accounts.yaml  # 填入账号信息

批量登录获取 Token(默认 headless)

.venv/bin/python3 src/batch_login.py

脚本会自动:访问登录页 → 填账号密码 → 自动通过阿里云验证码 → 保存 Token 到 all_tokens.json。Token 有效期约 90 天。

使用

方式 1: MCP 工具(推荐,在 Kiro CLI / Claude Desktop 中)

"帮我处理 ~/Documents/report.pdf"
"处理 ~/Documents 目录下所有 PDF"
"查看 MinerU 的 Token 状态"

方式 2: 命令行批量

# 批量异步并行
.venv/bin/python3 src/mineru_batch_async.py ~/Documents '*.pdf'

📦 安装

系统要求

  • Python 3.10+
  • uv(Python 包管理器)
  • Git

手动安装

# 1. 克隆仓库
git clone https://github.com/neosun100/mineru-mcp-server.git
cd mineru-mcp-server

# 2. 创建虚拟环境(必须用 uv,避免环境冲突)
uv venv
source .venv/bin/activate

# 3. 安装运行时依赖(必须用 uv pip)
uv pip install -r requirements.txt
.venv/bin/playwright install chromium

# 4. 安装开发依赖(可选,跑测试时需要)
uv pip install -r requirements-dev.txt

# 5. 配置账户
cp config/accounts.yaml.example config/accounts.yaml
vi config/accounts.yaml

# 6. 批量登录
.venv/bin/python3 src/batch_login.py

⚠️ 重要:所有 Python 包安装必须使用 uv pip install,不要用裸 pip install uv 严格隔离虚拟环境,避免与系统 Python 冲突。

MCP 服务器配置

编辑 ~/.kiro/settings/mcp.json(或 Claude Desktop 配置):

{
  "mcpServers": {
    "mineru": {
      "command": "/path/to/mineru-mcp-server/.venv/bin/python3",
      "args": ["/path/to/mineru-mcp-server/src/mineru_mcp_server.py"],
      "env": {
        "PYTHONPATH": "/path/to/mineru-mcp-server/src"
      }
    }
  }
}

Kiro Skill 安装(可选)

cp -r skills/mineru-token-manager ~/.kiro/skills/

安装后,AI 助手会自动:处理文档前检查 Token 是否过期 → 过期时自动触发 headless 续期 → 续期完成继续处理。


🧪 测试

测试体系

类型 数量 用时 说明
unit 30 0.4s 毫秒级、无依赖
integration 31 0.4s 不调真网,用 tmp/mock
regression 24 0.6s 防已修 bug 复发
e2e 2 ~30s 真调 MinerU API
合计 87 100% 通过

运行方式

# 默认(不调网络)
.venv/bin/python3 -m pytest

# 全量含 e2e(真调 API)
RUN_E2E=1 .venv/bin/python3 -m pytest

# 按 marker
.venv/bin/python3 -m pytest -m unit
.venv/bin/python3 -m pytest -m regression

详见 tests/README.md


🔧 技术栈

技术 版本 用途
niquests 3.10+ HTTP/2+HTTP/3 异步客户端
MCP SDK 1.0+ Model Context Protocol
Rich 13.0+ 终端 UI
PyPDF2 3.0+ PDF 解析 + 物理拆分
Playwright 1.40+ 自动登录(headless)
pytest 8.0+ 测试框架

📁 项目结构

mineru-mcp-server/
├── src/                                # 核心代码(10 个模块)
│   ├── mineru_mcp_server.py            # ① MCP 接入层
│   ├── auto_split.py                   # ② 拆分协调
│   ├── mineru_batch_async.py           # ② 批量协调
│   ├── mineru_async.py                 # ② 单文件协调 + ③ 精准 API 客户端
│   ├── agent_api.py                    # ③ Agent 轻量 API 客户端
│   ├── progress.py                     # ② 进度回调
│   ├── api_errors.py                   # ④ 错误码表 + 重试策略
│   ├── token_manager.py                # ④ Token 管理
│   ├── path_fixer.py                   # ④ Markdown 路径修复
│   ├── split_large_file.py             # ④ PDF 物理拆分
│   └── batch_login.py                  # ⑤ headless 自动登录
│
├── tests/                              # 87 个测试
│   ├── unit/                           # 30 单元测试
│   ├── integration/                    # 31 集成测试
│   ├── regression/                     # 24 回归测试(防 bug 复发)
│   ├── e2e/                            # 2 端到端测试(真调 API)
│   └── README.md                       # 测试运行手册
│
├── docs/                               # 完整文档
│   ├── CHANGELOG.md                    # 详细变更日志
│   ├── API_V4_REFERENCE.md             # 官方 API 参数完整参考
│   ├── images/                         # 4 张架构 / 流程图
│   └── ...
│
├── config/
│   └── accounts.yaml.example           # 账号配置模板
│
├── skills/
│   └── mineru-token-manager/           # Kiro Skill
│
├── requirements.txt                    # 运行时依赖
├── requirements-dev.txt                # 开发依赖
├── install_mcp.sh                      # 一键安装脚本
└── README.md                           # 本文档

📚 文档


🤝 贡献

欢迎提交 Issue 和 Pull Request!

提交前请确保:

  1. uv pip install -r requirements-dev.txt
  2. .venv/bin/python3 -m pytest 全过
  3. 涉及 bug 修复时新增 regression 测试

📄 许可证

MIT License


🙏 致谢

  • MinerU — 提供强大的文档解析 API
  • Anthropic — Model Context Protocol
  • niquests — 现代 HTTP 客户端

⭐ 如果对你有帮助,请给个 Star!

GitHub · Made with ❤️ by neosun100

from github.com/neosun100/mineru-mcp-server

Installing Mineru

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/neosun100/mineru-mcp-server

FAQ

Is Mineru MCP free?

Yes, Mineru MCP is free — one-click install via Unyly at no cost.

Does Mineru need an API key?

No, Mineru runs without API keys or environment variables.

Is Mineru hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Mineru in Claude Desktop, Claude Code or Cursor?

Open Mineru on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Mineru with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs