Dharmamitra OCR for Tibetan / Sanskrit / Devanagari images; writes extracted text to a file.
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.
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
}
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 mcp-dharmamitra@0.1.0.
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": ""}
}
}
}
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)"
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.
cf_clearanceThe 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.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx mcp-dharmamitraMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-alex-deus-mcp-dharmamitra": {
"command": "uvx",
"args": [
"mcp-dharmamitra"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencemcp-dharmamitrapypiio.github.alex-deus/mcp-dharmamitra works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.