锈蚀代码mcp
用于搜索和分析Rust代码库的MCP服务器。将混合BM25+矢量搜索与HIR驱动的工作空间相结合 超图 基于rustanalyzer构建,提供45多种工具用于符号导航、调用图遍历、结构审计和语义邻域查询。
链接: 网站 · Discord 的中文翻译是“不和谐”或“纷争”。 --来分享一下你是如何使用它的;我们想了解人们的工作流程。
建筑
看 .docs/ARCHITECTURE.md 对于每个模块的细分, TOOLS.md 获取完整的MCP工具参考,以及 THEORY.md 了解每个诊断映射的原理。
特性
- 混合搜索 -BM25关键词搜索+语义向量相似度(RRF融合)
- 符号导航 -锈蚀分析仪-支持
find_definition/find_references/rename_symbol(重命名返回预览;不修改任何文件) - 持久超图 -HIR驱动的工作空间快照(LMDB),具有跨机箱导入、导出、再导出、调用边、属性、签名、静态和
unsafe块 - 调用图遍历 -
who_calls/calls_from/call_graph/callers_in_crate/recursive_callers_count - 结构审计 -死公共项、名称冲突、模块阴影、禁止交叉板条箱边缘、罗伯特·马丁不稳定性/抽象性
- 安全审计 -
unsafe_audit,mut_static_audit,recursion_check,channel_capacity_audit,fn_body_audit(打开包装/恐慌/锁定等待检测) - 文件和API卫生审核 -
missing_docs_audit,derive_audit,pub_use_pub_type_audit,re_export_chain - 语义邻居 -
similar_to_item工作空间范围semantic_overlaps通过缓存嵌入进行集群 - 代码映射 -
build_codemap使用Mermaid+轮廓渲染生成任务条件子图(由符号播种,在超图边上展开) - 复杂性度量 -LOC、圈复杂度、函数计数
- 增量索引 -Merkle树变化检测;每5分钟重新同步一次背景
工具
45+MCP工具按类别分组。完整参数参考 TOOLS.md.
| 类别 | 工具 |
|---|---|
| 查询 | search, get_similar_code, read_file_content |
| 符号分析 | find_definition, find_references, rename_symbol, get_dependencies, get_call_graph, analyze_complexity |
| 索引生命周期 | index_codebase, health_check, clear_cache |
| Hypergraph构建 | build_hypergraph |
| 进口/出口 | get_imports, get_exports, get_reexports, get_declared_reexports |
| 反向查找 | who_imports, who_uses, who_uses_summary |
| 调用图 | who_calls, calls_from, call_graph, callers_in_crate, recursive_callers_count |
| 工作空间结构 | dead_pub_in_crate, dead_pub_report, crate_edges, overlaps, module_tree, workspace_stats |
| 架构规则 | forbidden_dependency_check, crate_dependency_metric |
| 签名和属性 | function_signature, functions_with_filter, enum_variants, item_attributes, items_with_attribute |
| 安全和质量审计 | unsafe_audit, mut_static_audit, recursion_check, channel_capacity_audit, fn_body_audit |
| 文件/API审核 | missing_docs_audit, derive_audit, pub_use_pub_type_audit, re_export_chain |
| 语义 | similar_to_item, semantic_overlaps |
| 代码映射 | build_codemap |
技能
这 skills/ 目录发货26 Claude代码技能 将这些MCP工具组合成现成的审计配方。每种技能都是独立的 SKILL.md 有先决条件、分步提示和相关技能的移交——在Claude Code中调用它们 / 一旦安装。
| 范围 | 技能 | 目的 |
|---|---|---|
| 工作区 | rmc-workspace-overview | Rust工作区的初步审查 |
| 工作区 | rmc-architecture-rules | 执行板条箱边缘规则 |
| 工作区 | rmc-dependency-metric | 罗伯特·马丁的《不稳定性/抽象性》 |
| 工作区 | rmc-imports-exports | 交叉板条箱进出口审核 |
| 工作区 | rmc-type-overlaps | 名称冲突和模块阴影 |
| 工作区 | rmc-semantic-overlaps | 通过嵌入相似度进行重复逻辑检测 |
| 工作区 | rmc-snapshot-diff | 比较两个工作区快照(例如跨分支) |
| 板条箱 | rmc-crate-audit | 对一个板条箱进行端到端审核 |
| 板条箱 | rmc-api-surface | 审核板条箱的公共API |
| 板条箱 | rmc-module-audit | 审核单个模块 |
| 符号 | rmc-find-symbol | 解析符号的限定名 |
| 符号 | rmc-symbol-forensics | 深入了解一个符号(参考文献、调用者、attrs) |
| 符号 | rmc-method-api | 审核类型的方法 |
| 符号 | rmc-trait-audit | 审计一个特征及其含义 |
| 符号 | rmc-enum-variants | 检查枚举的变体 |
| 符号 | rmc-rename-symbol | 预览重命名--精确引用集并重构探测 |
| 符号 | rmc-signature-search | 按签名形状查找fns |
| 质量 | rmc-unsafe-audit | 审计 unsafe 砌块 |
| 质量 | rmc-mut-static-audit | 审核全局可变状态 |
| 质量 | rmc-attribute-audit | 审核属性和文档注释 |
| 质量 | rmc-complexity | 按爆炸半径划分的复杂性热点 |
| 质量 | rmc-test-vs-prod | 测试与生产分割 |
| 质量 | rmc-call-graph | Fn级别调用图 |
| 质量 | rmc-reexport-chain | 追踪 pub use 再出口链 |
| 规划 | rmc-codemap | 任务条件工作空间子图(节点/边/层次) |
| 规划 | rmc-refactor-plan | 利用超图中的证据计划重构 |
安装 通过将目录符号链接(或复制)到您的Claude Code技能文件夹中:
mkdir -p ~/.claude/skills
ln -s "$(pwd)/skills/"rmc-* ~/.claude/skills/然后在Claude Code中键入 /rmc- 发现它们,或 /rmc-workspace-overview 开启新回购之旅。
安装
1.构建二进制文件
git clone https://github.com/molaco/rust-code-mcp.git
cd rust-code-mcp
cargo build --release二进制文件位于 target/release/file-search-mcp.
(可选)将其复制到PATH中的某个位置:
cp target/release/file-search-mcp ~/.local/bin/2.添加到克劳德代码
在Rust项目目录中,创建 .mcp.json:
{
"mcpServers": {
"rust-code-mcp": {
"command": "/absolute/path/to/file-search-mcp"
}
}
}或者在全球范围内添加 ~/.claude.json 因此,它在所有项目中都可用:
{
"mcpServers": {
"rust-code-mcp": {
"command": "/absolute/path/to/file-search-mcp"
}
}
}3.索引你的代码库
一旦Claude Code启动,服务器就会运行。使用 index_codebase 为项目建立索引的工具:
> index my codebase at /absolute/path/to/my-rust-project或者直接使用 directory 将参数设置为项目根目录。索引是增量的——后续运行仅处理更改的文件(通过Merkle树更改检测)。后台同步也会每5分钟自动重新索引一次。
4.开始使用它
所有工具都接受 directory 指向项目根的参数。示例:
- 搜索代码:
search使用类似“解析器中的错误处理”的查询 - 查找定义:
find_definition对于符号名称 - 查找引用:
find_references查看符号的所有用法 - 预览重命名:
rename_symbol返回完整的编辑集,不涉及文件 - 调用图:
get_call_graph或who_calls/calls_from追踪函数关系 - 类似代码:
get_similar_code语义相似度搜索
对于Rust特定的工作空间分析,首先调用 build_hypergraph 一次(在后续调用中重用指纹快照),然后运行审计,如 unsafe_audit, dead_pub_report, overlaps, crate_dependency_metric,或 semantic_overlaps.代码映射工具(build_codemap)生成一个由感兴趣的符号播种的美人鱼可渲染子图。
索引数据存储在 ~/Library/Application Support/dev.rust-code-mcp.search/ (macOS)或 ~/.local/share/search/ (Linux),以项目路径的哈希值为键——它从不写入您的项目目录。持久超图与之共存(在 graph//,在LMDB中)。 clear_cache 随着 include_hypergraph=true 擦拭两者。
无
提供Nix薄片,便于安装:
# Enter dev shell with all dependencies
nix develop github:molaco/rust-code-mcp
# Build the binary
nix build github:molaco/rust-code-mcpdev shell包括夜间Rust和CUDA支持。
GPU加速
嵌入生成使用ONNX Runtime和CUDA支持,在NVIDIA GPU上实现10-15倍的索引速度。
需求
- NVIDIA GPU(Maxwell或更新版本)
- CUDA 12.x+cuDNN 9.x
- 这
ortcrate将ONNX运行时二进制文件下载到~/.cache/ort.pyke.io/
MCP服务器CUDA配置
为了使CUDA在Claude Code(或其他MCP客户端)生成MCP服务器时工作 LD_LIBRARY_PATH 必须包括:
- ORT 缓存 -包含
libonnxruntime_providers_shared.so和libonnxruntime_providers_cuda.so - CUDA图书馆 -
libcudart.so,libcublas.so,libcublasLt.so - cuDNN库 -
libcudnn.so
选项1:使用flake.nix(推荐)
包括 flake.nix 自动生成 .mcp.json 与正确 LD_LIBRARY_PATH:
nix develop
# Generates .mcp.json with dynamically discovered ORT cache path选项2:手动配置
首先,找到ORT缓存路径:
find ~/.cache/ort.pyke.io/dfbin -name "libonnxruntime_providers_shared.so" -printf '%h\n' | head -1
# Example output: /home/user/.cache/ort.pyke.io/dfbin/x86_64-unknown-linux-gnu/8BBB.../onnxruntime/lib然后配置您的MCP客户端(例如。, ~/.claude.json 克劳德代码):
{
"mcpServers": {
"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": "/home/user/.cache/ort.pyke.io/dfbin/x86_64-unknown-linux-gnu//onnxruntime/lib:/usr/local/cuda/lib64:/usr/lib/x86_64-linux-gnu"
}
}
}
}替换:
/path/to/file-search-mcp使用您的二进制路径- `
哈希值来自find` 上面的命令 - CUDA路径与系统的CUDA安装
注: 更新ONNX运行时,ORT缓存哈希值会发生变化。如果CUDA停止工作,请重新运行 find 命令获取新路径。演出
| 模式 | 吞吐量 |
|---|---|
| 仅限CPU | ~50块/秒 |
| GPU(RTX 3090) | ~500块/秒(全流水线) |
| GPU隔离嵌入 | ~8000块/秒 |
堆栈
- 突进 -全文搜索
- 禁食 -本地嵌入(ONNX)
- 兰斯布 -嵌入式矢量存储
- ra_ap语法 -AST解析
- ra_ap_ide -语义分析(转到定义、查找引用、重命名)
- 拉帕希尔 -HIR驱动的超图提取
- 注意 -LMDB支持的持久超图存储
- 雪橇 -用于索引元数据缓存的嵌入式KV
- rmcp -MCP协议
截图
More screenshots
Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5
许可证
麻省理工学院
