MinerU MCP Server
# MinerU MCP Server
基于 [FastMCP 3.x](https://gofastmcp.com) 的 MCP 服务器,将 [MinerU](https://mineru.net) 的文档转 Markdown API 暴露为 MCP 工具。
支持 PDF、Word、PPT 及图片格式(JPG、PNG)的解析。
## 工具
| 工具 | 说明 |
|------|------|
| `parse_documents` | 将文件转换为 Markdown(支持本地路径和 URL,可批量处理) |
| `get_ocr_languages` | 获取 OCR 支持的语言列表 |
## 安装
```bash
pip install mineru-mcp-server
```
从源码安装:
```bash
git clone https://github.com/Tongzhao9417/mineru_mcp.git
cd mineru_mcp
pip install -e .
```
核心依赖仅 3 个:`fastmcp>=3.0.0`、`python-dotenv>=1.0.0`、`httpx>=0.24.0`
## 环境变量
在项目根目录创建 `.env` 文件(参考 `.env.example`),或直接设置环境变量:
| 变量 | 说明 | 默认值 |
|------|------|--------|
| `MINERU_API_KEY` | MinerU API 密钥([官网申请](https://mineru.net)) | 必填 |
| `MINERU_API_BASE` | 远程 API 基础 URL | `https://mineru.net` |
| `OUTPUT_DIR` | 转换结果保存路径 | `./downloads` |
| `USE_LOCAL_API` | 是否使用本地 API | `false` |
| `LOCAL_MINERU_API_BASE` | 本地 API 地址(`USE_LOCAL_API=true` 时生效) | `http://localhost:8080` |
## MCP 客户端配置
### Claude Code / Claude Desktop
```json
{
"mcpServers": {
"mineru-mcp": {
"command": "mineru-mcp-server",
"env": {
"MINERU_API_KEY": "your-api-key"
}
}
}
}
```
### 从源码运行
```json
{
"mcpServers": {
"mineru-mcp": {
"command": "uv",
"args": ["--directory", "/path/to/mineru_mcp", "run", "mineru-mcp-server"],
"env": {
"MINERU_API_KEY": "your-api-key"
}
}
}
}
```
## 直接运行
```bash
# stdio 模式(默认,MCP 客户端自动管理)
mineru-mcp-server
# HTTP 模式(独立服务,多客户端可连接)
mineru-mcp-server --transport streamable-http --port 8001
```
> 推荐使用 `streamable-http` 传输模式(MCP 规范推荐),SSE 已被标记为 deprecated。
## parse_documents 参数
| 参数 | 类型 | 说明 | 默认值 |
|------|------|------|--------|
| `file_sources` | string | 文件路径或 URL,多个用逗号分隔 | 必填 |
| `enable_ocr` | bool | 启用 OCR | `false` |
| `language` | string | 文档语言(`ch`/`en` 等) | `ch` |
| `page_ranges` | string | 页码范围,如 `"2,4-6"`(仅远程 API) | `None` |
## 常见问题
**API 返回 401**:检查 `MINERU_API_KEY` 是否正确设置。
**找不到文件**:请使用绝对路径。
**调用超时**:大文档处理耗时较长,建议分批处理或使用本地 API 模式。
## License
MIT
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: get_ocr_languages retrieves a list of supported languages for OCR, while parse_documents converts files to Markdown format. There is no overlap in functionality, making it easy for an agent to select the appropriate tool without confusion.
Both tools follow a consistent verb_noun naming pattern (get_ocr_languages and parse_documents), using snake_case throughout. This predictability enhances readability and usability for agents, with no deviations in style.
With only 2 tools, the server feels thin for a document processing domain that might include OCR and parsing. While the tools cover specific tasks, the scope suggests potential gaps (e.g., no tools for editing, saving, or managing documents), making it borderline too few for comprehensive functionality.
The tools cover basic OCR language retrieval and document parsing, but there are notable gaps in the document processing lifecycle. For example, there are no tools for creating, updating, or deleting documents, which could limit agent workflows and lead to dead ends in more complex tasks.