Docdex
概述
安装
内容详情
替代品
什么是Docdex?
Docdex是一个专门为代码项目设计的本地文档搜索引擎。它能够自动扫描项目中的文档文件(如Markdown、文本文件),建立本地索引,然后让你通过简单的搜索快速找到相关的文档内容。所有数据都存储在本地,无需连接到互联网或任何外部服务。如何使用Docdex?
使用Docdex非常简单:首先安装它,然后在你的项目目录中运行索引命令,最后启动服务即可。你可以通过HTTP API或命令行工具搜索文档,搜索结果会以结构化的方式返回,非常适合集成到开发工作流中。适用场景
Docdex特别适合以下场景: 1. 大型项目中有大量文档需要快速查找 2. 团队协作时需要统一文档搜索入口 3. 集成到AI编程助手(如GitHub Copilot、Cursor等)中提供上下文 4. 本地开发环境需要快速查阅项目文档 5. 需要保护敏感文档内容不外泄的场景主要功能
本地索引
所有文档索引都存储在本地磁盘上,无需网络连接或外部服务,确保数据隐私和安全。
实时文件监控
服务运行时自动监控文档文件的变化,并实时更新索引,确保搜索结果始终是最新的。
多接口支持
提供HTTP API和命令行两种访问方式,方便集成到各种开发工具和工作流中。
AI助手友好
专门为AI编程助手优化,提供简洁的API和适合提示工程的输出格式。
安全特性
内置多种安全机制,包括认证令牌、IP白名单、速率限制和TLS支持,保护文档访问安全。
MCP协议支持
支持Model Context Protocol(MCP),可以与支持MCP的AI开发工具(如Cursor、Claude Desktop等)无缝集成。
优势
完全本地运行,数据不会离开你的机器,保护隐私和安全
轻量级设计,资源占用少,启动快速
支持实时文件监控,索引自动更新
提供多种安全选项,适合企业环境使用
与主流AI开发工具兼容性好
开源项目,可以自定义和扩展功能
局限性
仅支持文本和Markdown格式文档,不支持PDF、Word等二进制格式
需要手动配置和启动服务,不适合完全不懂命令行的用户
索引大型项目可能需要一些时间和磁盘空间
高级安全功能需要额外配置
如何使用
安装Docdex
通过npm全局安装Docdex,或者使用npx临时运行。确保你的系统已安装Node.js 18或更高版本。
创建文档索引
在你的项目目录中运行索引命令,Docdex会自动扫描所有文档文件并创建本地索引。
启动搜索服务
启动HTTP服务,这样你就可以通过API搜索文档了。默认监听本地端口46137。
搜索文档
现在你可以通过HTTP API或命令行搜索文档了。
使用案例
为新团队成员提供项目文档搜索
当新成员加入项目时,他们可以通过Docdex快速搜索项目文档,了解代码结构、API设计和开发规范,而不需要手动浏览大量文件。
AI编程助手集成
将Docdex集成到Cursor或Claude Desktop等AI编程工具中,当AI助手需要了解项目文档时,可以自动搜索相关文档作为上下文。
代码审查前文档检查
在提交代码审查前,开发者可以搜索相关文档,确保代码实现符合项目文档中的规范和最佳实践。
常见问题
Docdex支持哪些文档格式?
Docdex主要支持文本格式的文档,包括:.md, .markdown, .mdx, .txt 文件。不支持PDF、Word、Excel等二进制格式。
索引会占用多少磁盘空间?
索引文件通常比原始文档小很多,具体大小取决于文档数量和内容。一般来说,索引大小大约是原始文档总大小的10-20%。
如何保护敏感文档不被索引?
Docdex提供了多种排除机制:
1. 使用--exclude-dir参数排除特定目录
2. 使用--exclude-prefix参数排除特定路径前缀
3. 默认已排除常见敏感目录如.git、node_modules等
Docdex可以在团队中共享使用吗?
可以,但需要注意:
1. 每个团队成员需要单独运行索引命令
2. 或者可以将索引目录共享,但需要确保文件权限正确
3. 建议将.docdex/目录添加到.gitignore中,避免索引文件被提交到版本控制
如何与我的IDE或编辑器集成?
有几种集成方式:
1. 通过HTTP API集成到编辑器插件中
2. 使用MCP模式与支持MCP的编辑器(如Cursor)集成
3. 创建自定义的编辑器命令调用Docdex CLI
Docdex支持中文搜索吗?
是的,Docdex支持中文搜索。它使用基于tantivy的全文搜索引擎,支持多种语言的文本分析。
相关资源
GitHub仓库
Docdex的源代码和最新版本
npm包页面
Docdex的npm包信息和安装说明
Model Context Protocol文档
MCP协议官方文档,了解如何与AI工具集成
问题反馈和讨论
报告问题、提出功能请求或参与讨论
安装
复制以下命令到你的Client进行配置
{
"mcpServers": {
"docdex": {
"command": "docdexd",
"args": ["mcp", "--repo", ".", "--log", "warn", "--max-results", "8"],
"env": {}
}
}
}注意:您的密钥属于敏感信息,请勿与任何人分享。
🚀 Docdex
Docdex 是一款轻量级的本地文档索引器和搜索守护程序。它按项目运行,对 Markdown 或文本格式的文档进行本地索引存储,可通过 HTTP 或 CLI 为任何编码辅助工具提供排名前 k 的文档片段,无需外部服务或上传数据。
🚀 快速开始
# 安装(npm)
npm i -g docdex
# 或临时使用
npx docdex --version
# 为仓库或工作区创建完整索引
docdexd index --repo /path/to/repo
# 启动 HTTP API 并实时监控文件变化(安全模式需要身份验证令牌)
docdexd serve --repo /path/to/repo --host 127.0.0.1 --port 46137 --log info --auth-token <token>
# 若为本地使用且无需令牌,可添加 --secure-mode=false
# docdexd serve --repo /path/to/repo --host 127.0.0.1 --port 46137 --log info --secure-mode=false
# 通过 CLI 进行临时搜索(JSON 格式输出)
docdexd query --repo /path/to/repo --query "otp flow" --limit 5
✨ 主要特性
- 按仓库本地索引:对 Markdown 或文本文件进行本地索引(基于 tantivy,无需网络调用)。
- 统一索引接口:HTTP API(
/search、/snippet、/healthz)和 CLI(query、ingest、self-check)共享同一索引。 - 实时文件监控:服务运行时实时监控文件变化,实现增量更新。
- 安全配置选项:支持 TLS(手动配置证书或使用 Certbot),默认需要身份验证令牌(可通过
--secure-mode=false禁用),默认仅允许本地回环访问,具备默认的速率限制、请求大小限制、严格的状态目录权限设置、审计日志,支持 chroot/权限降级/网络隔离(Unix)。 - 适配编码辅助工具:输出格式适用于编码辅助工具,提供摘要、片段和文档元数据。
- 对 AI 友好:
GET /ai-help返回一个 JSON 指南,包含端点、CLI 命令、限制和最佳实践,方便智能代理使用。
📦 安装指南
- 环境要求:需要 Node.js >= 18。
- 安装命令:
npm i -g docdex(或运行npx docdex --version进行验证)。 - 命令说明:
docdex(别名docdexd)会从匹配的 GitHub 版本中下载适合你平台的二进制文件。 - 支持平台:macOS(arm64、x64)、Linux glibc(arm64、x64)、Linux musl(arm64、x64)、Windows(x64、arm64);安装程序会获取匹配平台的发布资产。
- 自定义发布:如果你从分叉仓库发布,安装前设置
DOCDEX_DOWNLOAD_REPO=<owner/repo>,以便下载器获取你的发布资产。 - 分发方式:二进制文件存储在 GitHub Releases 中(npm 包较小);安装后会根据 npm 版本获取
docdexd-<platform>.tar.gz文件。 - 发布方式:使用 npm Trusted Publishing(OIDC),无需 NPM 令牌;具体配置见
.github/workflows/release.yml。
💻 使用示例
基础用法
# 为仓库创建索引
docdexd index --repo /path/to/repo
# 启动 HTTP API 服务
docdexd serve --repo /path/to/repo --host 127.0.0.1 --port 46137 --log info --auth-token <token>
# 通过 CLI 进行搜索
docdexd query --repo /path/to/repo --query "otp flow" --limit 5
高级用法
# 使用 Certbot 配置 TLS
docdexd serve --repo <repo> --host 0.0.0.0 --port 46137 --certbot-domain docs.example.com
# 禁用安全模式(本地开发使用)
docdexd serve --repo /path/to/repo --host 127.0.0.1 --port 46137 --log info --secure-mode=false
📚 详细文档
功能概述
Docdex 对仓库内的 Markdown 或文本文件进行索引并本地存储(默认索引存储在 <repo>/.docdex/index 目录下,基于 tantivy)。通过 HTTP(/search、/snippet、/healthz)和 CLI(query、ingest、self-check)提供统一的索引访问接口,方便自动化和交互式使用。服务运行时会实时监控文件变化,实现增量更新。同时,具备一系列安全配置选项,保障服务的安全性。
索引规则
- 支持的文件类型:
.md、.markdown、.mdx、.txt(可通过扩展DEFAULT_EXTENSIONS添加更多类型)。 - 跳过的目录:涵盖多种生态系统中的 VCS、构建、缓存和供应商文件夹(如
.git、.hg、.svn、node_modules等;完整列表见DEFAULT_EXCLUDED_DIR_NAMES)。 - 跳过的相对前缀:
logs/、.docdex/、.docdex/logs/等。 - 片段大小:摘要约 360 个字符(最多 4 段);片段约 420 个字符。
HTTP API
GET /healthz:返回ok,此端点无需身份验证和速率限制(IP 白名单仍然适用)。GET /search?q=<text>&limit=<n>&snippets=<bool>&max_tokens=<u64>:返回包含文档 ID、相对路径、摘要、片段、分数和令牌估计的搜索结果。设置snippets=false可仅返回摘要;设置max_tokens可过滤超出预算的结果。GET /snippet/:doc_id?window=<lines>&q=<query>&text_only=<bool>&max_tokens=<u64>:返回包含可选高亮片段的文档信息。当查询高亮为空时,返回预览(默认窗口为 40 行)。设置text_only=true可仅返回文本片段;设置max_tokens可过滤超出预算的片段。GET /ai-help:返回一个 JSON 快速指南,包含端点、CLI 命令、限制和最佳实践,供智能代理使用。GET /metrics:返回 Prometheus 格式的速率限制、身份验证和错误指标计数器。
CLI 命令
serve --repo <path> [--host 127.0.0.1] [--port 46137] [--log info]:启动 HTTP API 服务并实时监控文件变化。index --repo <path>:重建整个索引。ingest --repo <path> --file docs/new.md:对单个文件进行重新索引。query --repo <path> --query "<text>" [--limit 8]:执行搜索并以 JSON 格式输出结果。self-check --repo <path> --terms "foo,bar" [--limit 5]:在启用访问前扫描索引中的敏感词汇。若发现敏感词汇,退出码不为 0,并报告示例结果和是否还有其他匹配项。默认包含内置的令牌/密码模式,可通过--include-default-patterns=false禁用,仅使用提供的词汇进行扫描。
配置选项
| 属性 | 详情 |
|---|---|
--repo <path> |
要索引的工作区根目录(默认值:.) |
--state-dir <path> / DOCDEX_STATE_DIR |
覆盖索引存储路径(相对路径相对于 repo 解析) |
--exclude-prefix a,b,c / DOCDEX_EXCLUDE_PREFIXES |
额外要跳过的相对前缀 |
--exclude-dir a,b,c / DOCDEX_EXCLUDE_DIRS |
额外要跳过的目录名称 |
--auth-token <token> / DOCDEX_AUTH_TOKEN |
安全模式下需要的令牌(默认开启),仅在 --secure-mode=false 时可省略 |
| `--secure-mode <true | false>/DOCDEX_SECURE_MODE` |
--allow-ip a,b,c / DOCDEX_ALLOW_IPS |
可选的逗号分隔的 IP 地址或 CIDR 范围,允许访问 HTTP API(默认:安全模式下仅允许本地回环;安全模式禁用时允许所有访问) |
--tls-cert / DOCDEX_TLS_CERT 和 --tls-key / DOCDEX_TLS_KEY |
使用提供的证书和密钥启用 HTTPS 服务。启用 TLS 后,非本地回环绑定必须使用 HTTPS,除非明确禁用 |
--certbot-domain <domain> / DOCDEX_CERTBOT_DOMAIN |
将 TLS 指向 /etc/letsencrypt/live/<domain>/{fullchain.pem,privkey.pem}(Certbot)。与手动配置的 --tls-* 选项冲突 |
--certbot-live-dir <path> / DOCDEX_CERTBOT_LIVE_DIR |
使用包含 fullchain.pem 和 privkey.pem 的特定 Certbot 活动目录 |
| `--require-tls <true | false>/DOCDEX_REQUIRE_TLS` |
--insecure / DOCDEX_INSECURE_HTTP=true |
即使启用 TLS,也允许非本地回环绑定使用纯 HTTP(仅在可信代理后使用) |
--max-limit <n> / DOCDEX_MAX_LIMIT |
限制 HTTP 请求中的 limit 参数最大值(默认:8) |
--max-query-bytes <n> / DOCDEX_MAX_QUERY_BYTES |
拒绝查询字符串长度超过 n 字节的请求(默认:4096) |
--max-request-bytes <n> / DOCDEX_MAX_REQUEST_BYTES |
拒绝 Content-Length 或大小提示超过 n 字节的请求(默认:16384) |
--rate-limit-per-min <n> / DOCDEX_RATE_LIMIT_PER_MIN |
每个 IP 每分钟的请求预算(安全模式下未设置或为 0 时默认 60;安全模式禁用时,0 表示禁用速率限制) |
--rate-limit-burst <n> / DOCDEX_RATE_LIMIT_BURST |
速率限制器的可选突发容量(默认值为每分钟限制,0 时取该值) |
--audit-log-path <path> / DOCDEX_AUDIT_LOG_PATH |
将审计日志以 JSONL 格式写入指定路径(默认:<state-dir>/audit.log) |
--audit-max-bytes <n> / DOCDEX_AUDIT_MAX_BYTES |
审计日志达到指定字节数后进行轮转(默认:5000000) |
--audit-max-files <n> / DOCDEX_AUDIT_MAX_FILES |
最多保留的轮转审计日志文件数量(默认:5) |
--audit-disable / DOCDEX_AUDIT_DISABLE=true:完全禁用审计日志 |
|
--strip-snippet-html / DOCDEX_STRIP_SNIPPET_HTML=true:在响应中省略 snippet.html,强制仅返回文本片段(默认情况下,HTML 会进行清理) |
|
--disable-snippet-text / DOCDEX_DISABLE_SNIPPET_TEXT=true:在响应中完全省略片段文本和 HTML(仅返回文档元数据) |
|
| `--access-log <true | false>/DOCDEX_ACCESS_LOG`:输出包含查询值脱敏的最小结构化访问日志(默认:true) |
--run-as-uid / DOCDEX_RUN_AS_UID,--run-as-gid / DOCDEX_RUN_AS_GID:(Unix)在启动准备完成后将权限降级到指定的 UID/GID |
|
--chroot <path> / DOCDEX_CHROOT:(Unix)在服务启动前切换到指定的根目录;仓库和状态路径必须存在于该沙箱内 |
|
--unshare-net / DOCDEX_UNSHARE_NET=true:(仅 Linux)在服务启动前隔离网络命名空间(需要 CAP_SYS_ADMIN/root 权限);在其他平台上无操作 |
|
--log <level>:在 serve 命令中设置日志级别(默认:info),或使用 RUST_LOG=docdexd=debug 风格的过滤器 |
版本管理
- 语义化版本:使用带标签的版本(
vX.Y.Z)。Rust 包和 npm 包使用相同的版本号。 - 发布流程:通过 Conventional Commits 和 Release Please 生成发布说明。它会打开发布 PR,更新
Cargo.toml和npm/package.json,更新变更日志,并在合并时创建标签和发布版本。 - 集成建议:集成时固定到已发布的版本(如在脚本或 Dockerfile 中),确保升级操作明确且可回滚。
- 从源代码构建:版本号来自本仓库的
Cargo.toml;npm 包装器使用匹配的版本号下载二进制文件。
路径和默认值
- 状态/索引目录:
<repo>/.docdex/index(若该目录不存在,但旧的<repo>/.gpt-creator/docdex/index存在,Docdex 会重用该索引并发出警告)。该目录默认以0700权限创建。 - HTTP API 默认地址:服务启动时默认监听
127.0.0.1:46137。 - 数据和日志存储:Docdex 的数据和日志存储在仓库内部,无需外部服务。
帮助和命令发现
- 列出所有命令和标志:
docdexd --help。 - 查看所有子命令的帮助信息:
docdexd help-all。 - 查看
serve命令的选项:docdexd serve --help。 - 查看索引选项:
docdexd index --help。 - 查看临时查询选项:
docdexd query --help。 - 查看自我检查扫描选项:
docdexd self-check --help。 - 获取智能代理帮助信息:
curl http://127.0.0.1:46137/ai-help(若设置了--auth-token,需包含Authorization: Bearer <token>),返回包含端点、限制和最佳实践的 JSON 列表。 - MCP 帮助和注册:
docdexd mcp --help列出 MCP 标志;使用docdexd mcp --repo <repo> --log warn向客户端注册。示例 Codex 配置片段:
{
"mcpServers": {
"docdex": {
"command": "docdexd",
"args": ["mcp", "--repo", ".", "--log", "warn", "--max-results", "8"],
"env": {}
}
}
}
- MCP 快速添加命令(适用于流行的智能代理):
- Docdex 助手:
docdex mcp-add --repo /path/to/repo --log warn --max-results 8自动检测支持的智能代理;添加--all尝试所有已知客户端并打印仅支持 UI 操作的客户端的手动步骤,或添加--remove进行卸载。 - Codex CLI:
codex mcp add docdex -- docdexd mcp --repo /path/to/repo --log warn --max-results 8。 - 通用 JSON 配置(适用于 Cursor、Continue、Windsurf、Cline、Claude Desktop 开发工具):将上述
mcpServers.docdex块添加到 MCP 配置文件中(路径因客户端而异;大多数客户端接受所示的command/args模式)。 - 手动/仅支持标准输入输出的客户端:手动启动
docdexd mcp --repo /path/to/repo --log warn --max-results 8,并将客户端指向该命令或二进制文件。
- Docdex 助手:
- 暴露的工具:
docdex_search:参数{ "query": "<text>", "limit": <int optional>, "project_root": "<path optional>" }。返回{ "results": [...], "repo_root": "...", "state_dir": "...", "limit": <int>, "project_root": "...", "meta": {...} }。docdex_index:参数{ "paths": ["relative/or/absolute"], "project_root": "<path optional>" }。空的paths表示重新索引所有文件;否则,仅索引列出的文件。docdex_files:参数{ "limit": <int optional, default 200, max 1000>, "offset": <int optional, default 0>, "project_root": "<path optional>" }。返回{ "results": [{ "doc_id", "rel_path", "summary", "token_estimate" }], "total", "limit", "offset", "repo_root", "project_root" }。docdex_open:参数{ "path": "<relative file>", "start_line": <int optional>, "end_line": <int optional>, "project_root": "<path optional>" }。返回{ "path", "start_line", "end_line", "total_lines", "content", "repo_root", "project_root" }(拒绝仓库外的路径和大文件)。docdex_stats:参数{ "project_root": "<path optional>" }。返回{ "num_docs", "state_dir", "index_size_bytes", "segments", "avg_bytes_per_doc", "generated_at_epoch_ms", "last_updated_epoch_ms", "repo_root", "project_root" }。
- 示例调用:
- 初始化:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}} - 带工作区根目录的初始化:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"workspace_root":"/path/to/repo"}}(必须与服务器仓库匹配;为后续调用设置默认的项目根目录) - 列出工具:
{"jsonrpc":"2.0","id":2,"method":"tools/list"} - 重新索引:
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"docdex_index","arguments":{"paths":[]}}} - 搜索:
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"docdex_search","arguments":{"query":"payment auth flow","limit":3,"project_root":"/repo"}}} - 列出文件:
{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"docdex_files","arguments":{"limit":10,"offset":0}}} - 打开文件:
{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"docdex_open","arguments":{"path":"docs/readme.md","start_line":1,"end_line":20}}} - 统计信息:
{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"docdex_stats","arguments":{}}}
- 初始化:
- 错误处理:无效的 JSON → 代码 -32700;不支持或缺失
jsonrpc→ -32600;未知的工具或方法 → -32601;无效的参数(空查询、错误的参数、项目根目录不匹配) → -32602;内部错误在error.data中包含reason字符串。 - 智能代理使用指南:编码前使用简洁的查询调用
docdex_search;仅获取少量结果;若结果看起来过时,调用docdex_index;若你的技术栈不支持 MCP,继续使用 HTTP 或 CLI 接口。 - 帮助信息:
docdexd mcp --help显示 MCP 标志和默认值;docdexd help-all包含一个 MCP 部分,列出工具和使用方法。
故障排除
- 索引过时:重新运行
docdexd index --repo <path>。 - 端口冲突:更改
--host/--port参数。
安全考虑
- 绑定地址:默认绑定
127.0.0.1,除非你在可信的反向代理或防火墙后面,否则不要更改。避免在不可信的网络上使用--host 0.0.0.0。 - TLS 配置:默认情况下,非本地回环绑定需要 TLS。仅当流量已在可信代理处终止时,可通过
--require-tls=false或--insecure禁用。 - 外部暴露:若要将服务暴露到外部网络,建议在前面放置一个反向代理,终止 TLS,并要求身份验证(基本认证、OAuth 或 mTLS)以及 IP 或 VPN 白名单。示例(nginx):
server {
listen 443 ssl;
server_name docdex.example.com;
ssl_certificate /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;
auth_basic "Protected";
auth_basic_user_file /etc/nginx/.htpasswd; # 或使用 OAuth/mTLS 替代
allow 10.0.0.0/8;
allow 192.168.0.0/16;
deny all;
location / {
proxy_pass http://127.0.0.1:46137;
proxy_set_header Host $host;
}
}
- 语料库清理:建议使用经过筛选的暂存目录,或在索引前使用
--exclude-dir/--exclude-prefix排除敏感或私有路径。服务会监控repo目录下的文件变化并进行增量更新。 - 日志管理:若片段或路径包含敏感信息,避免在生产环境中使用详细日志。反向代理的访问日志也可能记录查询词和路径。
- 最小权限原则:以低权限用户或容器运行 Docdex,并确保状态目录具有受限的权限。
- 发布前验证:运行
docdexd query检查敏感关键词,确保没有匹配结果。若需要,将索引存储在加密磁盘上。 - 可选的强化措施:在 HTTP API 或代理上要求身份验证令牌;非本地主机时强制使用 TLS(默认),仅在可信代理后通过
--require-tls=false/--insecure明确禁用;启用速率限制(--rate-limit-per-min)并限制limit/请求大小(--max-limit、--max-query-bytes、--max-request-bytes);若嵌入片段,对 HTML 进行转义或清理,或通过--disable-snippet-text完全禁用片段;状态目录默认以0700权限创建,建议由非特权用户管理,可选择使用--run-as-uid/--run-as-gid、--chroot或容器化;保持访问日志最小化/脱敏(--access-log),在暴露服务前运行self-check检查敏感词汇;为了静态数据的保密性,将状态目录放置在加密存储上或使用主机级磁盘加密。
与 LLM 工具集成
Docdex 与工具无关,以下是与智能代理或代码生成工具集成的步骤:
- 启动服务:每个仓库运行一次
docdexd index --repo <repo>,然后运行docdexd serve --repo <repo> --host 127.0.0.1 --port 46137 --log warn(或直接使用 CLI 而不启动服务)。 - 环境配置:通过环境变量配置
DOCDEX_STATE_DIR(索引位置)、DOCDEX_EXCLUDE_PREFIXES、DOCDEX_EXCLUDE_DIRS、RUST_LOG=docdexd=debug(可选的详细日志)。 - HTTP 查询:
GET /search?q=<text>&limit=<n>返回{"hits":[{"doc_id","rel_path","score","summary","snippet","token_estimate"}...]};GET /snippet/:doc_id获取聚焦的片段和文档元数据。 - CLI 查询:
docdexd query --repo <repo> --query "<text>" --limit 8(JSON 输出到标准输出)。 - 健康检查:在发出搜索请求前,
GET /healthz应返回ok。 - 将片段注入提示:
"You are building features for this repo. Use the following documentation snippets for context. If a snippet cites a path, keep that path in your response. Snippets:\n<insert docdex snippets here>\nQuestion: <your question>"
MCP(可选的适用于支持 MCP 的客户端的标准输入输出服务器)
Docdex 可以作为 MCP 工具提供者通过标准输入输出运行,但不会替代 HTTP 守护进程,你可以根据智能代理或编辑器的需求选择合适的方式。若你的 MCP 客户端支持资源模板,Docdex 会宣传一个 docdex_file 模板(docdex://{path}),该模板委托给 docdex_open。
- 运行命令:
docdexd mcp --repo /path/to/repo --log warn --max-results 8(别名:--mcp-max-results 8)。 - 环境变量覆盖:
DOCDEX_MCP_MAX_RESULTS限制docdex_search的结果数量(最小值为 1)。 - 打包方式:MCP 服务器集成在主
docdexd二进制文件中(通过docdexd mcp或docdex mcp从 npm 二进制文件调用),无需单独下载docdex-mcp。 - 向 MCP 客户端注册:添加一个名为
docdex的服务器,运行docdexd mcp --repo <repo> --log warn。示例 Codex 配置片段:
{
"mcpServers": {
"docdex": {
"command": "docdexd",
"args": ["mcp", "--repo", ".", "--log", "warn", "--max-results", "8"],
"env": {}
}
}
}
- MCP 快速添加命令(适用于流行的智能代理):
- Docdex 助手:
docdex mcp-add --repo /path/to/repo --log warn --max-results 8自动检测支持的智能代理;添加--all尝试所有已知客户端并打印仅支持 UI 操作的客户端的手动步骤,或添加--remove进行卸载。 - Codex CLI:
codex mcp add docdex -- docdexd mcp --repo /path/to/repo --log warn --max-results 8。 - 通用 JSON 配置(适用于 Cursor、Continue、Windsurf、Cline、Claude Desktop 开发工具):将上述
mcpServers.docdex块添加到 MCP 配置文件中(路径因客户端而异;大多数客户端接受所示的command/args模式)。 - 手动/仅支持标准输入输出的客户端:手动启动
docdexd mcp --repo /path/to/repo --log warn --max-results 8,并将客户端指向该命令或二进制文件。
- Docdex 助手:
- 暴露的工具:
docdex_search:参数{ "query": "<text>", "limit": <int optional>, "project_root": "<path optional>" }。返回{ "results": [...], "repo_root": "...", "state_dir": "...", "limit": <int>, "project_root": "...", "meta": {...} }。docdex_index:参数{ "paths": ["relative/or/absolute"], "project_root": "<path optional>" }。空的paths表示重新索引所有文件;否则,仅索引列出的文件。docdex_files:参数{ "limit": <int optional, default 200, max 1000>, "offset": <int optional, default 0>, "project_root": "<path optional>" }。返回{ "results": [{ "doc_id", "rel_path", "summary", "token_estimate" }], "total", "limit", "offset", "repo_root", "project_root" }。docdex_open:参数{ "path": "<relative file>", "start_line": <int optional>, "end_line": <int optional>, "project_root": "<path optional>" }。返回{ "path", "start_line", "end_line", "total_lines", "content", "repo_root", "project_root" }(拒绝仓库外的路径和大文件)。docdex_stats:参数{ "project_root": "<path optional>" }。返回{ "num_docs", "state_dir", "index_size_bytes", "segments", "avg_bytes_per_doc", "generated_at_epoch_ms", "last_updated_epoch_ms", "repo_root", "project_root" }。
- 示例调用:
- 初始化:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}} - 带工作区根目录的初始化:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"workspace_root":"/path/to/repo"}}(必须与服务器仓库匹配;为后续调用设置默认的项目根目录) - 列出工具:
{"jsonrpc":"2.0","id":2,"method":"tools/list"} - 重新索引:
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"docdex_index","arguments":{"paths":[]}}} - 搜索:
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"docdex_search","arguments":{"query":"payment auth flow","limit":3,"project_root":"/repo"}}} - 列出文件:
{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"docdex_files","arguments":{"limit":10,"offset":0}}} - 打开文件:
{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"docdex_open","arguments":{"path":"docs/readme.md","start_line":1,"end_line":20}}} - 统计信息:
{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"docdex_stats","arguments":{}}}
- 初始化:
- 错误处理:无效的 JSON → 代码 -32700;不支持或缺失
jsonrpc→ -32600;未知的工具或方法 → -32601;无效的参数(空查询、错误的参数、项目根目录不匹配) → -32602;内部错误在error.data中包含reason字符串。 - 智能代理使用指南:编码前使用简洁的查询调用
docdex_search;仅获取少量结果;若结果看起来过时,调用docdex_index;若你的技术栈不支持 MCP,继续使用 HTTP 或 CLI 接口。 - 帮助信息:
docdexd mcp --help显示 MCP 标志和默认值;docdexd help-all包含一个 MCP 部分,列出工具和使用方法。
HTTPS 和 Certbot
- TLS 支持:支持 PKCS8、PKCS1/RSA 和 SEC1/EC 私钥(与 Certbot 输出兼容)。
- 手动配置证书:
docdexd serve --repo <repo> --tls-cert /path/fullchain.pem --tls-key /path/privkey.pem。 - 使用 Certbot 助手:
docdexd serve --repo <repo> --host 0.0.0.0 --port 46137 --certbot-domain docs.example.com(使用/etc/letsencrypt/live/docs.example.com/{fullchain.pem,privkey.pem}),或通过--certbot-live-dir /custom/live/dir指定自定义活动目录。 - 证书更新:使用 Certbot 时,设置部署钩子,在证书更新后重启或重新加载 Docdex(例如,
certbot renew --deploy-hook "systemctl restart docdexd.service"或向进程管理器发送 -HUP 信号)。 - 端口绑定:若直接绑定到 443 端口,需要相应的权限;否则,将 Docdex 绑定到
127.0.0.1,由反向代理终止 TLS。
替代品
A
Acemcp
Acemcp是一个代码库索引和语义搜索的MCP服务器,支持自动增量索引、多编码文件处理、.gitignore集成和Web管理界面,帮助开发者快速搜索和理解代码上下文。
Python
7.6K
5分
B
Blueprint MCP
Blueprint MCP是一个基于Arcade生态的图表生成工具,利用Nano Banana Pro等技术,通过分析代码库和系统架构自动生成架构图、流程图等可视化图表,帮助开发者理解复杂系统。
Python
6.1K
4分
M
MCP Agent Mail
MCP Agent Mail是一个为AI编程代理设计的邮件式协调层,提供身份管理、消息收发、文件预留和搜索功能,支持多代理异步协作和冲突避免。
Python
6.7K
5分
M
MCP
微软官方MCP服务器,为AI助手提供最新微软技术文档的搜索和获取功能
11.6K
5分
A
Aderyn
Aderyn是一个开源的Solidity智能合约静态分析工具,由Rust编写,帮助开发者和安全研究人员发现Solidity代码中的漏洞。它支持Foundry和Hardhat项目,可生成多种格式报告,并提供VSCode扩展。
Rust
9.5K
5分
D
Devtools Debugger MCP
Node.js调试器MCP服务器,提供基于Chrome DevTools协议的完整调试功能,包括断点设置、单步执行、变量检查和表达式评估等
TypeScript
9.9K
4分
S
Scrapling
Scrapling是一个自适应网页抓取库,能自动学习网站变化并重新定位元素,支持多种抓取方式和AI集成,提供高性能解析和开发者友好体验。
Python
11.4K
5分
M
Mcpjungle
MCPJungle是一个自托管的MCP网关,用于集中管理和代理多个MCP服务器,为AI代理提供统一的工具访问接口。
Go
0
4.5分

