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 协议的路由、工具实现、以及后端存储与分析能力,非仅仅示例代码。