Skip to content

MCP Servers

MinerU MCP: Document Parsing

MinerU MCP turns difficult documents into agent-readable text while keeping parsing steps inspectable.

Complex documents only become research material when they become readable text.

MinerU MCP connects agent clients to MinerU's cloud document-parsing API. The package also includes a shell interface, mineru-cloud, for the same tools.

MCP SERVERXule Lin

Sourcegithub.com/linxule/mineru-mcp ↗

Useful for: systematic literature reviews, batch PDF processing, and research corpus preparation

Published package: 1.2.0, verified on npm on 16 September 2026, with both mineru-mcp and mineru-cloud executables. The package listing is the installation authority; GitHub release notes can lag package publication.

Why it matters

The MCP server lets an agent submit documents, inspect progress, and save results alongside a research corpus. The CLI invokes those same tools in-process, rather than maintaining a second parser.

Why use MinerU MCP instead of manual conversion?

  • integrated workflow: parse documents from an MCP client or the CLI
  • multi-format support: PDF, DOC, DOCX, PPT, PPTX, PNG, JPG, JPEG
  • batch processing: submit up to 200 documents per request, then inspect their individual states
  • local-file input: upload files from your machine, poll for completion, download results
  • parsing options: compare Pipeline and VLM on representative pages before processing a corpus

Warning

Local-file input is not local parsing. Both MCP and CLI send documents to MinerU's cloud; a URL submission asks MinerU to fetch the document. Only help and tool listing are credential-free, non-parsing operations. For material that must not leave the machine, use an approved local parser from the OCR guide.

How it works

Choose pipeline or vlm. The wrapper uses MINERU_DEFAULT_MODEL when model is omitted, falling back to pipeline. VLM is worth testing on complex layouts, tables, and formulas; neither mode removes the need to inspect the extracted text against the original. No corpus-independent accuracy or cost advantage is asserted here.

Tools

The package provides eight tools. Version 1.2.0 adds mineru_parse_long and mineru_merge_slices for long documents.

1. mineru_parse

Process a single document with customizable options.

ParameterDescriptionDefault
urlDocument URL (required)-
modelpipeline or vlmconfigured model, otherwise pipeline
pagesPage ranges to parse (e.g. "1-10,15")all pages
formatsExtra export formats beyond markdown-
ocrOCR switch; source describes it as pipeline-onlyAPI default
formulaFormula recognitionAPI default
tableTable recognitionAPI default
languageExplicit language code, such as enAPI default

formats accepts docx, html, or latex in an array. The wrapper forwards optional recognition/language settings only when supplied; it does not set the former documented formula=false or language=en defaults. Set them explicitly when the workflow depends on them.

Example prompt:

Parse pages 1-25 of this paper with VLM mode, then inspect the tables:
https://arxiv.org/pdf/2401.12345.pdf

2. mineru_status

Check task completion and get download URLs.

ParameterDescriptionDefault
task_idTask ID from a parse request (required)-
formatconcise or detailed responseconcise

Example prompt:

Check the status of my parsing job and download the markdown when ready

3. mineru_batch

Process multiple document URLs simultaneously for SLR corpus preparation.

urls accepts an array or a single URL string. It supports the same model, OCR, formula, table, language, and extra-format options as mineru_parse, but not its pages parameter. For page ranges use single-document parsing or the long-document tool. See limits and considerations before a large batch.

Example prompt:

Batch process these 50 papers using VLM mode for my literature review:
[list of URLs]

4. mineru_batch_status

Retrieve paginated results from batch jobs.

ParameterDescriptionDefault
batch_idBatch ID from a batch request (required)-
limitNumber of results to return in concise output10
offsetPagination offset0
formatconcise or detailed responseconcise

5. mineru_upload_batch

Upload local files from your machine for batch processing. No need to host files at a URL.

ParameterDescriptionDefault
directoryPath to a folder of documents-
filesArray of absolute paths or a single path string-
modelpipeline or vlmconfigured model, otherwise pipeline
formulaRecognize formulasAPI default
tableDetect and extract tablesAPI default
languageOCR languageAPI default
formatsExtra export formats-

Choose either directory or files; if both are passed, files takes precedence. Directory scanning is non-recursive. This tool has no ocr or pages option. Uploading sends the file bytes to the service; prefer an already-public URL when appropriate, not publishing a private file to obtain one.

6. mineru_download_results

Download completed batch results into named folders with {name}.md, an optional {name}_content.json, and available images/. This requires unzip on the machine. The reviewed source recognizes UUID-prefixed content-list filenames that older downloads could miss.

