Skip to main content
Glama

Website GitHub Actions Workflow Status GitHub License GitHub Release Made with Rust

Docdex

リポジトリを、人間とAIが信頼できる高速かつプライベートなコンテキストに変えましょう。

Docdexは、ドキュメントとソースコードのためのローカルファーストなインデクサー兼検索デーモンです。生のファイルとAIアシスタントの間に位置し、コードをクラウドのベクトルストアにアップロードすることなく、決定論的な検索、コードインテリジェンス、永続的なメモリを提供します。

⚡ なぜDocdexなのか?

ほとんどのAIツールは「grep」(高速だが単純)やホスト型RAG(低速でアップロードが必要)に依存しています。Docdexはローカルで実行され、コード構造を理解し、AIエージェントに永続的なメモリを提供します。

問題

一般的なアプローチ

Docdexの解決策

コンテキストの検索

grep/rg (ノイズが多く、文字通りの一致のみ)

意図に基づいたランク付けされた構造化結果

コードのプライバシー

ホスト型RAG (コードのアップロードが必要)

ローカルのみのインデックス作成。 コードはマシン内に留まります。

検索のサイロ化

IDE専用の検索バー

CLI、HTTP、MCPクライアントに同時に対応する共有デーモン

コードの認識

文字列一致

依存関係と定義を理解するためのASTおよびインパクトグラフ


Related MCP server: mcp-server-tree-sitter

🚀 機能

  • 📚 ドキュメントインデックス作成: リポジトリのドキュメントを即座にランク付けし、要約します。

  • 🧠 ASTおよびインパクトグラフ: 関数の意図で検索し、下流の依存関係を追跡します(Rust、Python、JS/TS、Go、Java、C++などをサポート)。

  • 💾 リポジトリメモリ: プロジェクトの事実、決定事項、メモをローカルに保存します。

  • 👤 エージェントメモリ: リポジトリをまたいでユーザーの好み(例:「簡潔な箇条書きを使う」)を記憶します。

  • 🗂️ 会話メモリ: トランスクリプトをインポートし、ウェイクアップバンドルをコンパクトに保ち、リポジトリスコープの要約、日記エントリ、ワーキングメモリを導き出します。

  • 🕸️ 時間的ナレッジグラフ: アーカイブされた会話からエンティティ、エッジ、エピソード、コード関連のリンクを抽出し、タイムラインや近傍クエリに対応します。

  • 🧭 ウェイクアップ + プロジェクトマップコンテキスト: コンパクトなウェイクアップバンドル、プロファイルの真実、キャッシュされた Project map: コンテキストをOpenAI互換のチャット補完に注入します。

  • 🔌 MCPネイティブ: Claude Desktop、Cursor、Windsurfなどのツール向けに自動設定されます。

  • 🌐 Webエンリッチメント: ローカルLLM(Ollama経由)によるフィルタリングを備えたオプションのWeb検索。


📦 インストールと設定

一度インストールしてエージェントをDocdexに向ければ、バックグラウンドで動作し続けます。

1. npm経由でインストール(推奨)

Node.js >= 18が必要です。OS(macOS、Linux、Windows)に適したバイナリがダウンロードされます。

npm i -g docdex
WARNING

Windowsの要件: DocdexはMSVCランタイムを使用します。docdex/docdexdを実行する前に、Microsoft Visual C++ Redistributable 2015-2022 (x64) をインストールしてください。

  • Winget: winget install --id Microsoft.VCRedist.2015+.x64

  • 手動: Microsoftから vc_redist.x64.exe をダウンロード: https://aka.ms/vs/17/release/vc\\\\_redist.x64.exe

  • docdexd0xC0000135 で終了する場合、ランタイムが不足しています。

2. 自動設定

以下のクライアントがインストールされている場合、DocdexはローカルのMCPエンドポイント(デーモンHTTP/SSE)を使用するように自動的に設定します:

Claude Desktop, Cursor, Windsurf, Cline, Roo Code, Continue, VS Code, PearAI, Void, Zed, Codex.

注: インストール後、AIクライアントを再起動してください。


🛠️ 使用ワークフロー

1. リポジトリのインデックス作成

一度実行して、インデックスとグラフデータを構築します。

