PaddleOCR MCP Server

PaddleOCR MCP Server

Enables OCR text extraction from images and PDFs via MCP tools, allowing multiple devices on a local network to use PaddleOCR without installing it locally.

Category
Visit Server

README

PaddleOCR MCP Server

This project provides a single MCP server that hosts PaddleOCR on one machine in your local network. Other devices can call the OCR tool over MCP without installing PaddleOCR, PaddlePaddle, or OCR models on every system.

For a step-by-step setup walkthrough, see USER_GUIDE.md.

What it does

  • Hosts an MCP server on 0.0.0.0 so devices on the same LAN can connect.
  • Exposes OCR as MCP tools instead of local dependencies.
  • Supports multiple simultaneous users through pooled OCR workers.
  • Accepts image or PDF input as:
    • base64 payloads
    • HTTP/HTTPS URLs
    • host-local file paths on the server machine
  • Tunes OCR behavior using a content_type preset:
    • document
    • dense_document
    • receipt
    • invoice
    • id_card
    • handwritten
    • table

Recommended Python version

Use Python 3.10, 3.11, or 3.12.

paddleocr and paddlepaddle often lag behind the newest Python releases, so Python 3.14 is not a safe choice for this server.

Install on the host machine

  1. Create a virtual environment:
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
  1. Install the package:
pip install -U pip
pip install .
  1. Install the correct PaddlePaddle runtime for your host:
  • CPU host:
pip install paddlepaddle
  • GPU host: Install the PaddlePaddle build that matches your CUDA version from the official PaddlePaddle instructions, then call the tool with use_gpu=true.

Run the MCP server on your LAN host

$env:MCP_HOST="0.0.0.0"
$env:MCP_PORT="8000"
$env:MCP_TRANSPORT="streamable-http"
$env:OCR_WORKERS="2"
python .\run_server.py

If the console script paddle-ocr-mcp is available in your environment, you can use that too. run_server.py is the most reliable option when the package itself was not installed into the venv.

For Windows, you can also use:

.\start_server.ps1

The server will listen on:

http://YOUR-HOST-IP:8000/mcp

Replace YOUR-HOST-IP with the local IP address of the host machine, such as 192.168.1.25.

Exposed MCP tools

list_ocr_profiles

Returns the supported OCR content presets and when to use them.

extract_text

Main OCR tool with these parameters:

  • source: base64 string, URL, or host-local path
  • source_type: base64, url, or host_path
  • content_type: preset for OCR tuning
  • language: PaddleOCR language code such as en
  • filename: optional filename hint for base64 uploads
  • max_pages: max PDF pages to render
  • use_gpu: enable GPU inference on a GPU-ready host
  • download_timeout_seconds: URL fetch timeout

Example MCP client configuration

Example for an MCP client that supports streamable HTTP servers:

{
  "mcpServers": {
    "paddle-ocr-lan": {
      "url": "http://192.168.1.25:8000/mcp"
    }
  }
}

A ready-to-copy client config is also included at clients/client/mcp.json.

Example tool calls

Base64 image:

{
  "source": "iVBORw0KGgoAAAANSUhEUgAA...",
  "source_type": "base64",
  "filename": "invoice.png",
  "content_type": "invoice",
  "language": "en"
}

You can also test from a terminal client:

python .\src\paddle_ocr_mcp\client_cli.py --server http://127.0.0.1:8000/mcp --tool list_ocr_profiles
python .\src\paddle_ocr_mcp\client_cli.py --server http://127.0.0.1:8000/mcp --file C:\path\to\scan.pdf --content-type document --max-pages 2

Or with the helper script:

.\test_client.ps1
.\test_client.ps1 -File "C:\path\to\scan.pdf" -ContentType document -MaxPages 2

Remote PDF by URL:

{
  "source": "https://example.local/files/receipt.pdf",
  "source_type": "url",
  "content_type": "receipt",
  "language": "en",
  "max_pages": 2
}

Server-local file:

{
  "source": "C:\\\\shared\\\\scan.jpg",
  "source_type": "host_path",
  "content_type": "id_card",
  "language": "en"
}

Result shape

The OCR tool returns structured output including:

  • combined extracted text
  • average confidence
  • per-page text
  • per-line bounding boxes and confidence

Notes for real deployments

  • Open the chosen port in the host firewall for your local subnet.
  • For remote devices, prefer base64 or url inputs instead of host_path.
  • The first request may be slower because PaddleOCR can download model files on first use.
  • If you want stricter access control, put this service behind a reverse proxy on your LAN.
  • Increase OCR_WORKERS if you need more concurrent OCR throughput and the host has enough RAM.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured