MinerU Open MCP

io.github.opendatalab由 GitHub 账号 opendatalab 发布v1.0.20更新于 Oct 24, 2026

Parse PDFs, images, doc, docx, ppt, pptx, xls, xlsx, html into Markdown using MinerU API.

已验证STDIO仅桌面文件与存储知识与记忆

概览

AI 生成的概览

一个本地 MCP 服务器,让助手通过 MinerU 云端解析 API 把 PDF、Office 文件、图片和 HTML 转成 Markdown。

可以做什么
把 PDF、DOCX、PPTX、XLSX、图片和 HTML 文件解析为 Markdown,公式转为 LaTeX、表格转为 HTML,使用 MinerU 云端 API,可选免费 Flash 模式或需令牌的精确模式(更高限额、支持 JSON、DOCX、HTML、LaTeX 等额外输出格式)。列出服务支持的 109 种 OCR 语言。把解析结果保存到本地输出目录。在启用日志时可删除旧的服务器日志文件。
适用场景
适合助手需要读取或总结非纯文本文档的场景,例如扫描版 PDF、多栏论文、演示文稿或电子表格,也适合把解析内容送入 RAG 或知识库流程。小文件快速预览用 Flash 模式即可;长文档或大文件适合精确模式。
运行要求
以 Python 包形式在本地运行(例如通过 uvx),需桌面客户端。需要访问 MinerU 云端 API 的网络。MINERU_API_TOKEN 可选:不设置则使用免费 Flash 模式(仅 Markdown,单文件最多 20 页、10 MB);设置后可用更大文件、批量处理和额外输出格式。OUTPUT_DIR 指定结果保存位置。
安装前请注意
文档会上传到 MinerU 云服务解析,请勿发送机密或受监管材料。API 令牌属于机密,通过 MINERU_API_TOKEN 传入,避免写入共享配置文件。服务器会向磁盘写入解析文件,启用日志时还会删除旧日志文件。免费 Flash 模式按 IP 限流,并有大小和页数上限。

安装

在 SourceWeft 中

  1. 打开 控制台中的 MinerU Open MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

MinerU-Ecosystem

The official ecosystem toolkit for MinerU Open API

Empowering developers and AI agents with seamless document parsing capabilities — PDF · Word · PPT · Images · Web pages → Markdown / JSON · VLM+OCR dual engine · 109 languages · MCP Server · LangChain / RAGFlow / Dify / FastGPT native integration.

[License] [MinerU] [Online]

中文文档


📖 Overview

MinerU-Ecosystem provides a full suite of tools, SDKs, and integrations built on top of the MinerU Open API. Whether you're building production pipelines, integrating with LangChain for RAG, or enabling AI agents to parse documents on the fly — this repository has you covered.

MinerU is an open-source, high-accuracy document parsing engine that converts unstructured documents (PDFs, images, Office files, etc.) into machine-readable Markdown and JSON, purpose-built for LLM pre-training, RAG, and agentic workflows.

Core capabilities:

  • Formulas → LaTeX · Tables → HTML, accurate complex layout reconstruction
  • Supports scanned docs, handwriting, multi-column layouts, cross-page table merging
  • Output follows human reading order with automatic header/footer removal
  • VLM + OCR dual engine, 109-language OCR recognition

🏗️ Repository Structure

MinerU-Ecosystem/├── cli/                  # Command-line tool for document parsing├── sdk/                  # Multi-language SDKs│   ├── python/           #   Python SDK│   ├── go/               #   Go SDK│   └── typescript/       #   TypeScript SDK├── langchain_mineru/     # LangChain document loader integration├── llama-index-readers-mineru/     # LlamaIndex document reader integration├── mcp/                  # Model Context Protocol server (Python)└── skills/               # AI agent skills (Claude Code, OpenClaw, etc.)

🔑 Supported APIs

All components support both API modes:

