dhamma-seeker avatar

Tripitaka MCP

dhamma-seeker/tripitaka-mcp

Gives Claude direct access to the complete Pāli Canon, the foundational Buddhist scriptures. You get 10 tools: hybrid search combining keyword and semantic matching, dictionary lookups across 20,000+ entries with inflection stripping, full sutta retrieval by ID, translation comparison at the segment level, and academic citation generation. All responses include deep links to SuttaCentral for verification. Runs as a hosted service over streamable HTTP or SSE, or install locally via pipx for fully offline operation with SQLite. The hosted version uses PostgreSQL with pgvector for semantic search; the local edition drops to FTS5 and omits vector tools but keeps the full 444K segment dataset. Offered as Dhamma Dāna, free for personal study and non-commercial research.

GitHub stars
1
tools
14
transport
HTTP, SSE
last updated
May 12, 2026

Install

From registry metadata
$ npx add-mcp https://mcp.tripitaka-mcp.com/mcp --name tripitaka-mcp

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http tripitaka-mcp https://mcp.tripitaka-mcp.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 14 tools

Verified live against the running server on Nov 6, 2026.

search_by_keywordKeyword search across the Pāli Tipiṭaka (trigram word-similarity). Searches the configured enabled language(s) on the server. Filterable by pitaka and translation edition. 💡 **Hints for the AI client:** The system's canonical reference is Romanised Pāli (from SuttaCentral). I...5 params

Keyword search across the Pāli Tipiṭaka (trigram word-similarity). Searches the configured enabled language(s) on the server. Filterable by pitaka and translation edition. 💡 **Hints for the AI client:** The system's canonical reference is Romanised Pāli (from SuttaCentral). I...

Parameters* required
editionvalue
Thai translation edition — "dhiranandi", "jayasaro", "mbu", "royal" or None. Only used when language="thai" and Thai is enabled on the server.
keyword*string
The word/phrase to search for.
languagestring
Search language — must be in the server's ENABLED_LANGUAGES (default: "pali"). Disabled languages return an error.one of pali · english · thaidefault: pali
limitinteger
Maximum results (default: 10, max: 50).default: 10
pitakavalue
Filter by pitaka — "vinaya", "sutta", "abhidhamma" or None (all). ✅ v1.1+: all three pitakas at parity with SuttaCentral bilara — see list_structure for live counts.
survey_corpusExhaustively survey the WHOLE Tipiṭaka for a term — guaranteed complete. Use this (not `search_by_keyword`) when the question is about **coverage or counting** rather than "show me the best passages": - "How many times does Kusinārā appear in the canon?" - "Every place ānāpāna...9 params

Exhaustively survey the WHOLE Tipiṭaka for a term — guaranteed complete. Use this (not `search_by_keyword`) when the question is about **coverage or counting** rather than "show me the best passages": - "How many times does Kusinārā appear in the canon?" - "Every place ānāpāna...

Parameters* required
cursorinteger
Offset into the full lexical result set for pagination.default: 0
keyword*string
Term to survey (Romanised Pāli preferred; diacritics optional — matching folds `ā→a`, `ṁ→m`, etc.).
languagestring
"pali" (default) or "english". Thai is not indexed yet.one of pali · englishdefault: pali
match_scopestring
"word" (default) matches the exact word/phrase only. "stem" also matches inflections + compounds via prefix (kusinārā → kusinārāyaṁ, kusināravagga …) — higher recall, may...one of word · stemdefault: word
modestring
"fast" (default) = lexical only — quick, no server-side ML, works offline. "thorough" = also run the semantic layer (hosted only; this is the heavier part). The lexical guarantee holds in BOTH.one of fast · thoroughdefault: fast
page_sizeinteger
Lexical results per page (default 20, max 100). Counts/forms cover the WHOLE corpus regardless of this.default: 20
pitakavalue
Restrict to "vinaya" / "sutta" / "abhidhamma", or None for all.
sem_limitinteger
Max semantic hits (default 50, max 200). `capped` flags when reached. Only used when mode="thorough".default: 50
sem_thresholdnumber
Max cosine distance for semantic hits (default 0.7; lower = stricter). Only used when mode="thorough".default: 0.7
get_suttaFetch a sutta's content — OR its table of contents (`mode="outline"`). ⚡ **Decide which mode BEFORE calling — don't fetch the whole sutta and parse it yourself:** - The user wants the **structure / outline / table of contents**, or asks **"how many sections/parts"** / "what's...9 params

