mcp_ocr
This server is a modular OCR system with pluggable backends (Apple Vision, PaddleOCR, PaddleOCR-VL) for extracting text, layout, tables, formulas, and chart data from images.
Text extraction: Full text with per-line confidence and bounding boxes using any backend.
Layout analysis: Text with layout blocks and bounding boxes.
Table extraction: Structured tables as CSV/JSON.
Formula extraction (PaddleOCR-VL only): LaTeX output (⚠️ disabled due to upstream hang).
Chart data extraction (PaddleOCR-VL only): Structured chart data (⚠️ disabled due to upstream hang).
Batch processing: Process multiple images at once per backend.
Customization: Specify language and mode (base/dynamic) for all tools.
Backend flexibility:
Apple Vision: macOS only, fast on-device GPU/ANE, zero dependencies, CJK + major European languages.
PaddleOCR (Paddle): Cross-platform CPU-based, 80+ languages, heavier (~2.5GB).
PaddleOCR-VL: Apple Silicon only, 109 languages, best for CJK, requires manual CLI setup, poor Cyrillic.
Provides OCR capabilities using Apple Vision framework, enabling text, layout, and table extraction from images on macOS.
Click on "Install 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., "@mcp_ocrextract the text from this image"
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.
mcp_ocr
Modular OCR MCP server with pluggable backends: Apple Vision, PaddleOCR, and PaddleOCR-VL.
Bundled skill:
ocr-recipes— 12 pluggable OCR workflows (receipt scanner, business card, QR→shopping, document OCR, batch processing, preprocessing guide). Auto-loads in Pi.Requires pi-mcp-bridge to connect to pi.
Quick start
One-line install (pi + pi-mcp-bridge)
Add to ~/.pi/agent/settings.json under mcpBridge.servers:
{
"name": "ocr",
"command": "mcp-ocr",
"args": [],
"setupCommands": [
"uv tool install --force --python 3.11 \"mcp-ocr[all] @ git+https://github.com/timaliev/mcp_ocr.git\""
]
}
setupCommandsruns before each session start. It auto-installs the server with all backends from GitHub. RequiresuvonPATH. Requires pi-mcp-bridge ≥1.0.0.
Restart pi. Done — Vision, Paddle, and PaddleOCR-VL are all available.
Manual install (standalone MCP client)
# All backends (macOS)
uv tool install --python 3.11 "mcp-ocr[all] @ git+https://github.com/timaliev/mcp_ocr.git"
# Vision only (macOS, zero extra deps)
uv tool install --python 3.11 "mcp-ocr[vision] @ git+https://github.com/timaliev/mcp_ocr.git"
# Paddle only (cross-platform, CPU)
uv tool install --python 3.11 "mcp-ocr[paddle] @ git+https://github.com/timaliev/mcp_ocr.git"Then configure your MCP client to run mcp-ocr.
Related MCP server: paddleocr-mcp
Backend dependencies
Group | Backend | Python deps | External deps |
| Apple Vision |
| macOS 10.15+ |
| PaddleOCR |
| Nothing |
| PaddleOCR-VL | None (calls CLI via subprocess) |
|
| Everything | vision + paddle | vision + paddle + paddleocr-vl |
Installing PaddleOCR-VL CLI
The VL backend is the hardest to set up. See the full guide below.
The Python package mcp-ocr[paddleocr-vl] installs only the subprocess wrapper — not the CLI itself.
Configuration
pi-mcp-bridge with auto-install (recommended)
{
"mcpBridge": {
"servers": [
{
"name": "ocr",
"command": "mcp-ocr",
"args": [],
"setupCommands": [
"uv tool install --force --python 3.11 \"mcp-ocr[all] @ git+https://github.com/timaliev/mcp_ocr.git\""
]
}
]
}
}The setupCommands field (added in pi-mcp-bridge) runs before the server starts. Replace [all] with [vision] or [vision,paddle] to install only specific backends.
Standalone MCP client
{
"mcpServers": {
"ocr": {
"command": "mcp-ocr",
"args": []
}
}
}Backends
Quick comparison
Vision | Paddle | PaddleOCR-VL | |
Speed | ⚡ Instant | 🐢 30–90s | 🐢 2–7s (base) / 150s (dynamic) |
Accuracy | ★★★★ | ★★★ | ★★ (Cyrillic: ★) |
Languages | CJK + major European | 80+ languages | Claims 109, poor Cyrillic |
Platform | macOS 10.15+ | Cross-platform | macOS 14+, Apple Silicon |
RAM usage | ~50 MB | ~2.5 GB | ~100 MB (CLI) / 2.5 GB (Python lib) |
GPU | ANE/GPU | CPU only | Apple Silicon GPU |
Install |
|
|
|
First run | Zero | Downloads models (1–2 GB) | Downloads models (1.8 GB) |
Text | ✅ | ✅ | ⚠️ Fast but inaccurate for non-CJK |
Layout | ✅ | ✅ | ⚠️ Same as text |
Table | ✅ | ✅ | ⚠️ Experimental |
Formula | ❌ | ❌ | ❌ (upstream hang) |
Chart | ❌ | ❌ | ❌ (upstream hang) |
Recommendation: Use Vision for everyday OCR. It's instant, accurate for European languages, and has zero dependencies on macOS. Use PaddleOCR-VL only for CJK text where Vision falls short. Avoid Paddle (Python) backend — it loads 2.5 GB of C++ libraries for comparable results.
Vision (ocr_text_vision, ocr_layout_vision, ocr_table_vision)
macOS 10.15+, zero install
GPU/ANE accelerated
Best for: CJK + major European languages, fast extraction
Paddle (ocr_text_paddle, ocr_layout_paddle, ocr_table_paddle)
Cross-platform CPU
Mature PaddleOCR models
Best for: wide language coverage, when not on macOS
PaddleOCR-VL (ocr_text_paddleocr_vl, ocr_layout_paddleocr_vl, ocr_table_paddleocr_vl)
macOS 14+, Apple Silicon (M1/M2/M3/M4)
0.9B vision-language model, 109 languages (Cyrillic quality is poor)
Default mode is
base(fast, ~2–7s).dynamicmode is 20× slower and produces garbled outputFormula and chart tasks disabled — the CLI hangs on these (upstream bug)
Model downloads 1.8 GB on first run; subsequent runs use cache
Best for: CJK text, when Vision is not available
Installing PaddleOCR-VL CLI
⚠️ The CLI has known build issues.
swift buildalone is not enough. You must compile Metal shaders and download model weights manually.
1. Clone and build the CLI
git clone https://github.com/mlx-community/paddleocr-vl.swift
cd paddleocr-vl.swift
swift build -c release2. Compile Metal shaders (metallib)
swift build does not compile .metal files. Without this step the CLI crashes
with Failed to load the default metallib.
cd .build/checkouts/mlx-swift/Source/Cmlx/mlx-c
mkdir -p build && cd build
cmake .. -G Ninja && ninja
# Copy the compiled metallib next to the binary
cp build/_deps/mlx-build/mlx/backend/metal/kernels/mlx.metallib \
/path/to/paddleocr-vl.swift/.build/release/default.metallib3. Download model weights
The CLI's built-in downloader silently fails — model loads but produces garbled output. Download weights manually via Python:
pip install huggingface_hub
python3 -c "
from huggingface_hub import snapshot_download
snapshot_download(
'PaddlePaddle/PaddleOCR-VL',
local_dir='\$HOME/.cache/paddleocr-vl-model',
local_dir_use_symlinks=False,
)
"4. Verify
paddleocr-vl ocr /path/to/image.png --model ~/.cache/paddleocr-vl-model5. Set environment variable
export PADDLEOCR_VL_MODEL="$HOME/.cache/paddleocr-vl-model"The MCP server reads this env var and passes --model to the CLI automatically.
Environment Variables
Variable | Default | Description |
|
| Path to paddleocr-vl CLI binary |
|
| Timeout in seconds for PaddleOCR-VL |
| (none) | Path to downloaded model weights (required) |
Development
git clone https://github.com/timaliev/mcp_ocr.git
cd mcp_ocr
pip install -e .[all]
pytestMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceA macOS-based MCP server that enables high-accuracy text extraction from PDF and image files using the OwlOCR app or Apple's Vision Framework. It supports multi-language OCR and provides asynchronous tools for processing documents directly within MCP clients.
- AlicenseNot gradedqualityBmaintenanceA local OCR MCP server that extracts text from images using PP-OCRv6 for fast text extraction and VL-1.6 for document structure analysis, with automatic model routing and GPU detection.2MIT
- FlicenseAqualityCmaintenanceMCP server enabling LLM clients without vision capability to process images by delegating to local Ollama vision models. Supports describing images, OCR, asking questions, and processing clipboard images.4
- AlicenseAqualityBmaintenanceMCP server for image recognition, supporting multiple vision backends (Anthropic, Zhipu, Ollama) to describe, answer questions, and analyze images.3461MIT
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
OCR.space MCP — wraps the OCR.space API (ocr.space) for image/PDF → text OCR.
MCP server for MiniMax H3 multimodal video generation
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/timaliev/mcp_ocr'
If you have feedback or need assistance with the MCP directory API, please join our Discord server