mcpField
M
mcp-dharmamitra

mcp-dharmamitra

Local
github.com/alex-deusProductivity0Updated 7w ago

About mcp-dharmamitra

mcp-dharmamitra is an MCP server for extracting text from images through the public Dharmamitra OCR endpoint. It is intended for Tibetan, Sanskrit, and Devanagari text, and writes results to a local file.

Key features

  1. 01OCR images through Dharmamitra
  2. 02Optimized for Tibetan, Sanskrit, and Devanagari
  3. 03Optional Devanagari and Tibetan transliteration
  4. 04Write extracted UTF-8 text to a file

Use cases

  1. 01Extract text from Tibetan manuscript images
  2. 02Convert Sanskrit or Devanagari image text into files

MCP support

It exposes an `ocr_image` tool that sends a local image to the Dharmamitra OCR endpoint and writes the extracted text to the specified output path.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"alex-deus-mcp-dharmamitra": {
"command": "uvx",
"args": [
"mcp-dharmamitra"
],
"env": {
"DHARMAMITRA_COOKIE": "<DHARMAMITRA_COOKIE>"
}
}
}
}
Run commanduvx mcp-dharmamitra
Environment variables to set
DHARMAMITRA_COOKIESecretOptional cf_clearance cookie value. Only needed if requests start returning 403 from Cloudflare.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypimcp-dharmamitra0.1.0

Tools

1

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
modelstringNo
image_pathstringYes
instructionstringNo
output_pathstringYes
timeout_secondsnumberNo
poll_interval_secondsnumberNo
transliterate_tibetan_to_wyliebooleanNo
transliterate_devanagari_to_iastbooleanNo

Details

From the project README

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
ArgumentTypeDefaultNotes
image_pathstr—Absolute path to a local image (png/jpg/…).
output_pathstr—File to write UTF-8 text into. Parent dirs are created.
transliterate_devanagari_to_iastboolfalsePassed to the API.
transliterate_tibetan_to_wylieboolfalsePassed to the API.
instructionstr""Optional model instruction.
modelstr"auto"OCR model id.
poll_interval_secondsfloat2.0Delay between status polls.
timeout_secondsfloat300.0Overall 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 from the MCP registry

Listed as io.github.alex-deus/mcp-dharmamitra on the official Model Context Protocol registry. The package ships to PyPI as mcp-dharmamitra and is meant to be run with uvx — no clone, no manual install.

~/Library/Application Support/Claude/claude_desktop_config.json (or the equivalent mcp block in Claude Code):

{
  "mcpServers": {
    "dharmamitra": {
      "command": "uvx",
      "args": ["mcp-dharmamitra"],
      "env": {"DHARMAMITRA_COOKIE": ""}
    }
  }
}

Or via the Claude Code CLI:

claude mcp add dharmamitra -e DHARMAMITRA_COOKIE="" -- uvx mcp-dharmamitra

Pin a specific version with uvx [email protected].

Install from source

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

For a source checkout the Claude Desktop entry uses the local path:

{
  "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 /path/mcp-dharmamitra 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", "/path/mcp-dharmamitra/data:/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 /path/mcp-dharmamitra/data:/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.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.