CBETA(漢文)、パーリ三蔵(ローマ字)、GRETIL(サンスクリット TEI)、SARIT(TEI P5)、SAT(オンライン)、浄土宗全書(オンライン)に加え、チベット大蔵経系のオンライン全文検索(BUDA/BDRC・Adarshah)にも対応した、高速な仏教テキスト検索・取得のための MCP サーバーおよび CLI です。Rust で実装し、高速・堅牢に動作します。
関連: English README | 繁體中文 README
- ダイレクトIDアクセス: テキストIDが分かっていれば即座に取得(最速!)
- CBETA / Tipitaka / GRETIL / SARIT / MUKTABODHA に対する高速な正規表現検索(行番号つき)
- CBETA検索は新字体など"現代の表記"でもヒットするよう正規化(旧字体・簡繁などの揺れを吸収)
- タイトル検索(CBETA / Tipitaka / GRETIL / SARIT / MUKTABODHA)
- 行番号や文字位置での前後コンテキスト取得
- SAT オンライン検索(スマートキャッシュ付き)
- 浄土宗全書(オンライン)の検索・本文取得(キャッシュ付き)
- チベット語のオンライン全文検索(BUDA/BDRC + Adarshah、EWTS/Wylieの簡易自動変換つき)
- ワンコマンド・ブートストラップとインデックス構築
前提: Git が必要です。
クイックインストール:
curl -fsSL https://raw.githubusercontent.com/sinryo/buddha-cli/main/scripts/bootstrap.sh | bash -s -- --yes --write-path手動セットアップ:
cargo build --release
scripts/install.sh --prefix "$HOME/.buddha" --write-pathClaude Code CLI:
claude mcp add buddha "$HOME/.buddha/bin/buddha" mcpCodex CLI(~/.codex/config.toml):
[mcp_servers.buddha]
command = "/Users/you/.buddha/bin/buddha"
args = ["mcp"]互換性: $HOME/.buddha/bin/buddha-mcp も互換aliasとして利用できます。レガシーalias daizo, daizo-mcp, daizo-cli も後方互換のため維持されています。
テキストIDが分かっていれば、検索をスキップして直接取得:
# CBETA: 大正番号(T + 4桁の数字)
buddha cbeta-fetch --id T0001 # 長阿含經
buddha cbeta-fetch --id T0262 # 妙法蓮華經
buddha cbeta-fetch --id T0235 # 金剛般若波羅蜜經
# Tipitaka: ニカーヤコード(DN, MN, SN, AN, KN)
buddha tipitaka-fetch --id DN1 # 梵網経
buddha tipitaka-fetch --id MN1 # 根本法門経
buddha tipitaka-fetch --id SN1 # 相応部第1
# GRETIL: サンスクリットテキスト名
buddha gretil-fetch --id saddharmapuNDarIka # 法華経(梵文)
buddha gretil-fetch --id vajracchedikA # 金剛般若経(梵文)
buddha gretil-fetch --id prajJApAramitAhRdayasUtra # 般若心経(梵文)
# SARIT: TEI P5 コーパス(ファイルstem)
buddha sarit-fetch --id asvaghosa-buddhacarita
# MUKTABODHA: 梵文ライブラリ(ファイルstem。ローカルに $BUDDHA_DIR/MUKTABODHA を配置)
buddha muktabodha-fetch --id "<file-stem>"# タイトル検索
buddha cbeta-title-search --query "楞伽經" --json
buddha tipitaka-title-search --query "dn 1" --json
buddha sarit-title-search --query "buddhacarita" --json
buddha muktabodha-title-search --query "yoga" --json
# 内容検索(行番号つき)
buddha cbeta-search --query "阿弥陀" --max-results 10
buddha tipitaka-search --query "nibbana|vipassana" --max-results 15
buddha gretil-search --query "yoga" --max-results 10
buddha sarit-search --query "yoga" --max-results 10
buddha muktabodha-search --query "yoga" --max-results 10# IDとオプション指定で取得
buddha cbeta-fetch --id T0858 --part 1 --max-chars 4000 --json
buddha tipitaka-fetch --id s0101m.mul --max-chars 2000 --json
buddha gretil-fetch --id buddhacarita --max-chars 4000 --json
buddha sarit-fetch --id asvaghosa-buddhacarita --max-chars 4000 --json
buddha muktabodha-fetch --id "<file-stem>" --max-chars 4000 --json
# 行番号の前後コンテキスト
buddha cbeta-fetch --id T0858 --line-number 342 --context-before 10 --context-after 200
buddha tipitaka-fetch --id s0305m.mul --line-number 158 --context-before 5 --context-after 100buddha init # 初期セットアップ(データ取得とインデックス構築)
buddha doctor --verbose # インストール/データ診断
buddha index-rebuild --source all
buddha uninstall --purge # バイナリとデータ/キャッシュを削除
buddha update --yes # CLI の再インストールbuddha CLI は AI エージェント(Claude Code、Codex など)から直接呼べるよう設計されています。
非TTY時のJSON自動出力: stdout がパイプやリダイレクトの場合、自動的にJSON出力になります。毎回 --json を指定する必要はありません。
buddha cbeta-title-search --query "般若" | jq . # 自動JSON(パイプ時)
BUDDHA_JSON=1 buddha cbeta-title-search --query "般若" # 環境変数でJSON強制
buddha --json cbeta-title-search --query "般若" # グローバル --json フラグ静音モード (--quiet / -q): stderr への進捗メッセージを抑制し、出力パースを容易にします。
コマンド自己発見 (buddha schema): 全サブコマンドと引数スキーマを機械可読JSONで取得できます。
buddha schema # 全コマンド一覧
buddha schema --command cbeta-fetch # 特定コマンドのスキーマ構造化エラー出力: JSONモード時、エラーは stderr に {"error":{"message":"...","code":"NOT_FOUND"}} 形式で出力されます。
| 終了コード | 意味 |
|---|---|
| 0 | 成功 |
| 1 | 汎用エラー |
| 2 | 使用方法エラー(引数不正) |
| 10 | データ未検出(結果なし) |
| 11 | ネットワークエラー(タイムアウト、接続) |
| 12 | データ未準備(clone/download が必要) |
基本:
buddha_version(サーバーのバージョン/ビルド情報)buddha_usage(AI クライアント向けの使い方ガイド。低トークン運用の推奨フロー)buddha_system_prompt(AI向けのsystem promptテンプレ(1枚)。低トークン運用の既定値をまとめたもの)buddha_profile(ツール呼び出しの簡易ベンチマーク)
解決:
buddha_resolve(タイトル/別名/ID からコーパス候補と、次に呼ぶべき取得ツール呼び出しを返す。対象: cbeta/tipitaka/gretil/sarit/muktabodha)
検索:
cbeta_title_search,cbeta_searchtipitaka_title_search,tipitaka_searchgretil_title_search,gretil_searchsarit_title_search,sarit_searchmuktabodha_title_search,muktabodha_searchsat_search(SAT大正新脩大蔵経の検索。_meta.results+sat_detail用の_meta.fetchSuggestionsを返す。fqでT番号レンジ絞り込み可)jozen_searchtibetan_search(チベット語のオンライン全文検索。sources:["buda","adarshah"]。BUDAはexactでフレーズ検索、Adarshahはwildcard、maxSnippetCharsでスニペット長)
取得:
cbeta_fetch(lb,lineNumber,contextBefore,contextAfter,headQuery,headIndex,format:"plain",focusHighlightをサポート。plainは XMLタグ除去・gaiji解決・teiHeader除外・改行保持。focusHighlightは最初のハイライト一致箇所付近にジャンプ)tipitaka_fetch(lineNumber,contextBefore,contextAfterをサポート)gretil_fetch(lineNumber,contextBefore,contextAfter,headQuery,headIndexをサポート)sarit_fetch(lineNumber,contextBefore,contextAfterをサポート)muktabodha_fetch(lineNumber,contextBefore,contextAfterをサポート)sat_fetch,sat_detail,sat_pipeline(SAT詳細取得。sat_pipelineはベストヒットを選んで自動取得。exactをサポート。デフォルトはフレーズ検索)jozen_fetch(lineno指定で1ページ取得。[J..] ...形式で返す)
パイプライン:
cbeta_pipeline,gretil_pipeline,sarit_pipeline,muktabodha_pipeline,sat_pipeline(要約優先ならautoFetch=false推奨)
テキストIDが分かっている場合は 検索をスキップ:
| コーパス | ID形式 | 例 |
|---|---|---|
| CBETA | T + 4桁数字 |
cbeta_fetch({id: "T0262"}) |
| Tipitaka | DN, MN, SN, AN, KN + 番号 |
tipitaka_fetch({id: "DN1"}) |
| GRETIL | サンスクリットテキスト名 | gretil_fetch({id: "saddharmapuNDarIka"}) |
| SARIT | TEIファイルstem | sarit_fetch({id: "asvaghosa-buddhacarita"}) |
| MUKTABODHA | ファイルstem | muktabodha_fetch({id: "FILE_STEM"}) |
CBETA(漢文大蔵経):
- T0001 = 長阿含經
- T0099 = 雜阿含經
- T0262 = 妙法蓮華經(法華経)
- T0235 = 金剛般若波羅蜜經(金剛経)
- T0251 = 般若波羅蜜多心經(般若心経)
Tipitaka(パーリ三蔵):
- DN1-DN34 = 長部(Dīghanikāya)
- MN1-MN152 = 中部(Majjhimanikāya)
- SN = 相応部(Saṃyuttanikāya)
- AN = 増支部(Aṅguttaranikāya)
GRETIL(梵文):
- saddharmapuNDarIka = 法華経
- vajracchedikA = 金剛般若経
- prajJApAramitAhRdayasUtra = 般若心経
- buddhacarita = 仏所行讃(馬鳴)
buddha_resolveで候補ID(コーパス)を決める*_fetchを{ id }(必要ならpartやheadQueryなど)で呼ぶ- フレーズ検索が必要なら
*_search→_meta.fetchSuggestions→*_fetch(lineNumber)を使う *_pipelineは多ファイル要約が必要な時のみ使用。既定でautoFetch=falseを推奨
buddha でいう crosswalk は、「人間のクエリ(経典名・別名・略称など)」から「実際に叩くべきコーパスID」と「次に呼ぶべき *_fetch」へ最短で橋渡しすることです。
buddha_resolve({query})を呼ぶ- 返ってくる候補と
_meta.fetchSuggestionsを使って、最小トークンで*_fetchに移る
各ツールの description にも案内を記載。initialize 応答の prompts.low-token-guide でも方針を提示します。
Tips: BUDDHA_HINT_TOP でサジェスト件数を制御(既定 1)。
- CBETA: https://github.com/cbeta-org/xml-p5
- Tipitaka (romanized): https://github.com/VipassanaTech/tipitaka-xml
- GRETIL (Sanskrit TEI): https://gretil.sub.uni-goettingen.de/
- SARIT(TEI P5): https://github.com/sarit/SARIT-corpus
- MUKTABODHA(梵文。ローカルファイル):
$BUDDHA_DIR/MUKTABODHA/に配置 - SAT (online): wrap7 / detail エンドポイント
- 浄土宗全書(オンライン): jodoshuzensho.jp
- BUDA/BDRC(チベット語オンライン): library.bdrc.io / autocomplete.bdrc.io
- Adarshah(チベット語オンライン): online.adarshah.org / api.adarshah.org
BUDDHA_DIR(既定:~/.buddha、レガシーフォールバック:DAIZO_DIR/~/.daizo)- データ:
xml-p5/,tipitaka-xml/romn/,GRETIL/,SARIT-corpus/,MUKTABODHA/ - キャッシュ:
cache/ - バイナリ:
bin/
- データ:
BUDDHA_JSON=1で全 CLI コマンドをJSON出力に強制(--jsonと同等)BUDDHA_DEBUG=1で簡易 MCP デバッグログ(レガシー:DAIZO_DEBUG)- ハイライト関連:
BUDDHA_HL_PREFIX,BUDDHA_HL_SUFFIX,BUDDHA_SNIPPET_PREFIX,BUDDHA_SNIPPET_SUFFIX - 取得ポリシー(レート/robots 配慮):
BUDDHA_REPO_MIN_DELAY_MS,BUDDHA_REPO_USER_AGENT,BUDDHA_REPO_RESPECT_ROBOTS
| スクリプト | 役割 |
|---|---|
scripts/bootstrap.sh |
ワンライナーインストーラー: 依存チェック → リポジトリclone → install.sh実行 → MCP自動登録(buddha mcp) |
scripts/install.sh |
メインインストーラー: buddha をビルド → バイナリ配置(buddha-mcp 互換alias含む) → GRETILダウンロード → インデックス構築 |
scripts/link-binaries.sh |
開発用: リリースバイナリへのシンボリックリンク作成 |
scripts/release.sh |
リリース用: バージョンバンプ → タグ作成 → GitHub Release |
# 自動一括(バンプ → コミット → タグ → プッシュ → GitHub リリース自動ノート)
scripts/release.sh 0.6.13 --all
# CHANGELOG をノートに使用
scripts/release.sh 0.6.13 --push --release
# ドライラン
scripts/release.sh 0.6.13 --all --dry-runMIT または Apache-2.0 © 2025 Shinryo Taniguchi
Issue や PR を歓迎します。バグ報告には buddha doctor --verbose の出力を添付してください。