Comparison🎯 Precision Extract API⚡ Quick Parse API (Agent-Oriented)
Auth✅ Token required❌ Not required (IP rate-limited)
Model Versionspipeline (default) / vlm (recommended) / MinerU-HTMLFixed lightweight pipeline model
File Size Limit≤ 200 MB≤ 10 MB
Page Limit≤ 200 pages≤ 20 pages
Batch Support✅ Supported (≤ 200 files)❌ Single file only
Output FormatsMarkdown, JSON, Zip; optional export to DOCX / HTML / LaTeXMarkdown only

🧭 Choose Your Integration Path

Not sure where to start? Pick the path that matches your use case:

text
I want to...│├── 🌐 Try it instantly, with no install and no code│   └── Web App → https://mineru.net/OpenSourceTools/Extractor│├── 💻 Parse documents from the terminal│   └── CLI → cli/│       flash-extract: no token, best for quick previews│       extract: full features, better for production workflows│├── 🐍 Integrate it into my Python / Go / TypeScript project│   └── SDK → sdk/python/ | sdk/go/ | sdk/typescript/│├── 🤖 Enable my AI agent to parse documents│   ├── Call the CLI directly → cli/│   ├── Use natural-language skills (OpenClaw, ZeroClaw, etc.) → skills/│   └── Use MCP protocol (Cursor, Claude Desktop, Windsurf, etc.) → mcp/│├── 📚 Build a RAG pipeline / knowledge base│   ├── LangChain Loader → langchain_mineru/│   └── LlamaIndex Reader → llama-index-readers-mineru/│       flash mode: zero-token quick start│       precision mode: OCR, tables, formulas, and higher fidelity

🚀 Quick Start

💻 CLI (cli/)

A fast command-line tool for parsing documents directly from your terminal.

Installation
bash
# Linux / macOScurl -fsSL https://cdn-mineru.openxlab.org.cn/open-api-cli/install.sh | sh
powershell
# Windows (PowerShell)irm https://cdn-mineru.openxlab.org.cn/open-api-cli/install.ps1 | iex

Flash Extract (no login)

bash
mineru-open-api flash-extract report.pdf

Precision Extract (login required)

bash
# First-time setupmineru-open-api auth
# Extract to stdoutmineru-open-api extract paper.pdf
# Save all resources (images/tables) to directorymineru-open-api extract report.pdf -o ./output/
# Export to multiple formatsmineru-open-api extract report.pdf -f docx,latex,html -o ./results/

Web Crawl

bash
mineru-open-api crawl https://www.example.com

Batch Processing

bash
# All PDFs in current directorymineru-open-api extract *.pdf -o ./results/
# From a file listmineru-open-api extract --list filelist.txt -o ./results/

🐍 Python SDK

Installation
bash
pip install mineru-open-sdk

Flash Extract (no token)

python
from mineru import MinerU
client = MinerU()result = client.flash_extract("https://cdn-mineru.openxlab.org.cn/demo/example.pdf")print(result.markdown)

Precision Extract (token required)

python
from mineru import MinerU
client = MinerU("your-api-token")result = client.extract("https://cdn-mineru.openxlab.org.cn/demo/example.pdf")print(result.markdown)print(result.images)  # extracted image list

🐹 Go SDK

Installation
bash
go get github.com/opendatalab/MinerU-Ecosystem/sdk/go@latest

Flash Extract

go
package main
import (    "context"    "fmt"    mineru "github.com/opendatalab/MinerU-Ecosystem/sdk/go")
func main() {    client := mineru.NewFlash()    result, err := client.FlashExtract(        context.Background(),        "https://cdn-mineru.openxlab.org.cn/demo/example.pdf",    )    if err != nil {        panic(err)    }    fmt.Println(result.Markdown)}

Precision Extract

go
client, err := mineru.New("your-api-token")if err != nil {    panic(err)}result, err := client.Extract(    context.Background(),    "https://cdn-mineru.openxlab.org.cn/demo/example.pdf",)if err != nil {    panic(err)}fmt.Println(result.Markdown)

Precision Extract with options

go
result, err := client.Extract(ctx, "./paper.pdf",    mineru.WithModel("vlm"),    mineru.WithLanguage("en"),    mineru.WithPages("1-20"),    mineru.WithExtraFormats("docx"),    mineru.WithPollTimeout(10*time.Minute),)if err != nil {    panic(err)}if err := result.SaveAll("./output"); err != nil {    panic(err)}

