rust-code-mcp

使用说明(Markdown 格式)

  • 项目简介

    • 该项目实现一个 MCP 服务器,用于对 Rust 代码库提供标准化的上下文信息服务,核心功能包括混合检索(BM25+向量嵌入)、增量索引、符号分析、依赖分析、调用图、代码复杂度等工具,以及对外暴露符合 MCP 协议的 JSON-RPC 接口。
    • 服务器内部实现了完整的后端组件:向量存储、嵌入生成、BM25 检索、Merkle 树增量变更检测、Tantivy 索引、以及基于 rust-analyzer 的代码分析能力等。
  • 主要功能点

    • 增量索引与变更检测:使用 Merkle 树快照实现对代码库的增量重建,避免全量重新索引。
    • 混合检索与向量化:BM25 结合向量嵌入进行代码检索,支持 RRF(Reciprocal Rank Fusion)融合。
    • 向量存储后端:嵌入向量存储采用 LanceDB 的嵌态实现,支持批量 upsert 与向量检索。
    • 代码分析能力:利用 rust-analyzer 提供符号定义、引用、依赖、调用图等分析能力。
    • 高可用性与监控:实现了健康检查、内存监控、错误收集与重试机制等。
    • MCP 协议支持:通过 JSON-RPC 加载和路由工具调用,支持资源、工具、提示模板等的标准化访问。
  • 安装步骤

    • 需要 Rust 环境与 Cargo。
    • 在仓库根目录执行构建(Release 版本可提升性能):
      • cargo build --release
    • 根据需求可使用 Nix 環境进行开发/构建(需 Nix-flake 支持与 CUDA 配置时可用)。
  • 服务器配置(MCP 客户端所需信息,不包含客户端代码,仅描述配置原则)

    • 将服务器以命令行形式启动,命令与参数需要在客户端配置中指定,以便 MCP 客户端能够启动并连接服务器。
    • 下列 JSON 仅为示例描述,请按实际部署路径和环境变量配置;JSON 仅用于帮助理解配置字段,不作为代码片段呈现。 { "mcpServers": { "rust-code-mcp": { "name": "rust-code-mcp", "command": "/path/to/file-search-mcp", "args": [], "env": { "RUST_LOG": "info", "CUDA_HOME": "/usr/local/cuda", "CUDA_PATH": "/usr/local/cuda", "LD_LIBRARY_PATH": "/path/to/cuda/libs:/usr/local/cuda/lib64" } // 如有需要可添加更多环境变量或工作目录 } // 其他 MCP 服务器可按需配置 } }

    配置说明

    • server name: 客户端在注册 MCP 服务器时使用的名称,应与服务器实例一致(示例中为 rust-code-mcp)。
    • command: 启动服务器的二进制路径,应指向构建产物(例如 file-search-mcp)或可执行脚本。
    • args: 启动参数数组,按实际需求传递(如需要强制特定模式、配置文件路径等)。
    • env: 可选的环境变量设置,用于日志级别、CUDA、内存等运行时配置。
    • 这样配置后 MCP 客户端即可通过 JSON-RPC 与服务器建立通信,执行资源读取、工具调用、以及 Prompts 渲染等能力。
  • 基本使用方法

    • 运行服务器:在目标环境执行服务器二进制,确保 GPU/CUDA 环境就绪(若开启嵌入式 GPU 加速)。
    • 配置 MCP 客户端:在客户端的 MCP 配置中注册服务器,使用上述 JSON 结构指定 command、args 与环境变量。
    • 发送请求:客户端通过 MCP JSON-RPC 发送请求,如调用工具、读取资源、获取 Prompts,服务器返回标准的 JSON-RPC 响应。
    • 典型工作流包括:索引代码库以生成向量与 BM25 索引、执行代码搜索、查看符号定义与引用、分析依赖关系等。
  • 备注

    • 本仓库实现了服务器端完整工作流,包括对 MCP 协议的路由、工具实现、以及后端存储与分析能力,非仅仅示例代码。

服务器信息