
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 分