返回市场
锈析器

锈析器

作者:pedrozoalencar3 星标更新:2025-06-28

项目介绍

MCP Rust Analyzer

🦀 一个智能的模型上下文协议(MCP)服务器,通过集成 rust-analyzer 提供全面的 Rust 代码分析、重构和导航功能。

Rust License: MIT MCP

✨ 特性

🔍 代码分析

  • 悬停信息:获取详细的类型信息和文档
  • 查找引用:定位项目中符号的所有使用情况
  • 转到实现:导航到特征实现
  • 符号分析:深入研究符号定义及其关系

自动完成与导航

  • 智能补全:根据上下文提供代码补全
  • 签名帮助:函数参数辅助
  • 诊断:实时错误检测和建议

🔧 重构工具

  • 重命名符号:在整个代码库中安全地重命名
  • 提取函数:将代码提取为可复用的函数
  • 组织导入:清理并优化导入语句

📊 项目度量

  • 代码统计:行数、复杂度指标
  • 依赖分析:分析 Cargo.toml 依赖
  • 死代码检测:找到项目中的未使用代码
  • 项目结构:分析模块组织

🎯 智能模板

  • 代码片段:常见模式的预建模板
  • 匹配表达式:自动生成匹配分支
  • 测试函数:快速测试函数模板

🚀 智能操作模式

  • Claude Code CLI:自动直接模式以获得最大兼容性
  • 手动终端:智能守护进程/客户端系统以获得最佳性能
  • TTY 检测:根据上下文自动选择最佳模式

🚀 安装

先决条件

  • Rust 工具链(1.70+)
  • rust-analyzer 组件:rustup component add rust-analyzer

从源码安装

git clone https://github.com/pedrozoalencar/mcp-rust-analyzer.git
cd mcp-r
cargo build --release

# 添加到 PATH(永久)
echo 'export PATH="/path/to/mcp-rust-analyzer/target/release:$PATH"' >> ~/.bashrc
source ~/.bashrc

📋 使用

与 Claude Code CLI 一起使用

  1. 添加 MCP 服务器
claude mcp add rust-analyzer mcp-rust-analyzer
  1. 验证安装
claude mcp list
claude mcp test rust-analyzer
  1. 在任何 Rust 项目中使用
cd your-rust-project/
claude  # 自动检测并分析 Rust 代码!

手动使用(高级)

守护进程模式(推荐用于手动使用)

# 启动当前项目的守护进程
mcp-rust-analyzer --daemon

# 检查守护进程状态
mcp-rust-analyzer --status

# 停止守护进程
mcp-rust-analyzer --stop

# 使用客户端(自动连接到守护进程)
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | mcp-rust-analyzer

直接模式

# 直接 stdin/stdout 模式
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | mcp-rust-analyzer --server

🛠️ 架构

智能模式检测

  • Claude Code CLI:自动使用直接模式以获得最大兼容性
  • 手动终端:使用智能守护进程/客户端系统以获得最佳性能
  • TTY 检测:根据上下文自动选择最佳模式

双操作模式

守护进程/客户端系统(手动使用)

  • 后台守护进程:每个项目的持久 HTTP 服务器
  • 自动端口选择:自动查找可用端口
  • 状态管理:跟踪多个项目的守护进程
  • 自动启动:如果需要,客户端会自动启动守护进程

直接模式(Claude Code CLI)

  • 零配置:开箱即用
  • LSP 集成:完整的 rust-analyzer 功能
  • 快速启动:针对 MCP 协议进行了优化

LSP 集成

  • 后台初始化:非阻塞的 rust-analyzer 启动
  • 智能缓存:复用 LSP 连接以提高性能
  • 错误处理:当 LSP 不可用时优雅回退

📚 可用工具

工具描述
project_structure分析项目模块组织
code_metrics获取代码统计和指标
analyze_dependencies查看依赖图
complete在位置获取代码补全
get_hover获取类型/文档信息
find_references查找所有符号引用
rename安全地重命名符号
signature_help获取函数签名帮助
get_diagnostics获取编译器诊断
analyze_symbol根据名称分析符号
find_implementations查找特征实现
expand_snippet展开代码片段
find_dead_code检测未使用的代码
suggest_improvements获取优化建议

资源

该服务器暴露了这些资源:

  • rust-analyzer://project/structure - 项目结构
  • rust-analyzer://project/diagnostics - 所有诊断
  • rust-analyzer://project/dependencies - 依赖图
  • rust-analyzer://project/symbols - 工作区符号

提示

预配置提示用于常见任务:

  • analyze_code - 综合代码分析
  • refactor_code - 引导式重构
  • explain_error - 错误解释及修复
  • optimize_code - 性能优化

架构

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   Claude Code   │────▶│   MCP Server    │────▶│  rust-analyzer  │
│      (主机)     │◀────│  (本项目)       │◀────│      (LSP)      │
└─────────────────┘     └─────────────────┘     └─────────────────┘
        JSON-RPC              Rust API               LSP 协议

开发

项目结构

src/
├── main.rs           # 入口点
├── server.rs         # MCP 服务器实现
├── analyzer.rs       # rust-analyzer 集成
├── lsp_client.rs     # rust-analyzer 的 LSP 客户端
└── commands/         # 命令处理器
    ├── analysis.rs   # 代码分析命令
    ├── completion.rs # IntelliSense 命令
    ├── metrics.rs    # 度量和结构
    └── refactor.rs   # 重构命令

运行测试

# 运行单元测试
cargo test

# 运行集成测试
cargo test --test '*'

# 测试 MCP 协议合规性
./test_mcp_complete.sh

调试模式

# 使用调试日志运行
RUST_LOG=debug cargo run

# 测试单独命令
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | cargo run

贡献

欢迎贡献!请随时提交拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。

开发指南

  1. 遵循 Rust 命名约定
  2. 为新功能添加测试
  3. 更新文档
  4. 确保所有测试通过
  5. 使用 cargo fmt 格式化代码

许可证

该项目采用 MIT 许可证 - 详情见 LICENSE 文件。

致谢


为 Rust 社区制作 ❤️