ocr-mcp
This server provides OCR (Optical Character Recognition) processing capabilities, allowing you to submit documents and retrieve structured results.
Submit documents for OCR (
parse_document): Upload a document via local file path, URL, or base64-encoded content; configure language, backend engine, page range, formula/table detection, and parse method; optionally wait for completion or submit asynchronously.Check task status (
get_task_status): Retrieve the current status and metadata of a submitted OCR task by its task ID.Read extracted markdown (
get_markdown): Page through a task's OCR result as markdown text using offset and max-length parameters, suitable for large documents.Get structured content blocks (
get_content_blocks): Retrieve paginated structured content blocks (text, tables, formulas) from a task's result, with optional filtering by page index.Get full result summary (
get_full_result): Fetch task metadata along with capped markdown and content blocks in a single call, best suited for smaller documents.Reprocess a task (
reprocess_task): Re-run OCR on an existing task with optional adjustments such as page rotation, different backend, language, or selected page indices.List tasks (
list_tasks): View and search all OCR tasks associated with the configured API key, with pagination support.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ocr-mcp Parse the document at https://example.com/report.pdf"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OcrPlane CLI
Agent-friendly command line client for the OcrPlane/MineRU OCR API.
ocrplane-cli is the installable package and Docker image name. The installed
command is ocrplane.
Features
Typer command line interface
Pydantic v2 input and output models
Rich human-readable terminal output
Stable
--jsonoutput for agents--dry-runrequest planningAsync submit plus polling and paginated result reads
Related MCP server: MCP Document Parse Tool
Requirements
Python 3.11+
An OcrPlane API base URL
An API key from OcrPlane
Online Install
Recommended install with uv:
uv tool install "git+https://github.com/asharca/ocrplane-cli.git"
ocrplane --helpRun once without installing:
uvx --from "git+https://github.com/asharca/ocrplane-cli.git" ocrplane --helpUpgrade later:
uv tool upgrade ocrplane-cliAlternative isolated install with pipx:
pipx install "git+https://github.com/asharca/ocrplane-cli.git"
ocrplane --helpIf the repository is private or you prefer SSH:
pipx install "git+ssh://git@github.com/asharca/ocrplane-cli.git"
ocrplane --helpUpgrade later:
pipx upgrade ocrplane-cliInstall into the current Python environment with pip:
python3 -m pip install "git+https://github.com/asharca/ocrplane-cli.git"
ocrplane --helpRun directly with Docker:
docker run --rm \
-e OCRPLANE_BASE_URL="https://ocr.rhzy.ai" \
-e OCRPLANE_API_KEY="mk_xxxxxxxxxxxxxxxxxxxx" \
-v "$PWD:/workspace" \
ghcr.io/asharca/ocrplane-cli:latest \
parse /workspace/report.pdf --jsonmacOS Install
Using the system Python or Homebrew Python:
cd ~/Code/ocrplane-cli
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
ocrplane --helpIf python3 is missing:
brew install pythonInstall with uv:
brew install uv
uv tool install "git+https://github.com/asharca/ocrplane-cli.git"
ocrplane --helpOr install uv with the official standalone installer:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install "git+https://github.com/asharca/ocrplane-cli.git"
ocrplane --helpOptional isolated install with pipx:
brew install pipx
pipx ensurepath
pipx install "git+https://github.com/asharca/ocrplane-cli.git"
ocrplane --helpLinux Install
Debian/Ubuntu:
sudo apt-get update
sudo apt-get install -y python3 python3-venv python3-pip git
cd ~/code/ocrplane-cli
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
ocrplane --helpRHEL/CentOS/Fedora:
sudo dnf install -y python3 python3-pip git
cd ~/code/ocrplane-cli
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
ocrplane --helpOptional isolated install with pipx:
python3 -m pip install --user pipx
python3 -m pipx ensurepath
pipx install "git+https://github.com/asharca/ocrplane-cli.git"
ocrplane --helpInstall with uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install "git+https://github.com/asharca/ocrplane-cli.git"
ocrplane --helpRun once with uvx:
uvx --from "git+https://github.com/asharca/ocrplane-cli.git" ocrplane --helpConfigure
Set the API endpoint and key:
export OCRPLANE_BASE_URL="https://ocr.rhzy.ai"
export OCRPLANE_API_KEY="mk_xxxxxxxxxxxxxxxxxxxx"Compatibility aliases are also supported:
MINERU_API_BASE_URL
MINERU_BASE_URL
MINERU_API_KEY
API_KEY
APIKEYPrefer OCRPLANE_BASE_URL and OCRPLANE_API_KEY for new setups.
To keep local secrets out of git:
cp .env.example .envThen edit .env and load it before using the CLI:
set -a
source .env
set +aQuick Start
Validate a request without sending it:
ocrplane parse /workspace/report.pdf --json --dry-runSubmit a document and wait for completion:
ocrplane parse /workspace/report.pdf --jsonFor large documents, submit first and read results by page:
ocrplane parse /workspace/large.pdf --json --no-wait
ocrplane status <task_id> --json
ocrplane markdown <task_id> --json --offset 0 --max-length 12000
ocrplane blocks <task_id> --json --offset 0 --limit 50Write result artifacts to disk:
ocrplane parse /workspace/report.pdf --save-dir /workspace/ocr-reportThis writes:
summary.jsonresult.mdcontent_blocks.jsonpages.json
Commands
ocrplane parse FILE
ocrplane status TASK_ID
ocrplane markdown TASK_ID
ocrplane blocks TASK_ID
ocrplane result TASK_ID
ocrplane list
ocrplane reprocess TASK_ID
ocrplane settingsCommon parse options:
ocrplane parse /workspace/a.pdf \
--backend pipeline \
--lang ch \
--parse-method auto \
--formula \
--table \
--start-page 0 \
--end-page 9 \
--timeout 900 \
--poll-interval 3 \
--jsonDocker
Build locally:
docker build -t ocrplane-cli .Run against a mounted workspace:
docker run --rm \
-e OCRPLANE_BASE_URL \
-e OCRPLANE_API_KEY \
-v "$PWD:/workspace" \
ocrplane-cli parse /workspace/report.pdf --jsonPublished images use:
ghcr.io/asharca/ocrplane-cli:latestThe GitHub Actions workflow publishes this image on pushes to main.
Agent Notes
Use
--jsonfor machine-readable output.Use
--dry-runwhen planning a call or checking paths.Use
--no-waitfor large files, then poll withstatus.Read large markdown with
markdown --offset --max-length.Read structured OCR blocks with
blocks --offset --limit.Avoid printing API keys in logs or prompts.
Development
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m compileall src/ocrplane
python -m pip wheel . --no-deps -w /tmp/ocrplane-cli-wheelAvailable Tools
7 toolsget_content_blocksC
Return paginated structured content blocks, optionally filtered by page_idx.
Inputs: task_id (required), limit, offset, page_idx. Returns: object
get_full_resultA
Return task metadata plus capped markdown and content blocks for small documents.
Inputs: task_id (required), max_blocks, max_markdown_length. Returns: object
get_markdownC
Return a slice of a task's markdown result.
Inputs: task_id (required), offset, max_length. Returns: object
get_task_statusC
Return the current OcrPlane task record for a task id.
Inputs: task_id (required). Returns: object
list_tasksC
List OcrPlane tasks for the configured API key user.
Inputs: page, limit, search, source. Returns: object
parse_documentA
Submit a document to OcrPlane OCR and optionally wait for completion.
Provide exactly one document input: file_path, file_url, or base64_content. For large files, prefer file_url. The tool returns a compact summary; use get_markdown or get_content_blocks to page through large results.
Inputs: lang, wait, backend, file_url, +10 more. Returns: object
reprocess_taskC
Reprocess an existing task, optionally rotating or re-OCRing selected pages.
Inputs: task_id (required), lang, rotate, backend, +6 more. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
The tools are well-differentiated: parse_document submits, get_task_status checks status, list_tasks lists, and the three getter tools retrieve different result formats (markdown, content blocks, full result) with clear boundaries.
All tools follow a consistent verb_noun snake_case pattern (e.g., get_markdown, list_tasks, parse_document). Only reprocess_task slightly deviates as a compound verb but still fits the pattern.
With 7 tools, the server covers the essential OCR workflow (submit, status, retrieve results, list, reprocess) without unnecessary redundancy, making the count appropriate for its purpose.
The tool set covers the core lifecycle: submission, status polling, result retrieval in multiple formats, listing, and reprocessing. Minor gaps like deletion or batch operations exist but are non-essential for typical OCR tasks.
Maintenance
Related MCP Connectors
Convert PDF, Word, Excel and scanned documents to Markdown, tables and RAG chunks. OCR.
Document conversion and OCR for AI agents: PDF, Office docs, images to text.
Arabic-first OCR, translation and document extraction. First call mints a free trial key.
Hosted document tools for agents: extract, parse, classify, convert, OCR, sign, and redact.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables integration between MCP clients and the Handwriting OCR service, allowing users to upload images and PDF documents, check processing status, and retrieve OCR results as Markdown.18-
- AlicenseAqualityDmaintenanceEnables parsing and extraction of content from various document formats (PDF, Word, Excel, PowerPoint) into Markdown format using the Niutrans document API.15MIT
- FlicenseNot gradedqualityDmaintenanceEnables OCR on images and PDFs, including full-page OCR, region OCR by description or bounding box, and caching with summary capabilities.-
- FlicenseNot gradedqualityDmaintenanceProvides OCR (Optical Character Recognition) capabilities through MCP, including text extraction and document layout parsing to Markdown. Supports multiple PaddleOCR models like PP-OCRv5, PP-OCRv6, and PP-StructureV3.-