
MinerU MCP
io.github.GermaniU由 GitHub 账号 GermaniU 发布v0.1.0更新于 Oct 27, 2026
Parse PDF, DOCX, PPTX, XLSX and images to Markdown (tables, LaTeX) via a self-hosted MinerU API.
概览
轻量 MCP 适配层,把 PDF、DOCX、PPTX、XLSX 和图片发送到自建的 MinerU API,返回含表格与 LaTeX 的结构化 Markdown。
- 可以做什么
- 同步解析文档为 Markdown,可传服务器端路径或 base64 内容,并设置后端、解析方式、语言、页码范围、公式、表格与图像分析
- 把长文档提交为异步任务,之后查询任务状态并获取生成的 Markdown
- 检查 MinerU 后端是否可达、版本号与排队任务数
- 在系统装有 systemd 时,解析前唤醒已停止的后端
- 适用场景
- 适合已经或计划在自己的硬件上运行 MinerU,并希望助手把文档转成 Markdown 用于 RAG 或分析、同时文档不离开本地网络的场景。它只是传输层,没有 MinerU 后端或想用云端转换服务时并不合适。
- 运行要求
- 需要单独在主机上安装并运行 mineru-api(MinerU 3.4.4),本服务器不含引擎和模型。以本地 stdio 进程运行,可用 Docker 镜像 ghcr.io/germaniu/mineru-mcp 或 uvx,也可作为监听 8202 端口的 HTTP 服务运行。环境变量:MINERU_URL(仅限 loopback 或 host.docker.internal)、MINERU_BACKEND、MINERU_LANG、MINERU_PARSE_METHOD,可选 MINERU_SYSTEMCTL_SCOPE、MCP_HOST、MCP_PORT、MCP_AUTH_TOKEN、MCP_TRANSPORT。使用 uvx 需 uv 0.13.4 及以上。
安装
在 SourceWeft 中
- 打开 控制台中的 MinerU MCP,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
[MinerU MCP — Extracción y parseo de PDFs para agentes IA vía Model Context Protocol]
English · Español
MinerU MCP — Extracción y parseo de PDFs para agentes IA vía Model Context Protocol (MCP)
Transforma cualquier documento PDF en Markdown estructurado, tablas y código LaTeX para tus agentes IA. Servidor MCP open source que expone las capacidades de extracción de MinerU (
PDF-Extract-Kit/MinerU2.5-VLM) a Claude Code, Cursor, Windsurf, Hermes Gateway y cualquier cliente compatible con Model Context Protocol. FastMCP HTTP/SSE + soporte para path local o Base64, cero dependencias en clientes, 100% en tu hardware.
[License: MIT] [MCP] [Python] [CI] [FastMCP] [PRs Welcome]
Tags: mcp-server · mineru · pdf-parser · ocr · latex · ai-agents · fastmcp · claude-code · cursor · hermes-gateway · local-first · self-hosted
El agente manda un PDF por MCP y recibe Markdown con ecuaciones en LaTeX y tablas — MinerU corre en tu server, el cliente no instala PyTorch. Grabado con scripts/demo_parse.py contra un mineru-api real.
💡 Por qué existe
Extraer texto estructurado, tablas complejas y fórmulas matemáticas de archivos PDF suele requerir entornos Python pesados con PyTorch, OCR y modelos de visión en cada máquina cliente. MinerU MCP resuelve esto actuando como un adaptador middleware HTTP/SSE desacoplado:
- 🚀 Cero Instalación Local: Cualquier cliente MCP procesa documentos vía HTTP/SSE en puerto
8202pasando unfile_pathlocal o enviando el PDF codificado enfile_base64. - 📊 Markdown Estructurado y LaTeX: Convierte encabezados, listas, tablas complejas y ecuaciones matemáticas en código LaTeX estándar listo para RAG.
- 🧠 La GPU se comparte, no se pelea:
pipeline(default) pide ~1.5 GB de VRAM;hybrid-engineyvlm-engine~4 GB y dan más precisión. Si el host tiene el GPU Broker, cada parseo le pide la VRAM antes y la devuelve al terminar, así que convive con un LLM local en la misma tarjeta.
⚡ Quickstart
mineru-mcp es solo la capa MCP: necesitas un mineru-api corriendo (mineru==3.4.4). Cómo montarlo en el host: docs/SERVER_SETUP.md.
Hay dos formas de correrlo. Elige una:
Requisito:
uv≥ 0.13.4 (opip≥ 26.2.2); las versiones anteriores aún confían en la CA emSign comprometida (GHSA-6q48-6c7w-9gw2).uv pip install -e .lo comprueba solo ([tool.uv] required-versionenpyproject.toml);uvx --from git+…no, porque corre fuera del proyecto: revisauv --version.
Opción A — HTTP (server compartido)
Endpoint MCP: http://<server>:8202/mcp. Pégalo en la config de tu cliente (ver docs/CLIENTS.md — Claude Code, Cursor, Continue, OpenCode, Hermes Gateway).
Opción B — stdio con Docker
La imagen ghcr.io/germaniu/mineru-mcp habla MCP por stdio y llama a un mineru-api que corre en el host. Configúrala en tu cliente MCP:
Dentro del contenedor file_path se refiere al sistema de archivos del contenedor: manda los documentos con file_base64 + file_name, o monta un directorio con -v. Sin systemd en el contenedor no hay wake-on-demand ni GPU Broker: mineru-api tiene que estar ya arriba.
Sin Docker:
uvx --from git+https://github.com/GermaniU/mineru-mcp mineru-mcp --stdio, conuv≥ 0.13.4 (config endocs/CLIENTS.md).
🔍 Diagnóstico
mineru_health dice si mineru-api responde, su versión y las tareas en cola, y distingue un backend dormido (detenido por inactividad) de uno roto. Se puede llamar sin cliente MCP, con el smoke test con curl.
⚙️ Configuración (Variables de Entorno)
Crea un archivo .env o exporta las siguientes variables:
Qué protege y qué no cada ajuste: SECURITY.md.
🛠️ Herramientas Expuestas (Tool Reference)
start_page y end_page cuentan desde 0: la demo pide start_page: 4, end_page: 5 y recibe las páginas 5 y 6 del paper. hybrid-engine + effort=high + image_analysis=true convierte figuras en diagramas Mermaid.
🎯 Alcance actual
MinerU MCP es deliberadamente delgado. Hace una cosa: llevar documentos de un cliente MCP a tu mineru-api y devolver el Markdown. El parseo lo hace MinerU.
Lo que SÍ hace
- ✅ PDF, DOCX, PPTX, XLSX, PNG y JPG a Markdown con títulos, tablas (HTML) y fórmulas (LaTeX).
- ✅ Recibe el documento como ruta del server (
file_path) o como contenido (file_base64+file_name) desde otra máquina. - ✅ Parseo síncrono para documentos cortos y asíncrono con
task_idpara los largos, con rango de páginas. - ✅ Si
mineru-apiestá detenido y hay systemd, lo arranca (systemctl --user start, o sin--userconMINERU_SYSTEMCTL_SCOPE=system) y espera a que responda antes de parsear. - ✅ Pide y devuelve la VRAM al GPU Broker cuando el host lo tiene.
Lo que NO hace (todavía)
- ❌ No incluye
mineru-apini los modelos. Se instalan aparte en el host, con sus servicios:docs/SERVER_SETUP.md. - ❌ No manda documentos fuera de tu red. Si
MINERU_URLno es loopback, se niega a enviarlos; no usa la API cloud de MinerU. - ❌ No devuelve las imágenes extraídas, solo el Markdown.
- ❌ No hace streaming parcial del Markdown en extracciones largas: usa
submit_parse_tasky consulta el estado. - ❌ No guarda documentos ni resultados. El archivo temporal del base64 se borra al terminar.
- ❌ En Docker no hay wake-on-demand ni GPU Broker:
mineru-apitiene que estar arriba.
Si necesitas algo de la lista NO, abre un issue con un caso de uso real.
🧭 ¿Y los otros servidores MCP para documentos?
Hay tres familias, y resuelven problemas distintos.
En una frase:
- Si no tienes GPU ni servidor y no te importa subir los documentos → el MCP cloud oficial de MinerU.
- Si quieres un conversor que viva en la misma máquina que el cliente → Docling o MarkItDown.
- Si ya tienes (o quieres) MinerU en tu propio servidor y que los documentos no salgan de tu red, compartido por todos los clientes de la LAN → este.
🔌 Conectar tu cliente
Configuración lista para copiar en docs/CLIENTS.md (HTTP y stdio):
- 🟦 Claude Code —
claude mcp add -s user -t http mineru http://<server>:8202/mcp(las tools aparecen en sesiones nuevas). - 🟧 Cursor — Settings → MCP Servers → Add new MCP Server.
- 🟩 Continue (VS Code / JetBrains) —
~/.continue/config.json. - 🟪 OpenCode —
~/.config/opencode/config.json. - 🟨 Hermes Gateway —
mcp_serversen~/.hermes/config.yaml. - 🟫 Claude Desktop — stdio con
uvxo Docker, en la máquina demineru-api.
Snippets listos en examples/.
🧪 Smoke test con curl
El modo HTTP es stateless: una sola request basta, sin initialize ni mcp-session-id.
Con MCP_AUTH_TOKEN añade -H "Authorization: Bearer <token>".
Para la prueba completa (health + parseo real de dos páginas de un paper de arXiv), la demo del GIF:
🧱 Arquitectura
⚠️ Límites del sistema:
mineru-mcpes únicamente la capa de transporte e interfaz MCP. No incluye el motor de procesamientomineru-apini la descarga en caché de modelos de HuggingFace.
Cada tool vive en src/mineru_mcp/tools/; server.py solo las registra en FastMCP y arranca el transporte. Detalle técnico en docs/ARCHITECTURE.md.
🤝 Contribuye
PRs, issues y forks bienvenidos (MIT).
Reglas (resumen):
- Cambios chicos y directos. Toca el camino de código más angosto que explica el problema.
- Sin abstracciones especulativas ni dependencias nuevas que no hagan falta.
- Nombres y parámetros de las tools se preservan: los clientes dependen de ellos.
- Identifiers en inglés, comentarios y commits en español. Conventional Commits (
feat:,fix:,docs:,refactor:,test:,chore:).
Detalle completo en CONTRIBUTING.md.
🩹 Troubleshooting
mineru_health responde MinerU no disponible (el backend está inactivo)
mineru-apiestá detenido (por ejemplo, por un watchdog de inactividad que devuelve la VRAM). No es un error:parse_documentosubmit_parse_tasklo arrancan.
BLOQUEADO por seguridad: MINERU_URL apunta a …
MINERU_URLno es loopback nihost.docker.internal. Es a propósito: los documentos no salen de tu máquina. VerSECURITY.md.
MinerU no respondió tras 90s de arrancarlo o mineru_health dice inactivo con el backend arriba
- El scope no coincide con la unit:
MINERU_SYSTEMCTL_SCOPE=userbusca~/.config/systemd/user/mineru-api.serviceysystembusca/etc/systemd/system/mineru-api.service. Conuser, el MCP tiene que correr en la sesión systemd del mismo usuario (por ejemplo, como unit de usuario). Verdocs/SERVER_SETUP.md.
MinerU no responde en … y aquí no hay systemd para arrancarlo
- Corres en Docker o macOS: no hay forma de despertar
mineru-api. Arráncalo a mano y reintenta.
406 Not Acceptable al hacer curl al endpoint
- Falta el header
Accept: application/json, text/event-stream.
401 {"error":"unauthorized"}
- El server tiene
MCP_AUTH_TOKEN: mandaAuthorization: Bearer <token>.
Error: timeout. El documento puede ser muy grande
- Usa
submit_parse_tasky consulta conget_task_status, o parsea por rangos constart_page/end_page.
📚 Documentación
docs/SERVER_SETUP.md— instalación demineru-api, modelos y servicios en el host.docs/CLIENTS.md— config para Claude Code, Cursor, Continue, OpenCode, Hermes Gateway y Claude Desktop.docs/ARCHITECTURE.md— componentes, flujo de una petición y GPU Arbiter.SECURITY.md— modelo de amenazas y cómo reportar vulnerabilidades.CONTRIBUTING.md— entorno de desarrollo, reglas de estilo y flujo de trabajo.CHANGELOG.md— historial de cambios.
📄 Licencia
MIT — úsalo, fórkalo, mejóralo.
Hecho por @GermaniU. Si te sirvió, una ⭐ ayuda a que más gente lo encuentre. Si algo se rompió, abre un issue y lo arreglamos.
来源:README.md,提交 c34ede5
工具
0版本历史
1- v0.1.0最新Oct 19, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分