MCP server exposing fojin's verified cross-canon Buddhist corpus (cited, URN-addressable passages) to AI research tools.
Project description
fojin MCP server
An MCP server that exposes fojin's verified
cross-canon Buddhist corpus to any MCP client (Claude Desktop, ChatGPT,
research tooling). It turns fojin from "an app you visit" into infrastructure
an AI can call — every passage it returns carries a portable, resolvable
citation (fojin:cbeta/T0251.1), so a model can ground and deep-link its claims
instead of inventing scripture.
Read-only by construction: it only issues GETs against fojin's public API.
Tools
| Tool | What it returns |
|---|---|
search_corpus(query, limit, lang) |
Semantic search hits, each with a urn, title, snippet, score |
read_passage(text_id, juan_num) |
The actual content of one fascicle (卷) + its urn |
get_parallels(text_id, juan_num) |
Cross-canon aligned parallels (Chinese↔Pali↔Tibetan), each with a urn and deep-link reader_ref — the alignment moat |
lookup_dictionary(term, limit) |
Entries across fojin's 32 dictionaries |
lookup_entity(query, limit) |
Knowledge-graph entities (people, places, works, terms) |
resolve_urn(urn) |
Resolve/verify a fojin: URN → reader URL + existence |
Every result that names a canonical passage carries a urn — fojin's stable
cross-canon identifier, interoperable with CBETA / SuttaCentral (sc/) / 84000
(84k/toh) / GRETIL / VRI numbering. Pass it back to resolve_urn, or cite it
directly.
Install & run
Once published to PyPI, no clone needed — run it with uvx (nothing to
install) or pip:
uvx fojin-mcp # zero-install, stdio transport (the MCP default)
# or
pip install fojin-mcp && fojin-mcp
From a checkout (development):
cd mcp-server && pip install -e . && python -m fojin_mcp
By default it talks to https://fojin.app/api. Point it elsewhere (self-host,
staging) with an env var:
FOJIN_API_BASE_URL=http://localhost:8000/api uvx fojin-mcp
Claude Desktop
Add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"fojin": {
"command": "uvx",
"args": ["fojin-mcp"]
}
}
}
(or "command": "fojin-mcp" if you pip installed it, or python -m fojin_mcp
from a checkout.) Restart Claude Desktop; the six fojin tools then appear.
ChatGPT / other MCP clients
Any client that speaks MCP over stdio can launch uvx fojin-mcp (or the
fojin-mcp console script) and will discover the six tools automatically.
Design
- Standalone. Talks to fojin only over HTTP; it does not import the backend,
so it installs and runs independently (deps:
mcp,httpx). - URNs built client-side. fojin's search/read/alignment endpoints expose
cbeta_id; the server builds theurnfrom it (fojin_mcp/urn.py, a vendored copy of the backend'sbuild_urn, kept behaviourally identical and round-trip-tested). So citations work today, independent of any server change.get_parallelsenriches each parallel's URN via a bounded, concurrent, best-efforttext_id → cbeta_idlookup (a miss just leavesurn: null). - Testable core. All HTTP + reshaping lives in
client.pyand is tested against a mocked transport;server.pyis a thin FastMCP wiring layer. - Fails soft. An upstream error returns
{"error": "..."}to the model rather than crashing the tool call.
Test
pip install -e '.[dev]'
pytest -q # unit tests (no network)
Publishing (maintainer)
CI (.github/workflows/mcp-server.yml) lints, tests, and builds the package on
every change under mcp-server/. To release to PyPI, bump version in
pyproject.toml, then push a tag:
git tag mcp-v0.1.0 && git push origin mcp-v0.1.0
.github/workflows/mcp-publish.yml builds and uploads. It needs credentials
once — set up either PyPI Trusted Publishing (recommended; no secret) for
project fojin-mcp / repo xr843/fojin / workflow mcp-publish.yml /
environment pypi, or a PYPI_API_TOKEN repo secret (then uncomment the
password: line in the workflow).
License
Apache-2.0 (same as fojin).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fojin_mcp-0.1.0.tar.gz.
File metadata
- Download URL: fojin_mcp-0.1.0.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0331feacdcddf933f2eb1fba516527bb4ace2597d9f95f43f76e2c2a2b2a4b49
|
|
| MD5 |
6c236dcbfb0d02f9424e7f5b8f9d7159
|
|
| BLAKE2b-256 |
de2ff580c656a313aceaf70b19b8ddcc1a1507dde326ad52fce23ee758654373
|
Provenance
The following attestation bundles were made for fojin_mcp-0.1.0.tar.gz:
Publisher:
mcp-publish.yml on xr843/fojin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fojin_mcp-0.1.0.tar.gz -
Subject digest:
0331feacdcddf933f2eb1fba516527bb4ace2597d9f95f43f76e2c2a2b2a4b49 - Sigstore transparency entry: 2083950893
- Sigstore integration time:
-
Permalink:
xr843/fojin@a464e6e40f85e34c1ecec5cd4dda498951575449 -
Branch / Tag:
refs/tags/mcp-v0.1.0 - Owner: https://github.com/xr843
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
mcp-publish.yml@a464e6e40f85e34c1ecec5cd4dda498951575449 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fojin_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: fojin_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
691729f8ed6d391c3f693ae3385ee39ba9f721b800109324c6d6c1b764cab61c
|
|
| MD5 |
98e1045b21b97b7ae1c522cff5699f38
|
|
| BLAKE2b-256 |
ee2f7a987808d10788a42aa88dc474605f611295ece73d06843da31ca28022bc
|
Provenance
The following attestation bundles were made for fojin_mcp-0.1.0-py3-none-any.whl:
Publisher:
mcp-publish.yml on xr843/fojin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fojin_mcp-0.1.0-py3-none-any.whl -
Subject digest:
691729f8ed6d391c3f693ae3385ee39ba9f721b800109324c6d6c1b764cab61c - Sigstore transparency entry: 2083950938
- Sigstore integration time:
-
Permalink:
xr843/fojin@a464e6e40f85e34c1ecec5cd4dda498951575449 -
Branch / Tag:
refs/tags/mcp-v0.1.0 - Owner: https://github.com/xr843
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
mcp-publish.yml@a464e6e40f85e34c1ecec5cd4dda498951575449 -
Trigger Event:
push
-
Statement type: