Skip to main content
Glama

mineru-mcp

MCP server for MinerU document parsing API — extract text, tables, and formulas from PDFs, DOCs, and images.

Features

  • VLM model — 90%+ accuracy for complex documents

  • Pipeline model — Fast processing for simple documents

  • Local file upload — Upload files from disk for batch parsing

  • Batch processing — Parse up to 200 documents at once

  • Download & rename — Extract markdown with original filenames

  • Page ranges — Extract specific pages only

  • Long documents — MinerU caps files at 200 pages; mineru_parse_long slices and mineru_merge_slices stitches

  • CLI twin — mineru-cloud runs the same tools from a shell (no MCP context cost)

  • 109 language OCR support

  • Optimized for Claude Code — 73% token reduction vs alternatives

Related MCP server: LandingAI ADE MCP Server

Tools

Tool

Description

mineru_parse

Parse a document URL

mineru_status

Check task progress, get download URL

mineru_batch

Parse multiple URLs (max 200)

mineru_batch_status

Get batch results with pagination

mineru_upload_batch

Upload local files for batch parsing

mineru_download_results

Download results as named markdown files

mineru_parse_long

Document >200 pages: one batch of ≤200-page page_ranges slices

mineru_merge_slices

Stitch a sliced batch into one {name}.md + {name}_content.json (page_idx re-based) + images/

Installation

Requires Node.js 18+ and a MinerU API key.

CLI Install (one-liner)

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

# Codex CLI (OpenAI)
codex mcp add mineru --env MINERU_API_KEY=your-api-key -- npx -y mineru-mcp

# Gemini CLI (Google)
gemini mcp add -e MINERU_API_KEY=your-api-key mineru npx -y mineru-mcp

Claude Desktop

Add to your claude_desktop_config.json:

OS

Config path

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Linux

~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mineru": {
      "command": "npx",
      "args": ["-y", "mineru-mcp"],
      "env": {
        "MINERU_API_KEY": "your-api-key"
      }
    }
  }
}

VS Code

Add to .vscode/mcp.json (workspace) or open Command Palette > MCP: Open User Configuration (global):

{
  "servers": {
    "mineru": {
      "command": "npx",
      "args": ["-y", "mineru-mcp"],
      "env": {
        "MINERU_API_KEY": "your-api-key"
      }
    }
  }
}

Note: VS Code uses "servers" as the top-level key, not "mcpServers". Other VS Code forks (Trae, Void, PearAI, etc.) typically use this same format.

Cursor

Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

