gift.dhamma/pali-canon·Dev tools

Dhamma.Gift — Pāli Canon

Search and read the Pāli Canon: Pāli root texts with Russian and English translations.

Stars
1
Version
1.0.0
License
—
Review
Passed
Language
JavaScript
Last commit
2h ago
Forks
0
Open issues
23
Registry update
Oct 17, 2026

Connect

remote
Terminal
$claude mcp add --transport http pali-canon https://api.dhamma.gift/mcp

Headers

Nothing to configure — it works as is.

Security review

Review passed

Reviewed 2h ago.

tools
4 tools scanned
metadata
scanned

No findings.

Tools

4
  • search

    Search the Pali Canon on dhamma.gift by keyword/substring or REGEX (min 3 letters, no semantic search). Patterns like "kata.*dukkha", "vucc.*dukkha", "katha.*dukkha" find the canon's own definitions and expositions of a term. Returns a CENSUS of every matching sutta — id, title, match count, metaphor count, reader link — Pali only, ordered so that suttas that DEFINE the term come first, then ones NAMED after it, then by how often it occurs. Set include_segments for the matched Pali lines, include_translations (+ langs) for translations. 40 suttas by default (25 by occurrence count, plus 15 for suttas named after the term and ones defining it); metadata.totalFiles reports the true count, and limit takes a number or "all".

  • get_text

    Fetch a sutta by id (e.g. "dn22", "mn1", "sn56.11") — the Pali root text of every segment. Pali only by default; pass langs for translations, translators to name a translator (e.g. ["en_sujato"]). Same data as dhamma.gift/api/text.

  • compare_translations

    One segment of the canon in the Pali root and every available translation side by side. Use a segment id from search/get_text, e.g. "mn129:21.3". Sujato (en_sujato) is excluded unless named in translators.

  • list_structure

    What texts exist. Without arguments: collections (sutta/vinaya/abhidhamma/khuddaka), books by id prefix with sutta counts, and translation languages with translators. With prefix (e.g. "mn", "sn56", "an4"): the suttas under it with titles.

dg-node

Поиск и ридер текстов Пали-канона (SuttaCentral Bilara + переводы проекта DhammaGift). Node.js (Fastify в проде, Express — старый сервер), самодостаточный — всё, что фронтенд реально запрашивает из /assets/... (jQuery, Bootstrap, DataTables, словарь DPD, картинки кнопок, тулзы мультитула), лежит в public/overrides/; siteroot/assets/ (symlink на легаси-репо) остаётся только запасным маунтом для того, чего в public/overrides/ нет (тяжёлые PDF/аудио, тексты).

Архитектура и правила разработки — см. CLAUDE.md.

Установка и запуск

git pull
npm install
npm run build-search-db   # собрать dg.db (SQLite/FTS5) из свежих Bilara-данных
npm start                 # запустить прод-сервер (dg-fastify.js), порт 3000

build-search-db нужно перезапускать при изменении исходных текстов/переводов на диске — сервер каждый раз читает только уже собранный dg.db, не сканирует диск заново.

Пути к данным (SC_BILARA, DG_OFFLINE, офлайн-зеркала) определяются автоматически по окружению (Termux / Windows-разработка / Linux-прод).

unused/dg-light.js/unused/dblight.js (npm run start:express) — старый Express+grep сервер, legacy, в проде не используется (см. CLAUDE.md).

Проверка после деплоя/обновления

curl "http://localhost:3000/search?q=kacchapa&scope=dhamma&langs=ru,en"
curl -I "http://localhost:3000/assets/js/datatables/datatables.min.js"   # 200 из public/overrides/js/datatables, не из легаси-репо
curl -I "http://localhost:3000/dn22"                                  # ридер по чистому URL
curl -I "http://localhost:3000/dn22:10.5"                             # сегментная ссылка (скролл к 10.5)

Глазами в браузере:

  • /nodejs/res/?q=kacchapa&scope=dhamma — поиск, DataTables, экспорт.
  • /dn22 — ридер, полный текст.
  • Переключатель Pāḷi/Рус (три режима: пали+перевод → только пали → только перевод) — должен реально прятать текст (проверять getComputedStyle(el).display), а не только менять CSS-класс.
  • /?q=dn22#12.1 (старый формат) — должен продолжать работать наравне с /dn22:12.1.

Важно при деплое за Apache/PHP

Если публичный dhamma.gift сейчас обслуживается Apache/PHP, а Node — отдельный бэкенд, проксируемый только на /search, то новые роуты (/, /dn22, /assets/*, /api/text/*) снаружи видны не будут, пока правила проксирования не расширят на эти пути тоже. Легаси-репозиторий (/c/soft/dg в деве, соответствующий путь в проде) при этом не трогаем — правим только конфиг проксирования.

Структура

dg-fastify.js         — прод-сервер (Fastify + SQLite/FTS5, dg.db): /search, /api/text/:suttaId,
                        статика (search/, reader/, siteroot/assets/), офлайн-зеркала,
                        чистые URL (/dn22, /dn22:12.1)
unused/dg-light.js    — legacy Express+grep сервер, в проде не используется (см. CLAUDE.md)
unused/dblight.js     — билд-скрипт dg-light.js → dg_db_light.json (легаси, не нужен dg.db)
search/               — страница поиска (DataTables); URL остался /nodejs/res/... (см. CLAUDE.md)
reader/               — ридер (reader-template.html + megareader.js)
configs/              — json-конфиги проекта (openapi, reader/*, search/*), см. CLAUDE.md
docs/                  — документация не для каждой сессии (SPA-планы, backward compat)
siteroot/             — публикация от корня сайта: assets/ (легаси-ассеты), 4nt/config/login/
                        memo/read (легаси-тулзы), см. CLAUDE.md

From the server's repository — third-party content, read it before running anything it suggests.

More in Dev tools

Listing from the official MCP Registry · repository facts from GitHub, 2h ago.