- Language
- JavaScript
- Last commit
- 2h ago
- Forks
- 0
- Open issues
- 23
- Registry update
- Oct 17, 2026
Connect
remote$claude mcp add --transport http pali-canon https://api.dhamma.gift/mcpHeaders
Nothing to configure — it works as is.
Security review
Review passedReviewed 2h ago.
- tools
- 4 tools scanned
- metadata
- scanned
No findings.
Tools
4search
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
concord-engine
io.github.harsh-chandak
Scale parallelism. Preserve alignment. A fleet of coding agents builds one task in parallel against
greenlight
io.github.CloudCorpRecords
Pre-flight checks for open-source contributions: is this GitHub issue actually landable?
mcp
io.github.briefroom
briefroom stdio MCP server — expose the briefroom CLI to Claude Code, Codex, and other agents.
SkillTotal
ai.skilltotal
Deterministic security scan of MCP servers, agent skills and npm/PyPI packages. Runs locally.
GifSnap by Rowix
com.gifsnap
Search GIFs and retrieve animated media URLs; show reactions in clients that support MCP Apps.
SocialSwarm
si.socialswarm
Discover GitHub projects welcoming AI agent contributions. Public search and listing reads.
Listing from the official MCP Registry · repository facts from GitHub, 2h ago.