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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mcp_dharmamitra-0.1.0.tar.gz | 55.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.