Fetch a sutta's content — OR its table of contents (`mode="outline"`). ⚡ **Decide which mode BEFORE calling — don't fetch the whole sutta and parse it yourself:** - The user wants the **structure / outline / table of contents**, or asks **"how many sections/parts"** / "what's...

Parameters* required
aroundvalue
A segment_id to center on (e.g. "dn22:18.1"). Returns the `window` segments before and after it. Ignored if None.
editionvalue
Thai translation edition — "dhiranandi", "jayasaro", "mbu", "royal", or None. If None, uses `text_thai` from bilara-data. ⚠️ The DB has no Thai editions loaded yet, so most values re...
languagestring
Which language to return — "pali", "thai", "english", or "all" (default: "pali"). Thai is currently disabled on the server, so Thai fields return null.one of pali · thai · english · alldefault: pali
limitvalue
Max segments to return from `offset` (default None = to end, clamped 1–2000).
modestring
"full" (default, returns segment text) or "outline" (table of contents only — section keys/titles/counts, no segment text).one of full · outlinedefault: full
offsetinteger
0-based ordinal start for paging (default 0).default: 0
segment_rangevalue
Inclusive slice "<startId>..<endId>" (e.g. "dn16:2.1.0..dn16:2.2.8"). Omit the end id to read to the sutta's end. Uses the `..` separator.
sutta_id*string
Sutta ID, e.g. "mn1", "dn22", "sn56.11", "dhp1-20".
windowinteger
Segments before AND after `around` (default 10, clamped 0–200).default: 10
search_semanticSemantic search — match by meaning, not exact words. Uses vector similarity (cosine distance) over `text_pali` embedded with a multilingual MiniLM model. 🤔 **In most cases you should use `search_hybrid` instead** — it combines this semantic search with keyword search and rank...4 params

Semantic search — match by meaning, not exact words. Uses vector similarity (cosine distance) over `text_pali` embedded with a multilingual MiniLM model. 🤔 **In most cases you should use `search_hybrid` instead** — it combines this semantic search with keyword search and rank...

Parameters* required
languagestring
Output language — "pali", "thai", "english", or "all" (Thai disabled → null).default: pali
limitinteger
Maximum results (default: 5, max: 20).default: 5
query*string
Query text (English works best, then Pāli, Thai is weakest).
thresholdnumber
Maximum cosine distance (smaller = stricter match). Default 0.7; lower to 0.5 for tighter matches, raise to 0.9 for broader.default: 0.7
search_hybridHybrid search — combines keyword + semantic search via RRF. Uses Reciprocal Rank Fusion (RRF) to merge exact-word results with meaning-based results. **This is the recommended tool for "discourses about X" / concept queries**, because the semantic side catches suttas that disc...3 params

Hybrid search — combines keyword + semantic search via RRF. Uses Reciprocal Rank Fusion (RRF) to merge exact-word results with meaning-based results. **This is the recommended tool for "discourses about X" / concept queries**, because the semantic side catches suttas that disc...