{
  "mcpServers": {
    "mineru": {
      "command": "npx",
      "args": ["-y", "mineru-mcp"],
      "env": {
        "MINERU_API_KEY": "your-api-key"
      }
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json (Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json):

{
  "mcpServers": {
    "mineru": {
      "command": "npx",
      "args": ["-y", "mineru-mcp"],
      "env": {
        "MINERU_API_KEY": "your-api-key"
      }
    }
  }
}

Cline

Open MCP Servers icon in Cline panel > Configure > Advanced MCP Settings, then add:

{
  "mcpServers": {
    "mineru": {
      "command": "npx",
      "args": ["-y", "mineru-mcp"],
      "env": {
        "MINERU_API_KEY": "your-api-key"
      }
    }
  }
}

Cherry Studio

In Settings > MCP Servers > Add Server, set Type to STDIO, Command to npx, Args to -y mineru-mcp, and add environment variable MINERU_API_KEY. Or paste in JSON/Code mode:

{
  "mineru": {
    "name": "MinerU",
    "command": "npx",
    "args": ["-y", "mineru-mcp"],
    "env": {
      "MINERU_API_KEY": "your-api-key"
    },
    "isActive": true
  }
}

Witsy

In Settings > MCP Servers, add a new server with Type: stdio, Command: npx, Args: -y mineru-mcp, and set environment variable MINERU_API_KEY to your API key.

Codex CLI (TOML config)

Alternatively, edit ~/.codex/config.toml directly:

[mcp_servers.mineru]
command = "npx"
args = ["-y", "mineru-mcp"]

[mcp_servers.mineru.env]
MINERU_API_KEY = "your-api-key"

Gemini CLI (JSON config)

Alternatively, edit ~/.gemini/settings.json directly:

{
  "mcpServers": {
    "mineru": {
      "command": "npx",
      "args": ["-y", "mineru-mcp"],
      "env": {
        "MINERU_API_KEY": "your-api-key"
      }
    }
  }
}

Windows

On Windows, npx requires a shell wrapper. Replace "command": "npx" with:

{
  "command": "cmd",
  "args": ["/c", "npx", "-y", "mineru-mcp"],
  "env": {
    "MINERU_API_KEY": "your-api-key"
  }
}

For CLI tools on Windows:

claude mcp add mineru-mcp -e MINERU_API_KEY=your-api-key -- cmd /c npx -y mineru-mcp
codex mcp add mineru --env MINERU_API_KEY=your-api-key -- cmd /c npx -y mineru-mcp

ChatGPT

ChatGPT only supports remote MCP servers over HTTPS — local stdio servers like this one are not directly supported. You would need to deploy behind a public URL with HTTP transport.

CLI: mineru-cloud

Every tool is also a shell command — the CLI runs the MCP server in-process over an in-memory transport, so the two can't drift. Same env vars (MINERU_API_KEY, MINERU_BASE_URL, MINERU_DEFAULT_MODEL).

mineru-cloud list                                    # commands + options (from the tool schemas)
mineru-cloud parse --url https://arxiv.org/pdf/2303.08774 --pages 1-10
mineru-cloud status --task-id <id> --wait            # --wait polls every 10s until done/failed
mineru-cloud batch --urls '["https://…/a.pdf","https://…/b.pdf"]'
mineru-cloud download-results --batch-id <id> --output-dir ./papers --wait

# > 200 pages: slice, then stitch
mineru-cloud parse-long --url https://…/book.pdf --total-pages 520 --name book
mineru-cloud merge-slices --batch-id <id> --output-dir ./books --wait

Options mirror the tool parameters with _ → - (--total-pages, --output-dir); numbers, true/false and JSON arrays are coerced. Install: bun add -g mineru-mcp (or npm i -g).

Configuration

Environment Variable

Default

Description

MINERU_API_KEY

(required)

Your MinerU API Bearer token

MINERU_BASE_URL

https://mineru.net/api/v4

API base URL

MINERU_DEFAULT_MODEL

pipeline

Default model: pipeline or vlm

Get your API key at mineru.net

Usage

Parse a single URL

mineru_parse({
  url: "https://example.com/document.pdf",
  model: "vlm",        // optional: "pipeline" (default) or "vlm" (90% accuracy)
  pages: "1-10,15",    // optional: page ranges
  ocr: true,           // optional: enable OCR (pipeline only)
  formula: true,       // optional: formula recognition
  table: true,         // optional: table recognition
  language: "en",      // optional: language code
  formats: ["html"]    // optional: extra export formats
})

Check task progress

mineru_status({
  task_id: "abc-123",
  format: "concise"    // optional: "concise" (default) or "detailed"
})

Concise output: done | abc-123 | https://cdn-mineru.../result.zip

Batch parse URLs

mineru_batch({
  urls: ["https://example.com/doc1.pdf", "https://example.com/doc2.pdf"],
  model: "vlm"
})

Check batch progress

mineru_batch_status({
  batch_id: "batch-123",
  limit: 10,           // optional: max results (default: 10)
  offset: 0,           // optional: skip first N results
  format: "concise"    // optional: "concise" or "detailed"
})

Upload local files

mineru_upload_batch({
  directory: "/path/to/pdfs",  // scan directory for supported files
  // OR
  files: ["/path/to/doc1.pdf", "/path/to/doc2.pdf"],  // explicit file list
  model: "vlm",        // optional
  formula: true,       // optional
  table: true,         // optional
  language: "en",      // optional
  formats: ["html"]    // optional
})

Returns batch_id for tracking. Each file's original name is preserved via data_id (spaces become underscores).

Download results as markdown

mineru_download_results({
  batch_id: "batch-123",       // from mineru_upload_batch or mineru_batch
  output_dir: "/path/to/output",
  overwrite: false             // optional: overwrite existing files
})

Output filenames are derived from data_id (e.g., my_paper_title.md). Spaces in original filenames become underscores.

Typical local file workflow

mineru_upload_batch → mineru_batch_status (poll) → mineru_download_results

Supported Formats

  • PDF, DOC, DOCX, PPT, PPTX

  • PNG, JPG, JPEG

Limits

  • Single file: 200MB max, 200 pages max (use pages to parse a longer file in ≤200-page slices — verified 2026-09-16)

  • Daily quota: 1000 pages at high priority (excess is deprioritized, not rejected)

  • Batch: max 200 files per request

Release 1.1.6

Restores Node.js 18 HTTP compatibility for fresh installs by retaining MCP SDK 1.29.x and its Node 18-compatible Hono adapter. SDK 1.30 permits an adapter that requires Node.js 20. Version 1.1.5 passed the locked dependency checks but the published-package check exposed an HTTP initialization failure on a fresh install. CI now installs the packed package without the repository lock and exercises both transports on Node.js 18. The SDK compatibility bound is intentional; revisit it with this consumer-install gate before adopting a newer SDK.

Release 1.1.5

Maintenance release: audited dependency updates, Express 5 and Zod 4 compatibility, and regression coverage for both transports. The MCP handshake and HTTP startup message now report the package version instead of the stale 1.0.2 value. Tool inputs and document-processing behavior are unchanged.

Development

Use Bun 1.4.2 and Node.js 24 for the build and CI checks:

bun install --frozen-lockfile
bun audit
bun run build
bun run test
bun run test:package

The runtime tests exercise the built stdio and HTTP servers against a local MinerU API double. They check tool schemas, request mapping, pagination defaults, provider errors, malformed HTTP requests, and session termination without real credentials or API calls. They do not verify live parsing or file extraction. Dependabot updates the Bun manifest and lockfile together. CI audits dependencies and runs the build and runtime tests before publishing on version tags.

Publishing

Bump package.json and both version fields in server.json, complete the checks above, merge, then push the matching vX.Y.Z tag. CI publishes to npm, waits for the exact package version to become available, then registers it with the MCP Registry. If registry registration fails after npm succeeds, retry only registration using the existing immutable tag:

gh workflow run publish-mcp.yml --ref main -f registry_tag=v1.1.6

License

MIT

Available Tools

8 tools
mineru_batchA

Parse multiple URLs in one batch (max 200). Preferred over mineru_upload_batch — faster and more reliable. Use public URLs (arXiv, SSRN, publisher sites) when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
ocrNoEnable OCR (pipeline only)
urlsYesArray of document URLs, or a single URL string
modelNopipeline=fast, vlm=90% accuracy
tableNoTable recognition
formatsNoExtra export formats
formulaNoFormula recognition
languageNoLanguage code: ch, en, etc

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral disclosure burden, but it only adds a max batch size and a comparative reliability claim. It does not disclose whether this is an asynchronous job submission, what the response contains, how to track progress, or how to retrieve results, even though sibling tool names like mineru_batch_status and mineru_download_results imply such a workflow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with the core action and limit front-loaded. Every clause earns its place: the batch limit, the preferred-alternative note, and the public-URL guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with no output schema and no annotations, the description under-specifies the call flow: it doesn't mention job submission, status polling, result download, or how the model/formats/ocr options relate to the batch behavior. An agent would have to infer the asynchronous workflow purely from sibling tool names.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description adds the 'max 200' constraint on the urls parameter, which is not present in the schema. It also connects 'batch' to multiple URLs, providing a small but useful semantic addition beyond the raw property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and object: 'Parse multiple URLs in one batch,' and adds a concrete limit of max 200. It also explicitly distinguishes itself from the closest sibling, mineru_upload_batch, by noting it is preferred and faster/more reliable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names mineru_upload_batch as the alternative and states when this tool should be preferred, including a speed/reliability rationale and a recommendation to use public URLs. However, it never states when not to use this tool relative to other siblings such as mineru_parse or mineru_parse_long, and it doesn't cover limits beyond the max 200 hint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mineru_batch_statusC

Get batch results. Supports pagination for large batches.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return
formatNoOutput formatconcise
offsetNoSkip first N results
batch_idYesBatch ID from mineru_batch

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does add that pagination is supported, but it does not say what the returned results look like, whether output is status information or extracted content, or how the format parameter affects the response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and contains no filler. Both sentences serve a purpose, though it is so brief that it sacrifices useful behavioral and contextual detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and several sibling tools, the description is too sparse. It does not explain the relationship to mineru_batch, the meaning of the 'format' enum values, or what the agent should expect in the response, making it incomplete for confident invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description's pagination note reinforces limit/offset intent but adds little beyond what the schema's 'Max results to return' and 'Skip first N results' already convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action and resource: 'Get batch results.' It is distinct enough from the parser tools and from mineru_status, though it does not explicitly differentiate itself from mineru_status or explain whether 'results' means output files, statuses, or both.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool instead of mineru_status, mineru_download_results, or other siblings. The pagination note hints at large batches, but there is no explicit condition, prerequisite, or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mineru_download_resultsA

Download batch results and extract named paper folders. Each folder contains {name}.md, {name}_content.json (structured TOC), and images/. Output includes parsed title — verify it matches the expected paper.

ParametersJSON Schema
NameRequiredDescriptionDefault
batch_idYesBatch ID from mineru_upload_batch or mineru_batch
overwriteNoOverwrite existing files
output_dirYesDirectory to save markdown files

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that it creates per-paper folders containing markdown, JSON, and images, and it includes a caution to verify the parsed title. However, it does not mention whether the output directory is created, how overwrite behaves beyond the schema default, or any network/permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences are used efficiently: action, expected folder structure, and a verification note. No redundancy, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the output structure and a verification step, which is helpful. However, it lacks guidance on error conditions, whether the output directory must exist or is created, and what happens when overwrite=false and files already exist. With no output schema or annotations, a bit more context would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents batch_id, output_dir, and overwrite. The description adds only general context (e.g., 'batch results') and does not elaborate on parameter formats, directory creation, or overwrite semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool downloads batch results and extracts named paper folders, and it details the expected folder contents. It is specific about verb and resource, but it does not explicitly differentiate itself from sibling tools such as mineru_status or mineru_parse_long.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is used to retrieve batch outputs after processing, but it gives no explicit when-to-use guidance or mention of alternatives. It also does not state prerequisites like waiting for batch completion or when to prefer mineru_status over this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mineru_merge_slicesA

Stitch the slices of a mineru_parse_long batch into one {name}/{name}.md (+ {name}_content.json with page_idx re-based to the whole document, + images/). Slices are ordered by their page range; each is marked with an HTML comment. Waits for nothing — if any slice is still processing, it reports and you re-run later.

ParametersJSON Schema
NameRequiredDescriptionDefault
batch_idYesBatch ID from mineru_parse_long
overwriteNoOverwrite an existing merged folder
output_dirYesDirectory to write the merged document folder into

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses output artifacts, page_idx re-basing, ordering by page range, HTML comments, and non-blocking wait behavior. It does not detail overwrite side effects or the exact report/return format, but the main behavioral traits are transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core action and outputs appear first, followed by ordering details and the wait/retry behavior. Every sentence contributes useful information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description covers the main inputs, outputs, ordering, and retry guidance. It omits the exact definition of {name} and the structure of the report/status, but it provides enough for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add much parameter-specific meaning beyond the schema; it introduces {name} without defining its source and does not explain overwrite behavior beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Stitch'), a specific resource ('slices of a mineru_parse_long batch'), and concrete output artifacts ({name}/{name}.md, {name}_content.json, images/). This clearly differentiates it from sibling tools like mineru_parse_long, which creates slices, and mineru_download_results, which downloads results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly ties usage to a mineru_parse_long batch and tells the agent to re-run later if any slice is still processing. It does not explicitly discuss when not to use the tool or name alternative merge/result tools, but the intended context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mineru_parseB

Parse a document URL. Returns task_id to check status.

ParametersJSON Schema
NameRequiredDescriptionDefault
ocrNoEnable OCR (pipeline only)
urlYesDocument URL (PDF, DOC, PPT, images)
modelNopipeline=fast, vlm=90% accuracy
pagesNoPage range: 1-10,15 or 2--2
tableNoTable recognition
formatsNoExtra export formats
formulaNoFormula recognition
languageNoLanguage code: ch, en, etc

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full behavioral burden. It is sparse, only stating that it returns a task_id, but does not clarify anything about data handling, potential side effects, or whether results are destroyed. The description is too brief to provide adequate transparency for an operation that likely creates a task.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient at 13 words, front-loaded with the main action and the key return value. It is concise, though it could potentially add a bit more useful detail without significant bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no annotations and no output schema, the description is far too minimal. It should explain the purpose of the returned task_id, how to use it with sibling tools (e.g., mineru_status), and any prerequisites, but it only provides a single line. Significant gaps exist for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage for all parameters, including hints like 'Enable OCR' and 'pipeline=fast, vlm=90% accuracy'. The description adds no extra parameter context, but the baseline of 3 is appropriate given the schema's rich coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Parse') and resource ('a document URL'), and explains that it returns a task_id for status checking. It differentiates from the status and batch tools by focusing on single URL parsing, though it does not explicitly contrast with siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The mention of 'pipeline' and 'vlm' models gives implicit usage context (e.g., when to choose one over the other), but there is no explicit statement about when this tool is preferred over mineru_parse_long for long documents or mineru_batch for multiple URLs. The usage guidance is moderate but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mineru_parse_longA

Parse a document LONGER than 200 pages (MinerU's per-file cap) by submitting it as one batch of ≤200-page slices with page_ranges. Give total_pages (from mdls -name kMDItemNumberOfPages, pdfinfo, or the viewer) — it is auto-detected only for local files on macOS. Returns a batch_id; poll with mineru_batch_status, then stitch with mineru_merge_slices. Files ≤200 pages: use mineru_parse instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
ocrNoEnable OCR (pipeline only)
urlNoPublic document URL (preferred)
fileNoAbsolute local file path (uploaded once per slice — slow for big files)
nameNoOutput name for the merged result (default: from URL/file name)
modelNopipeline=fast, vlm=90% accuracy
tableNoTable recognition
formulaNoFormula recognition
languageNoLanguage code: ch, en, etc
slice_sizeNoPages per slice (≤200)
total_pagesNoTotal page count of the document

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and discloses key behaviors: it slices into ≤200-page batches, requires total_pages, auto-detects total_pages only for local files on macOS, and returns a batch_id for asynchronous polling. It does not cover failure modes or side effects, but the core execution model is clearly spelled out.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences each serve a distinct purpose: the core use case, the total_pages requirement, and the follow-up/alternative routing. The 200-page condition is front-loaded and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex long-document tool with no output schema and no annotations, the description covers the selection rule, prerequisite information, and end-to-end workflow. It could be more explicit about how slices are derived from total_pages, but it provides enough context for an agent to make a correct first call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds real meaning for total_pages by explaining how to obtain it and the macOS auto-detection caveat, which goes beyond the schema. It loses a point for referencing 'page_ranges', a concept not present in the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: parse documents longer than 200 pages, which is MinerU's per-file cap. It also distinguishes this tool from mineru_parse by page count, so an agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use mineru_parse for files ≤200 pages, and gives the post-call workflow: poll mineru_batch_status, then stitch with mineru_merge_slices. This is clear when-to-use and when-not-to-use guidance with named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mineru_statusB

Check task progress. Returns download URL when done.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput formatconcise
task_idYesTask ID from mineru_parse

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It reveals that the tool reports progress and eventually returns a download URL, but it does not describe what an in-progress response looks like, failure states, or confirm the operation is read-only without side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core action is front-loaded, and the additional outcome detail earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the schema covers its parameters, but there is no output schema and the description does not explain the difference between concise and detailed formats, what a non-finished response contains, or how this relates to sibling batch-status tools. Minor but real gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents task_id and format, including the enum values. The description adds no parameter-specific context, which is acceptable given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Check task progress') and a concrete outcome ('Returns download URL when done'). It is clear about the tool's resource and purpose, though it does not explicitly differentiate from sibling mineru_batch_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is used to check a task's progress but provides no guidance on when to use it versus mineru_batch_status, how often to poll, or what distinguishes it from other status tools. No alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mineru_upload_batchA

Upload local files for batch parsing. SLOW: uploads can take minutes and may timeout. Prefer mineru_batch with public URLs (arXiv, SSRN, publisher sites) when available — it's faster and more reliable. Only use this for files not available online.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoArray of absolute file paths, or a single path string
modelNopipeline=fast, vlm=90% accuracy
tableNoTable recognition
formatsNoExtra export formats
formulaNoFormula recognition
languageNoLanguage code: ch, en, etc
directoryNoDirectory path containing PDF/DOC/PPT files

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It warns that uploads are 'SLOW' and 'may timeout,' and notes the reliability tradeoff versus the alternative. It does not describe the job lifecycle, return value, or next steps, but the performance caveats are meaningful and not present anywhere else.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, with the key caveat front-loaded and the alternative guidance following. Every sentence earns its place, and there is no fluff or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 7 parameters, no annotations, and no output schema, and the description covers when to use it and its slowness. However, it does not explain what the upload returns, whether it is asynchronous, or how to proceed with mineru_status or mineru_download_results afterward, leaving a gap in end-to-end workflow context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds minimal parameter-specific meaning beyond clarifying that files are local paths, which the schema already states as 'absolute file paths.' It does not expand on model, table, formula, formats, or language beyond their schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Upload local files for batch parsing.' It also distinguishes this tool from mineru_batch by clarifying that public-URL parsing belongs to that sibling, so an agent can disambiguate without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to avoid this tool ('Prefer mineru_batch with public URLs'), names the alternative, and gives the exclusive condition for use: 'Only use this for files not available online.' This is explicit when/when-not guidance with a named sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv1.1.6
    • Changedmineru_batch5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / urls / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / urls / description
        Previous value: -"Array of document URLs"New value: +"Array of document URLs, or a single URL string"
      • removedInput schema / properties / urls / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / urls / type
        Removed value: -"array"
    • Changedmineru_batch_status1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedmineru_download_results
    • Addedmineru_merge_slices
    • Changedmineru_parse1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedmineru_parse_long
    • Changedmineru_status1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedmineru_upload_batch
  2. 4 tool updatesv1.0.0
    • First observedmineru_batch
    • First observedmineru_batch_status
    • First observedmineru_parse
    • First observedmineru_status

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct action or resource: status checking, single parse, batch parse, batch status, local upload, result download, slice merging, and long-document parsing. The descriptions explicitly clarify when to use each, especially the overlap between mineru_parse/mineru_parse_long and mineru_batch/mineru_upload_batch, leaving no ambiguity.

Naming Consistency4/5

All tool names share the 'mineru_' prefix, but the second part mixes verbs (parse, upload, download, merge) with nouns (status, batch, results). This is readable and predictable, though not strictly verb_noun like the calibration example. The minor inconsistency (e.g., 'mineru_batch_status' vs 'mineru_status') does not cause confusion.

Tool Count5/5

With 8 tools, the server covers the core document parsing workflow without excess. Each tool has a clear role: parsing (single/batch/long), status checks, result retrieval, and local file upload. This is well-scoped for the domain.

Completeness4/5

The tool set covers the full parse lifecycle: submit, check status, download results, and merge slices for long documents. The only notable gap is the lack of a direct single-local-file parse path (requires using upload_batch even for one file), but this is a minor workaround and does not severely impede agents.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables batch conversion of PDF files to HTML format using Mineru's official PDF parsing API. Supports automatic file scanning, customizable parsing parameters, and organized output with renamed image assets.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables extraction of text, tables, and structured data from PDFs, images, and office documents using LandingAI's Agentic Document Extraction API. Supports both direct parsing and background job processing for large files with privacy-focused processing.
    -