Перейти к основному содержимому

MCP-сервер для ИИ-агентов

У Dhamma.gift есть MCP-сервер: ИИ-ассистент (Claude, клиенты в стиле ChatGPT, Cursor и другие) сам ищет по Палийскому канону, читает сутты и сравнивает переводы, а в ответе даёт цитаты и ссылки на ридер. Используется тот же поисковый движок и те же тексты, что на сайте.

Адрес: https://dhamma.gift/mcp (Streamable HTTP, без входа, только чтение).

Инструменты​

ИнструментЧто делает
searchПоиск по слову/подстроке в палийском корне и выбранных языках перевода. Возвращает сутты и сегменты-попадания со ссылками на ридер.
get_textСутта по id (mn1, dn22, sn56.11): пали и переводы.
compare_translationsОдин сегмент (например mn129:21.3) на пали и во всех доступных переводах рядом.
list_structureЧто есть: коллекции, книги с числом сутт, языки и переводчики; с префиксом (mn, sn56) — список сутт под ним.

Подключение​

  • Claude (claude.ai / Desktop): Settings → Connectors → Add custom connector → URL https://dhamma.gift/mcp.
  • Claude Code: claude mcp add --transport http dhamma-gift https://dhamma.gift/mcp
  • Другие клиенты: добавьте удалённый (HTTP) MCP-сервер с тем же адресом.

Дальше спрашивайте обычными словами, например: «Найди все сутты про черепаху, процитируй пали и русский перевод со ссылками».

Как это работает​

  • Поиск буквальный: он ищет буквы, а не смысл. По теме ассистент сам пробует палийские и переводные слова (kacchapa, kummo, turtle, черепаха) и объединяет результаты. В запросе минимум 3 буквы; диакритика не учитывается (kacchap найдёт mahākacchapa).
  • В каждом ответе есть ссылки на ридер: https://dhamma.gift/mn129 — сутта, https://dhamma.gift/mn129:21.3 — точный сегмент.
  • Машинные (AI) переводы скрыты, как и в поиске на сайте.
  • Один запрос по умолчанию возвращает до 40 сутт (limit, максимум 200); если ответ обрезан, это сказано.
  • Регулярные выражения принимаются в тех же пределах, что в поиске на сайте; тяжёлые отклоняются.

Под капотом​

Наш сервер. core/mcp-server.js в репозитории dg-node, подключён как POST /mcp в dg-fastify.js (GET и DELETE отвечают 405: сервер без состояния, на каждый запрос свой объект, сессий нет). search и get_text — тонкие обёртки над функциями, на которых стоят /search и /api/text; compare_translations и list_structure читают dg.db напрямую (только чтение). Описания инструментов и краткая инструкция агенту (поиск буквальный, пробуй палийские и переводные слова, цитируй с переводчиком и ссылкой) передаются вместе с сервером.

Мы и чужой сервер. «ИИ-поиск» на сайте (/api/ai-search) просит языковую модель выдать палийские термины и английскую фразу, затем вызывает у хостящегося Tripitaka MCP инструмент search_hybrid (core/tipitaka-mcp-client.js), чтобы искать места по смыслу. У него только пали и английский Суджато, он используется как запасной вариант: обычный точный поиск от него не зависит. Кандидаты, которых нет в корпусе, отбрасываются до обращения к нему.

План и открытые вопросы (ранжирование, режим stdio для офлайн-приложения, отдельный поддомен mcp.) — в docs/MCP_PLAN.md репозитория.