Batch Processing

go
ch, err := client.ExtractBatch(ctx, []string{"a.pdf", "b.pdf"})if err != nil {    panic(err)}for result := range ch {    fmt.Printf("%s: %s\n", result.Filename, result.State)}

Web Crawling

go
result, err := client.Crawl(ctx, "https://www.example.com")if err != nil {    panic(err)}fmt.Println(result.Markdown)

🟦 TypeScript / JavaScript SDK

Installation
bash
npm install mineru-open-sdk

Flash Extract

typescript
import { MinerU } from "mineru-open-sdk";
const client = new MinerU();const result = await client.flashExtract(  "https://cdn-mineru.openxlab.org.cn/demo/example.pdf");console.log(result.markdown);

Precision Extract

typescript
import { MinerU } from "mineru-open-sdk";
const client = new MinerU("your-api-token");const result = await client.extract(  "https://cdn-mineru.openxlab.org.cn/demo/example.pdf");console.log(result.markdown);console.log(result.images);

Precision Extract with options

typescript
import { MinerU, saveAll } from "mineru-open-sdk";
const client = new MinerU("your-api-token");const result = await client.extract("./paper.pdf", {  model: "vlm",       // "vlm" | "pipeline" | "html"  language: "en",  pages: "1-20",  extraFormats: ["docx"],  timeout: 600,});await saveAll(result, "./output");

Batch Processing

typescript
for await (const result of client.extractBatch(["a.pdf", "b.pdf"])) {  console.log(`${result.filename}: ${result.state}`);}

Web Crawling

typescript
const result = await client.crawl("https://www.example.com");console.log(result.markdown);

🤖 Use with Claude / Cursor (MCP Server)

MinerU provides an official MCP Server allowing Claude Desktop, Cursor, Windsurf, and any MCP-compatible AI client to parse documents as a native tool.

No API key needed — Flash mode works out of the box, free, up to 20 pages / 10 MB per file.

Configure: claude_desktop_config.json / .cursor/mcp.json

json
{  "mcpServers": {    "mineru": {      "command": "uvx",      "args": ["mineru-open-mcp"],      "env": {        "MINERU_API_TOKEN": "your_key_here"      }    }  }}

Streamable HTTP mode (web-based MCP clients)

bash
MINERU_API_TOKEN=your_key mineru-open-mcp --transport streamable-http --port 8001
json
{  "mcpServers": {    "mineru": {      "type": "streamableHttp",      "url": "http://127.0.0.1:8001/mcp"    }  }}

Tools exposed via MCP:

ToolDescription
parse_documentsConvert PDF, DOCX, PPTX, images, HTML to Markdown
get_ocr_languagesList all 109 supported OCR languages
clean_logsDelete old server log files (when ENABLE_LOG=true)

Environment Variables:

VariableDescriptionDefault
MINERU_API_TOKENMinerU cloud API token—
OUTPUT_DIRDirectory for saved output~/mineru-downloads
ENABLE_LOGSet true to write log filesdisabled
MINERU_LOG_DIROverride log file directory~/.mineru-open-mcp/logs/

🦜 Use in RAG with LangChain

langchain-mineru is an official LangChain Document Loader — parse any document into LangChain Document objects with one line of code.

Installation
bash
pip install langchain-mineru

Minimal example (no token)

1. Basic usage (flash mode by default, no token required)

python
from langchain_mineru import MinerULoader
loader = MinerULoader(source="demo.pdf")   # flash mode, no token neededdocs = loader.load()print(docs[0].page_content[:500])print(docs[0].metadata)

Default is mode="flash", which is ideal for quick previews and lightweight integrations.

2. Precision mode (token required)

Best for long documents, larger files, and workflows that need higher-fidelity extraction or standard API outputs. Flash mode also supports OCR, table, and formula switches within flash API limits.

python
from langchain_mineru import MinerULoader
loader = MinerULoader(    source="/path/to/manual.pdf",    mode="precision",    token="your-api-token",  # or set MINERU_TOKEN    split_pages=True,    pages="1-5",)
docs = loader.load()for doc in docs:    print(doc.metadata.get("page"), doc.page_content[:200])

3. Use it in a LangChain RAG pipeline

python
from langchain_mineru import MinerULoaderfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain_openai import OpenAIEmbeddingsfrom langchain_community.vectorstores import FAISS
loader = MinerULoader(source="demo.pdf", split_pages=True)docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=1200, chunk_overlap=200)chunks = splitter.split_documents(docs)
vs = FAISS.from_documents(chunks, OpenAIEmbeddings())results = vs.similarity_search("What are the key conclusions in this document?", k=3)
for r in results:    print(r.page_content[:200])

Default is mode="flash" (no API token required). Switch to mode="precision" for higher fidelity with token auth. For RAG use cases, split_pages=True is usually a better default for PDFs because it gives you page-level Document granularity.

## Use in RAG with LlamaIndex

A document reader for LlamaIndex that parses PDFs, Word files, PPTs, images, and Excel files through MinerU and returns LlamaIndex-compatible Document objects for indexing and retrieval.

Installation
bash
pip install llama-index-readers-mineru
Usage

1. Flash mode (default, no token required)

Good for quick setup and lightweight parsing. Output is returned as Markdown.

python
from llama_index.readers.mineru import MinerUReader
reader = MinerUReader()documents = reader.load_data("https://cdn-mineru.openxlab.org.cn/demo/example.pdf")
print(documents[0].text[:500])print(documents[0].metadata)

2. Precision mode (token required)

Best for longer documents, larger files, and use cases that need higher-fidelity extraction or standard API outputs. Flash mode also supports OCR, formula, and table switches within flash API limits.

python
from llama_index.readers.mineru import MinerUReader
reader = MinerUReader(    mode="precision",    token="your-api-token",  # or set MINERU_TOKEN    pages="1-20",)documents = reader.load_data("/path/to/paper.pdf")

3. Use it in a LlamaIndex pipeline

python
from llama_index.core import VectorStoreIndexfrom llama_index.readers.mineru import MinerUReader
reader = MinerUReader(split_pages=True)documents = reader.load_data("/path/to/paper.pdf")
index = VectorStoreIndex.from_documents(documents)query_engine = index.as_query_engine()response = query_engine.query("Summarize the main findings of this document")print(response)

Default is mode="flash" with no token required. Switch to mode="precision" when you need higher parsing fidelity. For PDF-based RAG pipelines, split_pages=True is recommended so each page becomes a separate Document.


🤖 AI Agent Skills (skills/)

Pre-built skills for AI coding agents, wrapping the mineru-open-api CLI for use in agent workflows.


🔗 All Integrations

Framework / ToolStatusNotes
LangChain✅ Officialpip install langchain-mineru
LlamaIndex✅ CommunitySee MinerU-Ecosystem
RAGFlow✅ SupportedDocument loader integration
RAG-Anything✅ SupportedMulti-modal RAG pipeline
Flowise✅ SupportedNode-based RAG builder
Dify✅ Native PluginBuilt-in document loader
FastGPT✅ Native PluginIntegration guide
Claude Desktop✅ MCPuvx mineru-open-mcp
Cursor✅ MCP.cursor/mcp.json config
Windsurf✅ MCPstdio / streamable-http
OpenClaw / ZeroClaw✅ Agent SkillClawHub
Go SDK✅ Officialgo get .../sdk/go@latest
TypeScript SDK✅ Officialnpm install mineru-open-sdk
Python SDK✅ Officialpip install mineru-open-sdk

📚 Documentation

ResourceLink
MinerU Open API Docsmineru.net/apiManage/docs
MinerU Online Demomineru.net/OpenSourceTools/Extractor
MinerU Open Sourcegithub.com/opendatalab/MinerU

📄 License

This project is licensed under the Apache License 2.0.

来源:README.md,提交 95357b5

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.0.20最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分