About Dhamma.Gift — Pāli Canon
The Node.js backend for Dhamma.Gift searches and serves Pāli Canon texts for readers consulting source texts and Russian or English translations. It uses a SQLite/FTS5 index and supports segment links and offline mirror data.
Key features
- 01Search texts with SQLite/FTS5
- 02Serve reader routes for canon texts
- 03Link to segments and scroll targets
- 04Support offline mirror data
- 05Keep compatibility with legacy PHP/Apache
Use cases
- 01Search the Pāli Canon by term
- 02Read a full text or specific segment
- 03Deploy text data from an offline mirror
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://api.dhamma.gift/mcpclaude mcp add --transport http gift-dhamma-pali-canon https://api.dhamma.gift/mcp{"mcpServers":{"gift-dhamma-pali-canon":{"type":"http","url":"https://api.dhamma.gift/mcp"}}}Open in Cursor{"servers":{"gift-dhamma-pali-canon":{"type":"http","url":"https://api.dhamma.gift/mcp"}}}Open in VS Code{"mcpServers":{"gift-dhamma-pali-canon":{"type":"http","url":"https://api.dhamma.gift/mcp"}}}{"mcpServers":{"gift-dhamma-pali-canon":{"serverUrl":"https://api.dhamma.gift/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project READMEdg-node
Node.js backend for searching and reading Pāli Canon texts using SuttaCentral Bilara and DhammaGift translations.
This project powers the search index, reader endpoints, static assets, and compatibility layer for the legacy Dhamma.Gift stack. The production server runs on Fastify; the older Express-based implementation is kept only for legacy support.
Architecture and development rules: CLAUDE.md
Features
- Search across the Pāli Canon with SQLite/FTS5
- Reader routes for clean URLs such as
/dn22and/dn22:12.1 - Segment-aware links and scroll targets
- Support for offline mirror data and environment-based path resolution
- Legacy compatibility with older PHP/Apache frontends
Quick start
git pull
npm install
npm run build-search-db # build dg.db (SQLite/FTS5) from fresh Bilara data
npm start # run the production server (dg-fastify.js), port 3000
build-search-db should be rerun whenever source texts or translations change on disk. The server reads data directly from disk and rebuilds the search index as needed.
Data paths such as SC_BILARA, DG_OFFLINE, and offline mirrors are resolved automatically based on the runtime environment (Termux, Windows development, local server, etc.).
unused/dg-light.js and unused/dblight.js (npm run start:express) are legacy Express + grep services and are not used in production. See CLAUDE.md for details.
Deployment checks
curl "http://localhost:3000/search?q=kacchapa&scope=dhamma&langs=ru,en"
curl -I "http://localhost:3000/assets/js/datatables/datatables.min.js" # 200 from public/overrides/js/datatables, not from the legacy repo
curl -I "http://localhost:3000/dn22" # reader via clean URL
curl -I "http://localhost:3000/dn22:10.5" # segment link (scroll to 10.5)
Manual browser checks:
/nodejs/res/?q=kacchapa&scope=dhamma— search, DataTables, export/dn22— full-text reader- Pāli / Russian toggle (three modes: Pāli + translation → Pāli only → translation only) — should actually hide/show content correctly
/?q=dn22#12.1(legacy format) — should continue to work alongside/dn22:12.1
Deployment notes for Apache/PHP
If the public Dhamma.Gift site is currently hosted by Apache/PHP while Node runs as a separate backend proxied only to /search, note the following:
- search requests may route to the Node backend
- static files and reader routes may still be served by Apache/PHP
- root-domain routing can differ from the local development environment
dg-fastifyis the modern backend, while legacy PHP pages remain in parallel for compatibility
Project structure
dg-fastify.js — production server (Fastify + SQLite/FTS5, dg.db): /search, /api/text/:suttaId,
static files (search/, reader/, siteroot/assets/), offline mirrors,
clean URLs (/dn22, /dn22:12.1)
unused/dg-light.js — legacy Express + grep server, not used in production (see CLAUDE.md)
unused/dblight.js — build script for dg-light.js → dg_db_light.json (legacy, not needed with dg.db)
search/ — search page (DataTables); legacy URL remains /nodejs/res/... (see CLAUDE.md)
reader/ — reader frontend (reader-template.html + megareader.js)
configs/ — project JSON configs (openapi, reader/*, search/*), see CLAUDE.md
docs/ — project documentation and compatibility notes (SPA plans, backward compatibility)
siteroot/ — root-site publication: assets/ (legacy assets), 4nt/config/login/,
memo/read (legacy tools), see CLAUDE.md
License
See the repository license and project-specific notes in the root of the project.
Comments
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.