docdexd index --repo /path/to/my-project

2. デーモンの起動

共有サーバーを起動します。これにより、HTTPリクエストとMCP接続が処理されます。

docdex start
# or: docdexd daemon --host 127.0.0.1 --port 28491

3. 質問する(CLI)

ターミナルから直接チャットできます。

docdexd chat --repo /path/to/my-project --query "how does auth work?"

🔌 Model Context Protocol (MCP)

DocdexはAIエージェントの「脳」となるように設計されています。エージェントが接続するためのMCPエンドポイントを公開します。

アーキテクチャ

flowchart LR
  Repo[Repo on disk] --> Indexer[Docdex Indexer]
  Indexer --> Daemon[Docdex Daemon]
  Daemon -->|HTTP + SSE| MCPClient[MCP Client]
  MCPClient --> Host[AI Agent / Editor]

デーモンのHTTP/SSEエンドポイントを使用してください。サンドボックス化されたクライアントの場合、DocdexはローカルIPC(UnixソケットまたはWindows名前付きパイプ)経由でMCPを提供することもできますが、ほとんどのMCPクライアントではHTTP/SSEがデフォルトのままです。

手動設定

クライアントを手動で設定する必要がある場合:

JSON (Claude/Cursor/Continue):

{
  "mcpServers": {
    "docdex": {
      "url": "http://127.0.0.1:28491/v1/mcp/sse"
    }
  }
}

Claude Code (CLI) JSON (~/.claude.json またはプロジェクトの .mcp.json):

{
  "mcpServers": {
    "docdex": {
      "type": "http",
      "url": "http://127.0.0.1:28491/v1/mcp"
    }
  }
}

TOML (Codex):

[mcp_servers.docdex]
url = "http://127.0.0.1:28491/v1/mcp"
tool_timeout_sec = 300
startup_timeout_sec = 300

🤖 機能と例

1. ASTおよびインパクト分析

単に「addressGenerator」という文字列を見つけるだけでなく、その定義とそれが何に影響を与えるかを見つけます。

# Find definition
curl "http://127.0.0.1:28491/v1/ast?name=addressGenerator&pathPrefix=src"

# Track downstream impact (what breaks if I change this?)
curl "http://127.0.0.1:28491/v1/graph/impact?file=src/app.ts&maxDepth=3"

2. メモリシステム

Docdexでは、後で検索して思い出すのに役立つ「事実」を保存できます。

リポジトリメモリ (プロジェクト固有):

# Teach the repo a fact
docdexd memory-store --repo . --text "Payments retry up to 3 times with backoff."

# Recall it later
docdexd memory-recall --repo . --query "payments retry policy"

エージェントメモリ (ユーザーの好み):

# Set a style preference
docdexd profile add --agent-id "default" --category style --content "Use concise bullet points."

3. 会話メモリ

会話メモリはデフォルトでリポジトリスコープであり、オプションです。リポジトリを持たないセッションでは、リポジトリアーカイブを誤って再利用しないよう、明示的な会話名前空間を使用する必要があります。サブシステムはトランスクリプトをインポートし、エピソードの要約とワーキングメモリを保存し、日記エントリと時間的KGの事実を knowledge.db に導き出し、リコールを厳格なウェイクアップ予算内に保ちます。

CLIのアーカイブ、日記、フックコマンドはHTTPベースのラッパーであるため、最初に docdex start または docdexd daemon を実行してください。

# Archive and inspect transcripts
docdexd conversations import --repo . ./session.txt --format plain_text --agent-id codex
docdexd conversations list --repo . --agent-id codex
docdexd conversations search --repo . "timeline_index"
docdexd conversations read --repo . <session_id>

# Import into an explicit global conversation namespace instead of a repo archive
docdexd conversations import --conversation-namespace shared-team ./session.txt --format plain_text --agent-id codex
docdexd conversations search --conversation-namespace shared-team "timeline_index"

# Keep agent diary notes alongside imported sessions
docdexd diary write --repo . --agent-id codex "Wake-up rollout validated against knowledge.db timeline output."
docdexd diary read --repo . --agent-id codex

# Trigger durable summarization from an external transcript
docdexd hook conversation --repo . \
  --action session_close_summarization \
  --source codex \
  --agent-id codex \
  --transcript ./session.txt \
  --format plain_text \
  --wait-for-processing