ParameterDescriptionDefault
batch_idBatch ID to download results for (required)-
output_dirLocal directory for output files (required)-
overwriteOverwrite existing filesfalse

Tip

Local-file workflow: upload with mineru_upload_batch, poll with mineru_batch_status, then save with mineru_download_results. Parsing still happens in the cloud. Read the summary for skipped, failed, or unfinished files; a returned download report is not proof that the whole batch succeeded.

7. mineru_parse_long

Submit exactly one url or absolute local file, plus total_pages. Page-count detection is attempted only for local files on macOS through Spotlight; supply the count if metadata is missing. slice_size is a positive integer capped at 200 and defaults to 200. The tool submits one batch of page-range requests, rejecting plans with more than 200 slices. It does not physically split the PDF or bypass the file-size limit.

Optional name, model, ocr, formula, table, and language control the job; formats is not supported here. Each slice receives a range-bearing data_id, such as book__p00001-00200, so it can be ordered during merging. For a local file, the entire file is uploaded once per slice, not once per document. Inspect any upload-problem report before polling.

8. mineru_merge_slices

Pass the long-document batch_id and output_dir; unzip must be installed on the machine. The tool reports pending or failed slices without merging; unexpected states or completed slices without a ZIP produce an error. The MCP call does not wait. Once ready, it orders slices by their encoded ranges, adds slice comments to Markdown, prefixes image names/references to avoid collisions, and saves one document folder. Paged content lists are concatenated in document order; numeric page_idx fields are rebased to the original document's zero-based page numbers.

An existing output folder is refused unless overwrite=true; that option replaces the folder. Missing Markdown or unreadable content lists can yield an incomplete result with notes. Check the merged/expected slice counts, notes, images, and page coverage against the original. A separately resubmitted range does not automatically repair the original batch.

CLI: mineru-cloud

Install the package with Bun to make both executables available. Version 1.1.6 does not include the CLI; update an older installation first.

bun add --global mineru-mcp@1.2.0
# No API key or document request needed for these two commands.
mineru-cloud --help
mineru-cloud list

The CLI calls the MCP server in-process. Commands drop mineru_ and replace underscores with hyphens: parse, status, batch, batch-status, upload-batch, download-results, parse-long, and merge-slices. Options follow the same rule (total_pages becomes --total-pages). It accepts --name 2026 or --name=2026 as a string, converts numeric/boolean fields according to their schemas, and parses JSON for array/object fields. Use explicit booleans such as --table false and shell-quoted arrays such as --formats '["html"]'. Consult list; not every option belongs to every tool.

After separately authorizing cloud processing and configuring MINERU_API_KEY, a long-document workflow is:

mineru-cloud parse-long --url https://example.org/book.pdf --total-pages 520 --name book
# Replace the example URL and returned batch ID with your own.
mineru-cloud merge-slices --batch-id BATCH_ID --output-dir ./books --wait

--wait repeats recognized status/merge/download progress every 10 seconds, with a 30-minute polling budget; it does not turn submission commands into end-to-end jobs. Errors go to stderr with exit 1; final tool text goes to stdout and can include failed tasks, partial downloads, or merge notes even with exit 0.

At the reviewed revision, wait detection is text-based: detailed batch-status output is not polled, concise status can omit failed entries outside its page, and download-results can return immediately when nothing has finished. Inspect batch state explicitly rather than treating --wait or exit 0 as a completeness check. merge-slices --wait polls while recognized pending slices remain; failures alone are final reports, not automatic retries.

Use cases for research

1. SLR corpus preparation

Converting 50+ papers for systematic review:

I have 47 papers from my Scopus search that need to be converted
to markdown for analysis. Here are the URLs:
[paste URLs]

Use VLM mode and flag tables that need checking. This is for my
systematic literature review on organizational learning.

2. Local file processing

When your papers are already downloaded (e.g., from Zotero):

Upload all PDFs in ~/Documents/slr-papers/ using VLM mode,
then download the results to ~/Documents/slr-markdown/

3. Batch processing for literature analysis

Screen a large set before detailed analysis:

Quick parse these 100 papers using pipeline mode to extract
abstracts and main sections. I'll do detailed VLM parsing
on the 20 most relevant ones later.

4. Multilingual research

Set the document language explicitly and check the result:

Parse this German-language paper with OCR enabled and
language set to 'de'. Extract the methodology section.

Host support

MinerU runs as a standard stdio MCP server, available via npx, Smithery, or a local clone.

