Skip to main content
Glama

PaddleOCR MCP Server

Small deployment wrapper for running paddleocr_mcp as a long-lived service on a VPS.

Default setup binds to 127.0.0.1:8000 so the service is not exposed to the public internet. Use SSH tunnel first; Cloudflare Tunnel can be added later.

Requirements

  • Linux VPS with systemd

  • Python 3.10+

  • git

Related MCP server: paddleocr-mcp

Install

sudo git clone <repo-url> /apps/paddleocr-mcp-server
cd /apps/paddleocr-mcp-server
sudo cp .env.example .env
sudo bash scripts/install.sh
sudo systemctl enable --now paddleocr-mcp

Check status:

./scripts/status.sh

Follow logs:

./scripts/logs.sh

Local Access From Laptop

Use SSH tunnel:

ssh -L 8000:127.0.0.1:8000 user@your-vps

Then configure OpenCode with:

{
  "mcp": {
    "paddleocr": {
      "type": "remote",
      "url": "http://127.0.0.1:8000/mcp",
      "enabled": true,
      "timeout": 120000
    }
  }
}

Configuration

Edit .env:

PADDLEOCR_MCP_MODEL=PP-OCRv5
PADDLEOCR_MCP_PPOCR_SOURCE=local
PADDLEOCR_MCP_HOST=127.0.0.1
PADDLEOCR_MCP_PORT=8000

Useful models:

  • PP-OCRv5: default text OCR, good starting point.

  • PP-OCRv6: newer text OCR.

  • PP-StructureV3: document layout parsing to Markdown, heavier on CPU.

Restart after config changes:

sudo systemctl restart paddleocr-mcp

Upgrade

cd /apps/paddleocr-mcp-server
sudo git pull
sudo .venv/bin/pip install -r requirements.txt
sudo systemctl restart paddleocr-mcp

Security

Default host is 127.0.0.1. Do not bind to 0.0.0.0 unless you put auth and HTTPS in front of it.

Cloudflare Tunnel + Access can be added later without changing the service.

Related MCP Connectors

Related MCP Servers