Rust文档查询服务

一个实时访问Rust项目依赖文档的服务器,支持查询、搜索和浏览模块及详细文档。

  • by KevinT3Hu
  • Rust
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 KevinT3Hu/rustdoc-mcp-server

使用说明

rustdoc mcp

A. 模型上下文协议(MCP) 服务器,为您的项目依赖关系提供对Rust文档的实时访问。

它允许LLM查询crate文档、搜索项目,并检索结构、函数、特征等的详细文档,所有这些都是通过利用 cargo rustdoc的JSON输出格式。

特性

  • 依赖关系发现:列出当前项目中的所有依赖项。
  • 按需文档:根据需要使用夜间工具链为板条箱生成文档。
  • 搜索:在可用文档中进行模糊搜索。
  • 模块探索:浏览模块中的项目。
  • 详细文档:检索任何项目的完整Markdown文档。

先决条件

  • Rust Nightly工具链:此服务器依赖于来自的实验JSON输出 rustdoc,目前仅在夜间提供。
    rustup toolchain install nightly
    

安装

来源

  1. 克隆存储库:

    git clone https://github.com/KevinT3Hu/rustdoc-mcp.git
    cd rustdoc-mcp
    
  2. 构建项目:

    cargo build --release
    

    二进制文件将在 target/release/rustdoc-mcp.

用法

与Claude Desktop集成

将服务器添加到Claude Desktop配置文件(通常位于 ~/Library/Application Support/Claude/claude_desktop_config.json 在macOS或 %APPDATA%\Claude\claude_desktop_config.json 在Windows上)。

替换 /path/to/rustdoc-mcp 使用构建二进制文件的实际路径。

{
  "mcpServers": {
    "rustdoc": {
      "command": "/path/to/rustdoc-mcp/target/release/rustdoc-mcp",
      "args": [
        "start",
        "--cwd",
        "/path/to/your/rust/project"
      ]
    }
  }
}

注: --cwd 参数是可选的。如果省略,则默认为流程的当前工作目录,但建议指定目标项目路径。

可用工具

当服务器运行时,LLM可以使用以下工具:

  • list_deps:列出当前项目中可用的所有依赖项。
  • list_crate_items:列出特定板条箱的根项目(例如。, std, tokio).
  • search_docs:对与查询匹配的项目执行模糊搜索。
  • get_module:返回特定模块路径中公共项的摘要。
  • get_docs:返回特定项目路径的完整markdown文档(例如。, std::vec::Vec).

工作原理

  1. 服务器检查 Cargo.toml 查找目标项目的依赖关系。
  2. 当要求为板条箱提供文档时,它会运行 cargo +nightly rustdoc 生成JSON文档。
  3. JSON在内存中缓存和索引,以便快速检索。
  4. 针对此索引处理查询以返回Markdown格式的文档。

故障排除

  • 日志:服务器将日志写入 /tmp/rustdoc-mcp/server.log。如果遇到问题,请检查此文件。要获取更详细的日志,请设置 RUST_LOG 启动服务器前的环境变量:
    export RUST_LOG=debug
    
  • 编译错误:由于服务器正在运行 cargo rustdoc,确保您的项目成功编译。

许可证

此项目根据GNU较宽松通用公共许可证v3.0获得许可-请参阅 许可证 文件以获取详细信息。