Skip to main content

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 the urn from it (fojin_mcp/urn.py, a vendored copy of the backend's build_urn, kept behaviourally identical and round-trip-tested). So citations work today, independent of any server change. get_parallels enriches each parallel's URN via a bounded, concurrent, best-effort text_id → cbeta_id lookup (a miss just leaves urn: null).
  • Testable core. All HTTP + reshaping lives in client.py and is tested against a mocked transport; server.py is 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fojin_mcp-0.1.0.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fojin_mcp-0.1.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

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

Hashes for fojin_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0331feacdcddf933f2eb1fba516527bb4ace2597d9f95f43f76e2c2a2b2a4b49
MD5 6c236dcbfb0d02f9424e7f5b8f9d7159
BLAKE2b-256 de2ff580c656a313aceaf70b19b8ddcc1a1507dde326ad52fce23ee758654373

See more details on using hashes here.

Provenance

The following attestation bundles were made for fojin_mcp-0.1.0.tar.gz:

Publisher: mcp-publish.yml on xr843/fojin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for fojin_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 691729f8ed6d391c3f693ae3385ee39ba9f721b800109324c6d6c1b764cab61c
MD5 98e1045b21b97b7ae1c522cff5699f38
BLAKE2b-256 ee2f7a987808d10788a42aa88dc474605f611295ece73d06843da31ca28022bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for fojin_mcp-0.1.0-py3-none-any.whl:

Publisher: mcp-publish.yml on xr843/fojin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page