Duckduckgo MCP Server
已认证
DuckDuckGo搜索MCP服务器,为Claude等LLM提供网页搜索和内容抓取服务
Python
66.2K
4.3分

Firecrawl MCP Server
Firecrawl MCP Server是一个集成Firecrawl网页抓取能力的模型上下文协议服务器,提供丰富的网页抓取、搜索和内容提取功能。
TypeScript
114.2K
5分

Figma Context MCP
Framelink Figma MCP Server是一个为AI编程工具(如Cursor)提供Figma设计数据访问的服务器,通过简化Figma API响应,帮助AI更准确地实现设计到代码的一键转换。
TypeScript
62.3K
4.5分

Edgeone Pages MCP Server
EdgeOne Pages MCP是一个通过MCP协议快速部署HTML内容到EdgeOne Pages并获取公开URL的服务
TypeScript
27.6K
4.8分

Exa Web Search
已认证
Exa MCP Server是一个为AI助手(如Claude)提供网络搜索功能的服务器,通过Exa AI搜索API实现实时、安全的网络信息获取。
TypeScript
44.3K
5分

Minimax MCP Server
MiniMax Model Context Protocol (MCP) 是一个官方服务器,支持与强大的文本转语音、视频/图像生成API交互,适用于多种客户端工具如Claude Desktop、Cursor等。
Python
51.3K
4.8分

Context7
Context7 MCP是一个为AI编程助手提供实时、版本特定文档和代码示例的服务,通过Model Context Protocol直接集成到提示中,解决LLM使用过时信息的问题。
TypeScript
83.0K
4.7分

Baidu Map
已认证
百度地图MCP Server是国内首个兼容MCP协议的地图服务,提供地理编码、路线规划等10个标准化API接口,支持Python和Typescript快速接入,赋能智能体实现地图相关功能。
Python
40.7K
4.5分