# Build a compact wake-up bundle over recent context
curl -X POST http://127.0.0.1:28491/v1/wakeup \
  -H "Content-Type: application/json" \
  -d '{"agent_id":"codex","query":"timeline_index","max_tokens":96}'

# Address the same archive over HTTP without repo_id
curl -X POST http://127.0.0.1:28491/v1/wakeup \
  -H "Content-Type: application/json" \
  -H "x-docdex-conversation-namespace: shared-team" \
  -d '{"agent_id":"codex","query":"timeline_index","max_tokens":96}'

# Explore derived repo-scoped knowledge facts and provenance
curl "http://127.0.0.1:28491/v1/kg/query?q=knowledge.db&limit=10"
curl "http://127.0.0.1:28491/v1/kg/search/nodes?q=knowledge&limit=10"
curl "http://127.0.0.1:28491/v1/kg/neighborhood?entity=knowledge.db&limit=10"
curl "http://127.0.0.1:28491/v1/kg/timeline?entity=knowledge.db&limit=10"

# Chat with wake-up + project-map context and inspect reasoning trace metadata
curl -X POST http://127.0.0.1:28491/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "fake-model",
    "messages": [{"role": "user", "content": "What changed around knowledge.db?"}],
    "docdex": {
      "agent_id": "codex",
      "limit": 6,
      "include_libs": true,
      "dag_session_id": "session-123"
    }
  }'

4. ローカルLLM (Ollama)

Docdexは埋め込みとオプションのローカルチャットにOllamaを使用します。

  • セットアップ: docdex setup を実行して対話型ウィザードを使用します。

  • 手動: Ollamaで nomic-embed-text がプルされていることを確認してください (ollama pull nomic-embed-text)。

  • カスタムURL:

DOCDEX_OLLAMA_BASE_URL=http://127.0.0.1:11434 docdex start --host 127.0.0.1 --port 28491

⚙️ 設定とHTTP API

Docdexはローカルデーモンとして実行され、以下を提供します:

  • CLIコマンド: docdexd chat

  • HTTP API: /search, /v1/capabilities, /v1/search/rerank, /v1/search/batch, /v1/chat/completions, /v1/ast, /v1/graph/impact, /v1/conversations/*, /v1/diary/*, /v1/hooks/conversation, /v1/wakeup, /v1/kg/*

  • MCPエンドポイント: /v1/mcp および /v1/mcp/sse

  • 機能ネゴシエーションツール: docdex_capabilities, docdex_rerank, docdex_batch_search, docdex_conversation_*, docdex_diary_*, docdex_conversation_hook, docdex_wakeup, docdex_kg_*

マルチリポジトリ設定

単一のデーモンを実行し、必要に応じて追加のリポジトリをマウントします。

docdex start --port 28491

# Mount repos and capture repo_id values
curl -X POST "http://127.0.0.1:28491/v1/initialize" \
  -H "Content-Type: application/json" \
  -d '{"rootUri":"file:///path/to/repo-a"}'

curl -X POST "http://127.0.0.1:28491/v1/initialize" \
  -H "Content-Type: application/json" \
  -d '{"rootUri":"file:///path/to/repo-b"}'

注意:

  • 複数のリポジトリがマウントされている場合(またはデーモンがデフォルトのリポジトリなしで起動した場合)、HTTPリクエストに x-docdex-repo-id: <sha256> を含めてください。

  • MCPセッションは initialize.rootUri で提供されたリポジトリにバインドされ、そのリポジトリを自動的に再利用します。

セキュリティ

  • セキュアモード: デフォルトでは、Docdexはループバック以外のバインドでTLSを強制します。

  • ループバック: 127.0.0.1 はローカルエージェント向けにTLSなしでアクセス可能です。

  • ネットワークに公開する場合(注意して使用してください)、--expose および --auth-token を使用してください。


📚 詳細はこちら

  • 詳細な使用方法: docs/usage.md

  • APIリファレンス: docs/http_api.md

  • MCP仕様: docs/mcp/errors.md

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bekirdag/docdex'

If you have feedback or need assistance with the MCP directory API, please join our Discord server