什么是 io.github.bekirdag/docdex?
面向单个代码仓库的高速文档索引与全文搜索 MCP 服务器,适合快速检索 codebase 内容。
README
Docdex
Turn your repository into fast, private context that humans and AI can trust.
Docdex is a local-first indexer and search daemon for documentation and source code. It sits between your raw files and your AI assistant, providing deterministic search, code intelligence, and persistent memory without ever uploading your code to a cloud vector store.
⚡ Why Docdex?
Most AI tools rely on "grep" (fast but dumb) or hosted RAG (slow and requires uploads). Docdex runs locally, understands code structure, and gives your AI agents a persistent memory.
| Problem | Typical Approach | The Docdex Solution |
|---|---|---|
| Finding Context | grep/rg (Noisy, literal matches) | Ranked, structured results based on intent. |
| Code Privacy | Hosted RAG (Requires uploading code) | Local-only indexing. Your code stays on your machine. |
| Siloed Search | IDE-only search bars | Shared Daemon serving CLI, HTTP, and MCP clients simultaneously. |
| Code Awareness | String matching | AST & Impact Graph to understand dependencies and definitions. |
🚀 Features
- 📚 Document Indexing: Rank and summarize repo documentation instantly.
- 🧠 AST & Impact Graph: Search by function intent and track downstream dependencies (supports Rust, Python, JS/TS, Go, Java, C++, and more).
- 💾 Repo Memory: Stores project facts, decisions, and notes locally.
- 👤 Agent Memory: Remembers user preferences (e.g., "Use concise bullet points") across different repositories.
- 🗂️ Conversation Memory: Imports transcripts, keeps wake-up bundles compact, and derives repo-scoped summaries, diary entries, and working memory.
- 🕸️ Temporal Knowledge Graph: Extracts entities, edges, episodes, and code-facing links from archived conversations for timeline and neighborhood queries.
- 🧭 Wake-Up + Project Map Context: Injects compact wake-up bundles, profile truth, and cached
Project map:context into OpenAI-compatible chat completions. - 🔌 MCP Native: Auto-configures for tools like Claude Desktop, Cursor, and Windsurf.
- 🌐 Web Enrichment: Optional web search with local LLM filtering through detected local LLM services.
📦 Set-and-Forget Install
Install once, point your agent at Docdex, and it keeps working in the background.
1. Install via npm (Recommended)
Requires Node.js >= 18. This will download the correct binary for your OS (macOS, Linux, Windows).
npm i -g docdex
[!WARNING] Windows requirement: Docdex uses the MSVC runtime. Install the Microsoft Visual C++ Redistributable 2015-2022 (x64) before running
docdex/docdexd.
- Winget:
winget install --id Microsoft.VCRedist.2015+.x64- Manual: download
vc_redist.x64.exefrom Microsoft: https://aka.ms/vs/17/release/vc_redist.x64.exe- If
docdexdexits with0xC0000135, the runtime is missing.
2. Auto-Configuration
If you have any of the following clients installed, Docdex automatically configures them to use the local MCP endpoint (daemon HTTP/SSE):
Claude Desktop, Cursor, Windsurf, Cline, Roo Code, Continue, VS Code, PearAI, Void, Zed, Codex.
Note: Restart your AI client after installation.
🛠️ Usage Workflow
1. Index a Repository
Run this once to build the index and graph data.
docdexd index --repo /path/to/my-project
2. Start the Daemon
Start the shared server. This handles HTTP requests and MCP connections.
docdex start
# or: docdexd daemon --host 127.0.0.1 --port 28491
3. Ask Questions (CLI)
You can chat directly from the terminal.
docdexd chat --repo /path/to/my-project --query "how does auth work?"
🔌 Model Context Protocol (MCP)
Docdex is designed to be the "brain" for your AI agents. It exposes an MCP endpoint that agents connect to.
Architecture
flowchart LR
Repo[Repo on disk] --> Indexer[Docdex Indexer]
Indexer --> Daemon[Docdex Daemon]
Daemon -->|HTTP + SSE| MCPClient[MCP Client]
MCPClient --> Host[AI Agent / Editor]
Use the daemon HTTP/SSE endpoint. For sandboxed clients, Docdex can also serve MCP over local IPC (Unix socket or Windows named pipe), while HTTP/SSE remains the default for most MCP clients.
Manual Configuration
If you need to configure your client manually:
JSON (Claude/Cursor/Continue):
{
"mcpServers": {
"docdex": {
"url": "http://127.0.0.1:28491/v1/mcp/sse"
}
}
}
Claude Code (CLI) JSON (~/.claude.json or project .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
🤖 capabilities & Examples
1. AST & Impact Analysis
Don't just find the string "addressGenerator"; find the definition and what it impacts.
# 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. Memory System
Docdex allows you to store "facts" that retrieval helps recall later.
Repo Memory (Project specific):
# 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"
Agent Memory (User preference):
# Set a style preference
docdexd profile add --agent-id "default" --category style --content "Use concise bullet points."
3. Conversation Memory
Conversation memory is repo-scoped by default and optional. Repo-less sessions must use an explicit conversation namespace so they never silently reuse a repo archive. The subsystem imports transcripts, stores episodic summaries and working memory, derives diary entries and temporal KG facts into knowledge.db, and keeps recall under a strict wake-up budget.
The CLI archive, diary, and hook commands are HTTP-backed wrappers, so start docdex start or docdexd daemon first.
# 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. Local LLM Services
Docdex detects supported local LLM services before it suggests installing anything. It can reuse Ollama, vLLM, llama.cpp-compatible OpenAI endpoints, LM Studio, LocalAI, SGLang, TGI-compatible deployments, and healthy local mcoda agents when they are already present. Ollama remains the recommended fallback because it is the easiest guided setup path.
- Setup: Run
docdex setupfor an interactive wizard that lists detected services, models, embedding candidates, and local delegation agents. - Inspect: Run
docdexd llm detect --jsonordocdexd llm diagnostics --jsonto see why a service/model was selected, skipped, or marked unhealthy. - Manual Ollama fallback: If no usable service is installed, pull the fallback embedding model with
ollama pull nomic-embed-text. - Custom Ollama URL:
DOCDEX_OLLAMA_BASE_URL=http://127.0.0.1:11434 docdex start --host 127.0.0.1 --port 28491
⚙️ Configuration & HTTP API
Docdex runs as a local daemon serving:
- CLI Commands:
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 Endpoints:
/v1/mcpand/v1/mcp/sse - Capability Negotiation Tools:
docdex_capabilities,docdex_rerank,docdex_batch_search,docdex_conversation_*,docdex_diary_*,docdex_conversation_hook,docdex_wakeup,docdex_kg_*
Multi-Repo Setup
Run a single daemon and mount additional repos on demand.
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"}'
Notes:
- When more than one repo is mounted (or the daemon starts without a default repo), include
x-docdex-repo-id: <sha256>on HTTP requests. - MCP sessions bind to the repo provided in
initialize.rootUriand reuse that repo automatically.
Security
- Secure Mode: By default, Docdex enforces TLS on non-loopback binds.
- Loopback:
127.0.0.1is accessible without TLS for local agents. - To expose to a network (use with caution), use
--exposeand--auth-token.
📚 Learn More
- Detailed Usage:
docs/usage.md - API Reference:
docs/http_api.md - MCP Specs:
docs/mcp/errors.md
常见问题
io.github.bekirdag/docdex 是什么?
面向单个代码仓库的高速文档索引与全文搜索 MCP 服务器,适合快速检索 codebase 内容。
相关 Skills
前端设计
by anthropics
面向组件、页面、海报和 Web 应用开发,按鲜明视觉方向生成可直接落地的前端代码与高质感 UI,适合做 landing page、Dashboard 或美化现有界面,避开千篇一律的 AI 审美。
✎ 想把页面做得既能上线又有设计感,就用前端设计:组件到整站都能产出,难得的是能避开千篇一律的 AI 味。
网页应用测试
by anthropics
用 Playwright 为本地 Web 应用编写自动化测试,支持启动开发服务器、校验前端交互、排查 UI 异常、抓取截图与浏览器日志,适合调试动态页面和回归验证。
✎ 借助 Playwright 一站式验证本地 Web 应用前端功能,调 UI 时还能同步查看日志和截图,定位问题更快。
网页构建器
by anthropics
面向复杂 claude.ai HTML artifact 开发,快速初始化 React + Tailwind CSS + shadcn/ui 项目并打包为单文件 HTML,适合需要状态管理、路由或多组件交互的页面。
✎ 在 claude.ai 里做复杂网页 Artifact 很省心,多组件、状态和路由都能顺手搭起来,React、Tailwind 与 shadcn/ui 组合效率高、成品也更精致。
相关 MCP Server
GitHub
编辑精选by GitHub
GitHub 是 MCP 官方参考服务器,让 Claude 直接读写你的代码仓库和 Issues。
✎ 这个参考服务器解决了开发者想让 AI 安全访问 GitHub 数据的问题,适合需要自动化代码审查或 Issue 管理的团队。但注意它只是参考实现,生产环境得自己加固安全。
Context7 文档查询
编辑精选by Context7
Context7 是实时拉取最新文档和代码示例的智能助手,让你告别过时资料。
✎ 它能解决开发者查找文档时信息滞后的问题,特别适合快速上手新库或跟进更新。不过,依赖外部源可能导致偶尔的数据延迟,建议结合官方文档使用。
by tldraw
tldraw 是让 AI 助手直接在无限画布上绘图和协作的 MCP 服务器。
✎ 这解决了 AI 只能输出文本、无法视觉化协作的痛点——想象让 Claude 帮你画流程图或白板讨论。最适合需要快速原型设计或头脑风暴的开发者。不过,目前它只是个基础连接器,你得自己搭建画布应用才能发挥全部潜力。