mcpField
D
doctree-mcp

doctree-mcp

ローカル
github.com/joesaby検索120 週間前に更新

doctree-mcp について

doctree-mcpは、Markdown、CSV、JSONL文書を検索するMCPサーバーです。BM25検索とツリー形式のナビゲーションを組み合わせ、Wiki項目の作成・検証ツールも任意で利用できます。

主な機能

  1. 01フィルターと用語展開付きBM25検索
  2. 02見出しツリーによる文書ナビゲーション
  3. 03セクションと構造化データ行の取得
  4. 04任意のWiki書き込み・検証ツール
  5. 05stdio、HTTP、CLIモード

活用シーン

  1. 01プロジェクト文書から関連箇所を検索
  2. 02目次から文書のセクションをたどる
  3. 03正確なキーでデータ行を検索
  4. 04LLM管理のWiki項目を作成・検証

MCP 対応

検索、ツリーナビゲーション、セクション取得、行検索のツールをMCPクライアントに提供します。WIKI_WRITE=1を設定すると、任意のWiki書き込みツールを有効にできます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"joesaby-doctree": {
"command": "npx",
"args": [
"-y",
"doctree-mcp"
],
"env": {
"DOCS_ROOT": "<DOCS_ROOT>",
"DOCS_GLOB": "<DOCS_GLOB>",
"DOCS_ROOTS": "<DOCS_ROOTS>",
"GLOSSARY_PATH": "<GLOSSARY_PATH>"
}
}
}
}
起動コマンドnpx -y doctree-mcp
設定が必要な環境変数
DOCS_ROOTPath to your markdown repository root
DOCS_GLOBGlob pattern for finding markdown files (default: **/*.md)
DOCS_ROOTSMultiple weighted collections: ./docs:1.0,./api:0.8 (alternative to DOCS_ROOT)
GLOSSARY_PATHPath to glossary.json for query expansion (default: $DOCS_ROOT/glossary.json)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmdoctree-mcp1.0.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

doctree-mcp

Markdown、CSV、JSONL にわたるエージェント型ドキュメント検索。 MCP を介した BM25 +ツリーナビゲーション — ベクトル DB も、埋め込みも、インデックス作成時の LLM 呼び出しも不要です。

概要: MCP は構造的なプリミティブ(ナビゲーション可能なツリー、BM25、用語集、行検索)を提供します。同梱のスキルは手順に関する知識(ツリーのたどり方)を提供します。これらを組み合わせることで、エージェントは一度きりの検索ツールではなく、訓練を受けた調査司書のように動作します。スキル+MCP パターンをご覧ください。


クイックスタート

すでにドキュメントがありますか? クライアントからドキュメントを指定します:

# In your AI tool's MCP config — see docs/CLIENTS.md for per-tool snippets
{ "mcpServers": { "doctree": {
    "command": "bunx", "args": ["doctree-mcp"],
    "env": { "DOCS_ROOT": "./docs", "WIKI_WRITE": "1" }
} } }

ツールを再起動して、*「ドキュメントから X を検索して」*と尋ねるか、doc-read プロンプトを呼び出します。

これから始めますか? Karpathy 方式の LLM wiki を足場から作成します:

bunx doctree-mcp init          # configure current tool
bunx doctree-mcp init --all    # configure every supported client
bunx doctree-mcp init --dry-run

docs/wiki/(LLM が管理)と docs/raw-sources/(入力ファイル)を作成し、MCP 設定を書き込み、書き込み後の lint フックをインストールして、wiki の規約を CLAUDE.md / AGENTS.md / .cursor/rules/ に追記します。


動作モード

モード使用する場面ガイド
stdio(デフォルト)ローカル開発、自分のマシン上のエージェントクライアントのセットアップ
HTTP(Streamable HTTP)チーム、CI、ホスト型エージェントデプロイ — Railway · Fly · Render · Cloudflare Containers · Docker
CLIinit、lint、debug-index動作モード

全体の判断ツリー:動作モード。


仕組み — 取得 · 整理 · 追加

Agent: "How does token refresh work?"

→ search_documents("token refresh")
  #1  auth/middleware.md § Token Refresh Flow       score: 12.4
  #2  auth/oauth.md       § Refresh Token Lifecycle  score: 8.7

→ get_tree("docs:auth:middleware")
  [n1] # Auth Middleware
    [n4] ## Token Refresh Flow
      [n5] ### Automatic Refresh

→ navigate_tree("docs:auth:middleware", "n4")   ← n4 + descendants

コアの読み取りツール(常時有効):

ツール用途
search_documentsBM25 キーワード検索 + ファセットフィルター + 用語集による拡張(Markdown · CSV · JSONL)
get_tree目次 — 見出し、単語数、要約
get_node_contentノード ID を指定して特定セクションの全文を取得
navigate_treeセクションとそのすべての子孫を 1 回の呼び出しで取得
lookup_row構造化データの行をキーで O(1) 検索(例:PROJ-44)

Wiki 書き込みツール(WIKI_WRITE=1 でオプトイン):

ツール用途
find_similar重複率を使った重複検出
draft_wiki_entry足場作成:推奨パス、推定された frontmatter、用語集の一致項目
write_wiki_entry検証済みの書き込み:パスの包含確認、スキーマ、重複防止、ドライラン

安全対策:パスの包含確認 · frontmatter の検証 · 重複検出 · ドライラン · 上書き保護。

非推奨のエイリアス(list_documents、find_files、find_symbol)は search_documents に置き換えられています — 引き続き動作しますが、推奨されません。


スキル + MCP パターン

多くの検索ツールは、エージェントに検索ボックスを渡して、うまくいくことを期待するだけです。doctree-mcp はツリーを渡し、同梱のスキルがそのたどり方を教えます。

  • MCP = 構造的なプリミティブ。 search_documents、get_tree、navigate_tree、get_node_content、lookup_row は、完成した回答ではなく、エージェントが推論するためのツリー上の位置を返します。
  • スキル = 手続き的な知識。 /doc-read、/doc-write、/doc-lint は、パンくずをたどる段階的な絞り込みを実現します:検索 → アウトライン → ナビゲーション → 取得。エージェントは API だけでなく、方針を学びます。

この組み合わせをきれいに実現しているものは、ほかにありません:

アプローチプリミティブスキルが教えること課題
マネージド型ハイブリッド RAG(Cloudflare AI Search、Nia)フラットなチャンク + 類似度—スコアがブラックボックスで、監査証跡がない
ツールが回答を返す方式(Context7)回答を返す 2 つのツールクエリの形式エージェントはスキップされた内容を推論できない
CLI 上のスキル(QMD)フラット検索用の CLIクエリの拡張ナビゲーションできるツリーがない
doctree-mcp + /doc-readナビゲーション可能なツリーパンくず、複数インスタンスへのルーティング、Wiki の作成—

反復検索が優れている理由:

  • コンテキストの劣化。 100 万トークンのウィンドウにチャンクを詰め込むと、出力の質が低下します。パンくずをたどるナビゲーションなら、作業記憶を小さく保てます。
  • 監査可能性。 search_documents → get_tree → navigate_tree → get_node_content は、再実行可能な履歴になります。コサイン類似度スコアはそうではありません。規制対象の分野では、前者を採用できます。
  • 段階的開示。 ナビゲーション可能なプリミティブを絞り込むほうが、ツールを乱立させるより優れています(Cloudflare Code Mode を参照)。

複数インスタンス = クライアント側のフェデレーション。 複数の doctree サーバーを異なる名前で登録し、/doc-read スキルにルーティング方針を設定します。スキルに手を加えずにインスタンスを追加または削除できます。クライアントのセットアップ → 複数インスタンスへのルーティングを参照してください。


LLM Wiki パターン

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  Raw Sources    │     │  The Wiki        │     │  The Schema     │
│  (immutable)    │ ──→ │  (LLM-maintained)│ ←── │  (you define)   │
│  notes · logs   │     │  runbooks · refs │     │  CLAUDE.md rules │
└─────────────────┘     └─────────────────┘     └─────────────────┘

Karpathy の LLM Wiki に着想を得ています。詳しい手順については、docs/LLM-WIKI-GUIDE.mdを参照してください。


設定(概要)

---
title: "Descriptive Title"
description: "One-line summary — boosts ranking"
tags: [relevant, terms]
type: runbook          # runbook | guide | reference | tutorial | architecture | adr
category: auth
---

予約されていないすべてのフロントマター項目は、フィルターファセットになります:

search_documents("auth", filters: { type: "runbook", tags: ["production"] })

よく使われる環境変数:

変数デフォルト説明
DOCS_ROOT./docsドキュメントフォルダー
DOCS_GLOB**/*.mdカンマ区切りの glob(**/*.md,**/*.csv,**/*.jsonl)
DOCS_ROOTS—重み付けされた複数コレクション(./wiki:1.0,./rfcs:0.5)
PORT3100HTTP モードのポート
WIKI_WRITE(未設定)1 で書き込みツールを有効化
GLOSSARY_PATH$DOCS_ROOT/glossary.jsonクエリ拡張用の用語集

設定項目の全一覧は、docs/CONFIGURATION.mdを参照してください。

用語集 — 双方向のクエリ拡張を行うには、docs ルートに glossary.json を配置します:

{ "CLI": ["command line interface"], "K8s": ["kubernetes"] }

"TLS (Transport Layer Security)" のような略語の定義も自動的に抽出されます。

構造化データ — CSV/JSONL ファイルは、各行がツリーノードとなるドキュメントに変換されます。列の役割(id、タイトル、説明、ファセット、URL)はヘッダーから自動検出されます。docs/STRUCTURED-DATA.mdを参照してください。


ソースから実行する

git clone https://github.com/joesaby/doctree-mcp.git
cd doctree-mcp && bun install

DOCS_ROOT=./docs bun run serve          # stdio
DOCS_ROOT=./docs bun run serve:http     # HTTP (port 3100)
DOCS_ROOT=./docs bun run index          # CLI: inspect indexed output
bun test

パフォーマンス

操作時間トークンコスト
インデックス全体の作成(900 件のドキュメント)2~5 秒0
増分再インデックス約 50 ミリ秒0
検索5~30 ミリ秒約 300~1,000 トークン
ツリーのアウトライン1 ミリ秒未満約 200~800 トークン

ドキュメント

セットアップと運用

パターンと概念

ソース


先人の肩に立つ

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。