Skip to main content

mcp-dharmamitra

MCP server that runs OCR on an image via the public Dharmamitra OCR endpoint and writes the extracted text to a local file. Optimised for Tibetan / Sanskrit / Devanagari input.

Tool

ocr_image

Argument Type Default Notes
image_path str — Absolute path to a local image (png/jpg/…).
output_path str — File to write UTF-8 text into. Parent dirs are created.
transliterate_devanagari_to_iast bool false Passed to the API.
transliterate_tibetan_to_wylie bool false Passed to the API.
instruction str "" Optional model instruction.
model str "auto" OCR model id.
poll_interval_seconds float 2.0 Delay between status polls.
timeout_seconds float 300.0 Overall polling deadline.

Returns a small JSON summary — the extracted text is written to output_path, not returned to the client.

{
  "job_id": "b8b26984b3ca49199c28303cad6a144d",
  "output_path": "/abs/path/out.txt",
  "pages": 1,
  "processing_time_seconds": 3.957,
  "chars": 1234
}

Install

uv sync                           # or: pip install -e '.[dev]'

Run locally with the MCP inspector:

uv run mcp dev src/mcp_dharmamitra/server.py

Run tests:

uv run pytest

Wire into Claude Desktop / Claude Code

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

{
    "mcpServers": {
      "dharmamitra": {
        "command": "uv",
        "args": ["--directory", "/path/mcp-dharmamitra", "run", "mcp-dharmamitra"],
        "env": {"DHARMAMITRA_COOKIE": ""}
      }
    }
  }

Docker

Build the image:

docker build -t mcp-dharmamitra:latest .

MCP talks over stdio, so the container must be run with -i (no -t). Mount a host directory that holds the input images — the tool arguments (image_path, output_path) are paths inside the container.

Smoke-test the entrypoint:

docker run --rm --entrypoint python mcp-dharmamitra:latest \
  -c "from mcp_dharmamitra.server import mcp; print(mcp.name)"

Wire the container into Claude Desktop / Claude Code

Replace /Users/aleksei/projects/ai/mcp-dharmamitra/tmp with any host directory you want the tool to be able to read/write. Files inside it will be visible under /data in the container.

{
  "mcpServers": {
    "dharmamitra": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/Users/aleksei/projects/ai/mcp-dharmamitra/tmp:/data",
        "-e", "DHARMAMITRA_COOKIE",
        "mcp-dharmamitra:latest"
      ],
      "env": {
        "DHARMAMITRA_COOKIE": ""
      }
    }
  }
}

Or the same via CLI:

claude mcp add dharmamitra \
  --scope project \
  -e DHARMAMITRA_COOKIE="" \
  -- docker run -i --rm \
       -v /Users/aleksei/projects/ai/mcp-dharmamitra/tmp:/data \
       -e DHARMAMITRA_COOKIE \
       mcp-dharmamitra:latest

When calling the tool, pass container paths. Example — image at <host>/tmp/text.png → /data/text.png:

{
  "image_path": "/data/text.png",
  "output_path": "/data/text.txt"
}

The resulting text.txt appears in the mounted host directory.

Cloudflare / cf_clearance

The endpoint sits behind Cloudflare. Most requests go through without any cookie. If you start getting 403, grab a fresh cf_clearance value from a logged-in browser session on dharmamitra.org and export it:

export DHARMAMITRA_COOKIE='cf_clearance value here'

The server will attach it as a cookie on every request. Do not hardcode it — Cloudflare rotates the value.

Metadata

Release files for mcp-dharmamitra 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-dharmamitra 0.1.0
File Size Uploaded Provenance
mcp_dharmamitra-0.1.0.tar.gz 55.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-dharmamitra 0.1.0
File Interpreter ABI Platform
mcp_dharmamitra-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 61.5 kB

Release files / mcp_dharmamitra-0.1.0.tar.gz

Download URL mcp_dharmamitra-0.1.0.tar.gz
Size 55.1 kB
Tags Source
SHA-256 checksum
How to use checksums
90a428dcd87f2fce7854a79d81543b8e935f2cc6635d64c84d54a4723d24f14f
BLAKE2b-256 checksum
How to use checksums
0027d2ced23e6d2512b6df098f3a4e13f7500f76257cc7c574c5e298d2d47828
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / mcp_dharmamitra-0.1.0-py3-none-any.whl

Download URL mcp_dharmamitra-0.1.0-py3-none-any.whl
Size 6.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c5533dae96566c7d526cdbf0856ac01e06151ad181ac5a53f5f5b61b239cd892
BLAKE2b-256 checksum
How to use checksums
ee1ad978e70d049505c6f852a1dab0df5a46e6fd1fc58c4dbc22fded41515b02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Security for mcp-dharmamitra 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page