Parameters* required
languagestring
Output language — "pali", "thai", "english", or "all".default: pali
limitinteger
Maximum results (default: 5, max: 20).default: 5
query*string
Query text (Thai, Pāli, or English — English works best).
list_structureShow the structure of all three pitakas with coverage statistics. 💡 **Use this tool when:** - The user asks for an overview of the Tipiṭaka (what's in it / which collections). - You need to check coverage before promising a search will find something — `segment_count > 0` is...

Show the structure of all three pitakas with coverage statistics. 💡 **Use this tool when:** - The user asks for an overview of the Tipiṭaka (what's in it / which collections). - You need to check coverage before promising a search will find something — `segment_count > 0` is...

No parameters. Call it with no arguments.

get_referenceBuild a proper citation string for a sutta. 💡 **Use this tool when:** - The user wants a citation for academic work, an article, or a reference. - You need to know the canonical location of a sutta (pitaka / nikāya). - You want a ready-to-use formatted citation string. 🔗 vs...1 params

Build a proper citation string for a sutta. 💡 **Use this tool when:** - The user wants a citation for academic work, an article, or a reference. - You need to know the canonical location of a sutta (pitaka / nikāya). - You want a ready-to-use formatted citation string. 🔗 vs...

Parameters* required
sutta_id*string
Sutta ID, e.g. "mn1", "dn22", "sn56.11".
list_editionsList the translation editions available, with coverage stats. 💡 **Use this tool when:** - Before calling `compare_translations` or `get_sutta(edition=...)`, so you know which edition values are valid and worth comparing. - The user asks which editions are loaded in the DB. 🔍...

List the translation editions available, with coverage stats. 💡 **Use this tool when:** - Before calling `compare_translations` or `get_sutta(edition=...)`, so you know which edition values are valid and worth comparing. - The user asks which editions are loaded in the DB. 🔍...

No parameters. Call it with no arguments.

compare_translationsCompare every available translation for a single segment. 💡 **Use this tool when:** - The user asks about the meaning/translation of a single Pāli line and wants to see multiple translators side-by-side. - Checking how different translators interpret the same line — technical...1 params

Compare every available translation for a single segment. 💡 **Use this tool when:** - The user asks about the meaning/translation of a single Pāli line and wants to see multiple translators side-by-side. - Checking how different translators interpret the same line — technical...

Parameters* required
segment_id*string
Segment ID, e.g. "mn26:8.2", "dn22:17.1", "mn62:5.3".
get_word_definitionLook up the dictionary meaning of a Pāli word, with sutta context. Serves as a Pāli Dictionary Bridge — pairs the "definition" with the "context where the Buddha actually used the word". 📖 **About the dictionary sources:** This tool draws from multiple primary dictionaries, i...3 params

Look up the dictionary meaning of a Pāli word, with sutta context. Serves as a Pāli Dictionary Bridge — pairs the "definition" with the "context where the Buddha actually used the word". 📖 **About the dictionary sources:** This tool draws from multiple primary dictionaries, i...

Parameters* required
languagestring
Dictionary language (e.g. "en", "thai", or "all" as default).one of en · thai · th · alldefault: all
limit_contextinteger
Number of sutta-context examples to include (1-5).default: 3
word*string
Word to look up (e.g. "dukkha", "กฐิน").
verify_quoteVerify, check, or confirm a Buddha quote — does the canon really say it? Fact-check a quotation attributed to the Buddha. Catches fake, misquoted, misattributed and misremembered passages, and finds the true reading. Paste a line that has been quoted or half-remembered — Pāli...2 params

Verify, check, or confirm a Buddha quote — does the canon really say it? Fact-check a quotation attributed to the Buddha. Catches fake, misquoted, misattributed and misremembered passages, and finds the true reading. Paste a line that has been quoted or half-remembered — Pāli...

Parameters* required
limitinteger
How many near matches to return when it is not exact (1–10).default: 3
text*string
The passage as quoted. Diacritics optional, folded internally. One line works best; the canon is segmented line by line, so a quote spanning several segments may only match in part.
define_from_suttasFind how the **suttas and Vinaya define a Pāli term in their own words**. The canon defines its own terms with fixed formulas — "Katamañca … dukkhaṁ?" (what is X?) … "ayaṁ vuccati … dukkhaṁ" (this is called X), "X adhivacana" (X is a designation for …), or the Vinaya "X nāma"....3 params

Find how the **suttas and Vinaya define a Pāli term in their own words**. The canon defines its own terms with fixed formulas — "Katamañca … dukkhaṁ?" (what is X?) … "ayaṁ vuccati … dukkhaṁ" (this is called X), "X adhivacana" (X is a designation for …), or the Vinaya "X nāma"....

Parameters* required
include_similesboolean
Include indirect definitions by simile/metaphor (seyyathāpi …, "is a designation for …"). Default True.default: true
limitinteger
Max definitional passages to return (1–15, default 5).default: 5
term*string
Pāli term in its base/dictionary form (e.g. "dukkha", "viññāṇa", "samādhi"). Diacritics optional — folded internally.
parse_pali_wordStrip Pāli inflectional suffixes to find the root form (basic stem). 💡 **Use this tool when:** - You find an inflected Pāli word (e.g. `dukkhassa`, `bhikkhūnaṁ`) and `get_word_definition` doesn't find it directly — Pāli inflects nouns across 7 cases × 2 numbers, ~16 forms per...1 params

Strip Pāli inflectional suffixes to find the root form (basic stem). 💡 **Use this tool when:** - You find an inflected Pāli word (e.g. `dukkhassa`, `bhikkhūnaṁ`) and `get_word_definition` doesn't find it directly — Pāli inflects nouns across 7 cases × 2 numbers, ~16 forms per...

Parameters* required
word*string
An inflected Pāli word (e.g. "dukkhassa", "bhikkhūnaṁ", "sīlavā").
open_sutta_viewerOpen an interactive sutta viewer inside the chat — Pāli + English, plus an optional third row in the user's own language translated BY YOU. Renders each segment as: Pāli on top (canonical), the bilara-data English below it (verification anchor), and — when you supply `translat...7 params

Open an interactive sutta viewer inside the chat — Pāli + English, plus an optional third row in the user's own language translated BY YOU. Renders each segment as: Pāli on top (canonical), the bilara-data English below it (verification anchor), and — when you supply `translat...

Parameters* required
aroundvalue
offsetinteger
default: 0
sutta_id*string
translation_disclaimervalue
translation_languagevalue
translationsvalue
windowinteger
default: 12

Sponsors

Readme

Tripitaka MCP Server

Tripitaka MCP logo: folded hands over a dhammacakka in pixel art

License: MIT MCP Spec Coverage Hosted Dhamma Dāna Glama Smithery


View the full README on GitHub

Details

Repository
github.com/dhamma-seeker/tripitaka-mcp
Website
tripitaka-mcp.com
Category
Search & Web Crawling
Transport
HTTP, SSE
Registry
MCP registry, active
Resources
2
Tools verified
Nov 6, 2026

Related Search & Web Crawling MCP servers

View all
1docupipe avatarDocuPipedocupipe/docupipe-mcpUpload documents and extract structured JSON from Claude Code, Codex, Cursor and other MCP clients.1stars
2domdomegg avatarGoogle Maps Placesdomdomegg/google-maps-places-mcpAllow AI systems to search for places and get business info via Google Maps Places API.1stars
3donjguido avatarAi Dictionary Mcpdonjguido/ai-dictionary-mcpLook up, search, cite, discuss, and track AI phenomenology terms1stars
4dsouzaanush avatarHeroku Code MCPdsouzaanush/heroku-code-mcpSearch and execute Heroku Platform API operations1stars
5emretheus avatarClaude Remind Mcpemretheus/claude-remind-mcpSearch past Claude Code conversations. Local BM25 over JSONL with one-click claude --resume.1stars
6fabric-protocol avatarFabric Marketplacefabric-protocol/fabricAgent-native marketplace. Bootstrap, list inventory, search, negotiate, and trade via MCP.1stars