The MCP entry point remains mineru-mcp; mineru-cloud is the separate shell entry point in the same package. Version 1.1.6 fixed the adapter-resolution problem in fresh 1.1.5 installs. Version 1.2.0 retains the declared Node.js 18-or-newer runtime requirement.

Host support: which research environments this tool works in
HostSupportNotes
Claude Code (CLI)Full support`claude mcp add mineru-mcp -e MINERU_API_KEY=… -- npx -y mineru-mcp`
Claude Code (Desktop "Code" tab)Full supportSame `.mcp.json` as the CLI
Codex CLI / Codex DesktopFull support`codex mcp add mineru --env MINERU_API_KEY=… -- npx -y mineru-mcp`
Antigravity CLIAdjacent supportConfigure through documented Antigravity settings/plugin paths; no verified MCP one-liner
Claude Desktop (chat)Full support`claude_desktop_config.json`
Cursor / VS Code / WindsurfFull supportStandard MCP config
Cherry Studio, Witsy, ClineFull supportSmithery install or manual config

Per-host install commands are in the Install section below.

Install

Two ways to set MinerU up:

  • Manually — get a MINERU_API_KEY from mineru.net, then register the MCP with your client. See the steps below.
  • Via Carrel — run /carrel-setup and say yes when the interview asks about complex / scanned PDFs. Carrel adds MinerU at project level and prompts for the API key.

The manual path works in any MCP client; the Carrel path is Claude Code-only but skips the config steps.

Installation & setup

Step 1: get API key

  1. Visit mineru.net
  2. Create account and generate API key
  3. Save securely (you'll need it for configuration)

Step 2: install MCP

claude mcp add mineru-mcp -e MINERU_API_KEY=your-api-key -- npx -y mineru-mcp

Verify with claude mcp list. You should see mineru-mcp available.

Configuration options

MinerU MCP supports 11+ client configurations, including Windsurf, Cline, Cherry Studio, and Witsy; the full setup guide on GitHub lists every option. Configure the variables below for whichever client you use.

VariableDefaultPurpose
MINERU_API_KEYRequired for API operationsBearer token from mineru.net; not needed for CLI help/list
MINERU_BASE_URLhttps://mineru.net/api/v4API endpoint
MINERU_DEFAULT_MODELpipelineDefault parsing mode

Part of Research Memex

With OCR guide

MinerU MCP integrates PDF conversion into Research Memex workflows when cloud processing is approved. See the PDF to Markdown Conversion Guide for comparison with other methods.

With SLR workflow

Use MinerU for batch PDF processing in your Systematic Literature Review workflow. It works well when Zotero exports need to become agent-readable markdown.

With Interpretive Orchestration

MinerU is an optional MCP for the Interpretive Orchestration Plugin, converting source documents before qualitative analysis.

MinerU vs Mistral OCR

FeatureMinerU MCPMistral OCR (Script)
IntegrationMCP or CLIPython script
ProcessingHosted APIHosted API
Local inputsUploaded to MinerUSent to Mistral
SetupAPI key + MCP or CLIAPI key + Python

Both routes require network access and permission to send the documents to the chosen service. A shell command or locally running script is not an offline OCR engine. The OCR guide separates hosted and local choices.

Limitations & considerations

The maintainer's 16 September source records a 200-page cap per parsing request and 1,000 high-priority pages/day, with excess pages deprioritized rather than rejected. It retains a 200MB file limit and a 200-entry batch limit. Use at most 200 pages per slice for the documented long-document workflow.

There is a documentation discrepancy: the vendor's English API guide still states 600 pages and 2,000 priority pages/day at this review. The tighter values above are source-owner-reported observations, not a new live parse test by Research Memex. Check current service/account limits before a large job; neither source establishes a throughput guarantee. Separate API rate and daily upload limits also apply.

Keep credentials out of shared prompts and shell history. Authentication errors need a credential check by the owner, not an automatic upload retry. pages selects what to parse, not what bytes a local upload discloses.

Resources

cite this page

Lin, X. (2026). MinerU MCP: Document Parsing. Research Memex. https://research-memex.org/docs/toolkit/mineru-mcp

@misc{docs-toolkit-mineru-mcp-2026,
  author = {Xule Lin},
  title = {MinerU MCP: Document Parsing},
  year = {2026},
  howpublished = {\url{https://research-memex.org/docs/toolkit/mineru-mcp}},
  note = {ORCID: 0000-0001-7885-4194}
}

one renderingthe source remains