Rust文档索引与搜索服务

cratedex是一个为Rust文档提供索引、全文搜索和项目诊断功能的MCP服务器

  • by 0xCarbon
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 0xCarbon/cratedex

使用说明

克拉代克斯

MCP(模型上下文协议)服务器,用于Rust文档索引、全文搜索和项目诊断。

快速开始

  1. 安装:
cargo install cratedex

要稍后升级,请执行以下操作:

cratedex update
  1. 作为后台服务运行(Linux用户服务):
cratedex install-service --linger
  1. 连接您的AI编码工具:
# Claude Code
claude mcp add --scope user --transport http cratedex http://127.0.0.1:3737/mcp

# Codex
codex mcp add cratedex --url http://127.0.0.1:3737/mcp

对于OpenCode,添加一个指向以下内容的HTTP MCP服务器条目:

http://127.0.0.1:3737/mcp

特性

  • 在Rust crate文档(SQLite FTS5)中进行全文搜索
  • 货物元数据和工作空间感知依赖关系解析
  • 构建诊断、过时的依赖关系和安全建议
  • 每个项目的注册都有背景索引
  • 双传输:stdio(每个客户端)或HTTP(共享守护进程)

先决条件

  • 防锈工具链(1.93+)
  • Nightly Rust(用于生成rustdoc JSON)

安装

cargo install cratedex

配置

配置从以下位置加载(按优先级顺序):

  1. 环境变量(CRATEDEX__<SECTION>__<KEY>)
  2. ~/.cratedex/cratedex.toml
  3. cratedex.toml 在当前目录中
  4. 内置默认值

看 cratedex.toml.example 对于所有选项。关键环境变量:

变量 默认值 描述
CRATEDEX__SERVER__TRANSPORT http 传输协议: http 或 stdio
CRATEDEX__SERVER__HOST 127.0.0.1 HTTP绑定地址
CRATEDEX__SERVER__PORT 3737 HTTP绑定端口
CRATEDEX__SERVER__ALLOW_REMOTE false 允许非环回绑定(false 强烈推荐)
CRATEDEX__SERVER__AUTH_TOKEN unset 可选HTTP承载令牌
CRATEDEX__SERVER__MAX_SEARCH_RESULTS 10 每次搜索查询的最大结果数
CRATEDEX__SERVER__MAX_PROJECTS 32 同时注册的最大项目数
CRATEDEX__SERVER__MAX_CONCURRENT_REQUESTS 64 HTTP并发限制
CRATEDEX__SERVER__RATE_LIMIT_PER_SEC 30 HTTP请求速率上限
CRATEDEX__SERVER__MAX_REQUEST_BODY_BYTES 262144 最大HTTP请求正文大小
CRATEDEX__DATABASE__PATH ~/.cratedex/cratedex.db 数据库文件路径

HTTP安全模型

  • 默认情况下,cratedex只允许环回绑定(127.0.0.1 / localhost).
  • 绑定到非环回接口需要通过以下方式明确选择加入 CRATEDEX__SERVER__ALLOW_REMOTE=true (或 install-service --allow-remote).
  • 如果您将服务暴露在localhost之外,请将其放置在强制TLS和身份验证的反向代理后面。
  • 为了获得额外的本地保护(多用户主机),请设置 CRATEDEX__SERVER__AUTH_TOKEN 并发送 Authorization: Bearer <token>.

MCP工具

工具 说明
register_project 注册Rust项目以进行索引和诊断
reindex_project 重新启动现有项目的索引
list_projects 列出所有已注册的项目及其索引状态
get_index_status 获取一个项目的索引状态
list_crates 列出项目工作区中的所有板条箱
get_diagnostics 简洁的诊断摘要
get_build_diagnostics 分页构建诊断
get_outdated_diagnostics 分页过时的依赖关系
get_security_diagnostics 分页安全建议
search_docs 在全局索引中搜索Rust文档
unregister_project 从服务器中删除已注册的项目

MCP资源

URI 描述
cratedex://logs 服务器最近的日志条目(最后500行)

部署模型

stdio--每个客户端进程

每个MCP客户端都会生成自己的 cratedex 过程。配置简单,但并发客户端可能会在共享数据库文件上竞争。最适合单客户端设置。

HTTP--共享守护进程

一个单一的 cratedex 进程通过HTTP为所有客户端提供服务。避免数据库锁争用,并在所有会话中共享文档索引。建议用于多客户端环境。

端点: http://<host>:<port>/mcp (默认值 http://127.0.0.1:3737/mcp)

客户端配置

克劳德代码

claude mcp add --scope user --transport http cratedex http://127.0.0.1:3737/mcp

法典

codex mcp add cratedex --url http://127.0.0.1:3737/mcp

stdio(任何MCP客户端)

配置客户端以直接生成服务器:

{
  "command": "cratedex",
  "args": ["server"],
  "env": {
    "CRATEDEX__SERVER__TRANSPORT": "stdio"
  }
}

高级服务管理

Linux:systemd用户服务

对于持久共享HTTP守护进程,请将cratedex作为systemd用户服务安装:

cratedex install-service

这将服务单元写入 ~/.config/systemd/user/cratedex.service,运行 daemon-reload,并启用+启动服务。该命令是幂等的。

验证:

systemctl --user status cratedex
journalctl --user -u cratedex -f

要删除:

cratedex remove-service

要更新服务二进制文件,请执行以下操作:

cratedex update

对于系统级服务:

sudo cratedex update --system

Linux:systemd系统服务

系统级服务在以下目录下运行共享守护进程 /etc/systemd/system,用平原管理 systemctl.

sudo cratedex install-service --system

验证:

systemctl status cratedex
journalctl -u cratedex -f

要删除:

sudo cratedex remove-service --system

macOS:launchd

cratedex install-service 在中安装LaunchAgent ~/Library/LaunchAgents/. 使用 --system (使用sudo)for /Library/LaunchDaemons/.

Windows:任务计划程序

cratedex install-service 在登录时安装用户级计划任务。 系统级Windows服务不直接实现;将NSSM用于该部署模型。

许可证

根据以下任一方式获得许可

由您选择。

贡献

除非您另有明确说明,否则根据Apache-2.0许可证的定义,您有意提交以包含在作品中的任何贡献都应如上所述获得双重许可,无需任何额外的条款或条件。