🚀 Rust MCP 服務器
Rust MCP 服務器是一個全面的模型上下文協議(MCP)服務器,它為基於大語言模型(LLM)輔助的 Rust 開發提供了與 rust-analyzer 的集成。該服務器藉助 rust-analyzer 的語言服務器協議(LSP)能力,使 Claude 等 AI 工具能夠以符合 Rust 語言習慣的方式處理代碼,避免了字符串操作,提供智能的代碼分析和重構功能。

🚀 快速開始
- 構建:執行
cargo build --release
命令。
- 配置:將你的 MCP 客戶端配置為使用
target/release/rustmcp
。
- 使用:通過 AI 助手,使用自然語言提示,例如“生成一個帶有 Debug 和 Clone 派生的 User 結構體”。
✨ 主要特性 - 完整工具套件(19 個工具)
代碼分析(4 個工具)
find_definition
- 導航到符號定義處。
find_references
- 查找符號的所有使用位置。
get_diagnostics
- 獲取編譯器錯誤/警告,並提供修復建議。
workspace_symbols
- 搜索項目中的符號。
代碼生成(4 個工具)
generate_struct
- 創建帶有派生和構造函數的結構體。
generate_enum
- 創建帶有變體的枚舉。
generate_trait_impl
- 生成帶有存根的特徵實現。
generate_tests
- 創建單元或集成測試模板。
代碼重構(5 個工具)
rename_symbol
- 重命名符號,並考慮作用域。
extract_function
- 將代碼塊提取為函數。
inline_function
- 內聯函數調用。
organize_imports
- 對 use
語句進行排序和整理。
format_code
- 應用 rustfmt
格式化代碼。
質量保證(2 個工具)
apply_clippy_suggestions
- 應用 clippy
的自動修復建議。
validate_lifetimes
- 檢查生命週期和借用檢查器問題。
項目管理(2 個工具)
analyze_manifest
- 解析和分析 Cargo.toml
文件。
run_cargo_check
- 執行 cargo check
並解析錯誤信息。
高級特性(4 個工具)
get_type_hierarchy
- 獲取符號的類型層次結構。
suggest_dependencies
- 根據代碼模式推薦依賴項。
create_module
- 創建具有可見性控制的新 Rust 模塊。
move_items
- 在文件之間移動代碼項。
其他高級工具
change_signature
- 安全地修改函數簽名。
📦 安裝指南
前提條件
- Rust 工具鏈(版本 1.70 及以上)。
- 安裝
rust-analyzer
(默認路徑為 ~/.cargo/bin/rust-analyzer
)。
- 一個兼容 MCP 的客戶端(如 Claude、Roo 等)。
安裝步驟
- 克隆本倉庫:
git clone <repository-url>
cd rust-mcp
- 構建服務器:
cargo build --release
- 服務器二進制文件將位於
target/release/rustmcp
。
🔧 配置
環境變量
服務器支持以下環境變量:
RUST_ANALYZER_PATH
- rust-analyzer
二進制文件的路徑(默認值:~/.cargo/bin/rust-analyzer
)。
你可以在運行服務器時設置該變量:
RUST_ANALYZER_PATH=/usr/local/bin/rust-analyzer ./target/release/rustmcp
或者在 MCP 客戶端配置中設置(見以下示例)。
Claude Desktop
將以下內容添加到你的 Claude Desktop MCP 配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"rust-analyzer": {
"command": "/path/to/rust-mcp/target/release/rustmcp",
"args": [],
"env": {
"RUST_ANALYZER_PATH": "/custom/path/to/rust-analyzer"
}
}
}
}
如果 rust-analyzer
位於默認位置(~/.cargo/bin/rust-analyzer
),可以省略 env
部分:
{
"mcpServers": {
"rust-analyzer": {
"command": "/path/to/rust-mcp/target/release/rustmcp",
"args": []
}
}
}
Roo 配置
將以下內容添加到你的 Roo 配置文件中(通常為 ~/.roo/config.json
):
{
"mcp_servers": [
{
"name": "rust-analyzer",
"command": "/path/to/rust-mcp/target/release/rustmcp",
"args": [],
"env": {
"RUST_ANALYZER_PATH": "/custom/path/to/rust-analyzer"
}
}
]
}
對於默認的 rust-analyzer
位置,可以使用空的 env
對象:
{
"mcp_servers": [
{
"name": "rust-analyzer",
"command": "/path/to/rust-mcp/target/release/rustmcp",
"args": [],
"env": {}
}
]
}
其他 MCP 客戶端
對於任何兼容 MCP 的客戶端,將其配置為運行:
/path/to/rust-mcp/target/release/rustmcp
服務器使用標準輸入輸出(stdio)傳輸,並準備好接收 MCP 協議消息。
💻 使用示例
配置完成後,你可以通過 AI 助手使用這些工具。以下是一些示例提示:
代碼分析
"查找此 Rust 項目中 `Config` 結構體的所有引用"
"顯示 `parse_args` 函數的定義"
"檢查 src/main.rs 中的編譯器錯誤"
"在工作區中搜索所有與 'user' 匹配的符號"
代碼生成
"生成一個名為 `User` 的結構體,包含字段:name(String 類型)、age(u32 類型)、email(String 類型),並帶有 Debug 和 Clone 派生"
"創建一個名為 `HttpStatus` 的枚舉,包含變體:Ok、NotFound、ServerError"
"為 `calculate_total` 函數生成單元測試"
"為 User 結構體生成 Display 特徵的實現"
代碼重構
"將代碼庫中所有的 `data` 變量重命名為 `user_input`"
"將此代碼塊提取為一個名為 `validate_input` 的獨立函數"
"內聯第 42 行的 `helper_function` 調用"
"整理 src/lib.rs 中的所有導入語句"
"格式化 src/lib.rs 中的所有代碼"
質量保證
"運行 clippy 並應用所有自動修復,以提高代碼質量"
"檢查 src/auth.rs 中是否存在任何生命週期或借用檢查器問題"
項目管理
"分析 Cargo.toml 文件並顯示依賴信息"
"運行 cargo check 並報告任何編譯錯誤"
高級特性
"顯示 src/main.rs 中第 15 行第 8 列符號的類型層次結構"
"為此工作區中的 HTTP 客戶端功能建議依賴項"
"在 src/auth.rs 中創建一個名為 'auth' 的新公共模塊"
"將 User 結構體和 validate_user 函數從 src/main.rs 移動到 src/user.rs"
"將 process_data 函數的簽名修改為接受引用而不是所有權"
📚 詳細文檔
架構
服務器採用模塊化架構構建:
src/main.rs
- 入口點和服務器初始化。
src/lib.rs
- 模塊聲明。
src/server/
- MCP 服務器實現:
handler.rs
- 使用 rmcp
crate 的工具處理程序和 MCP 服務器邏輯。
parameters.rs
- 所有工具的參數類型定義。
src/analyzer/
- rust-analyzer
LSP 客戶端集成:
client.rs
- LSP 客戶端實現和協議處理。
src/tools/
- 模塊化工具實現:
types.rs
- 工具調度器和定義。
analysis.rs
- 代碼分析工具(如 find_definition
、find_references
等)。
generation.rs
- 代碼生成工具(如 generate_struct
、generate_enum
等)。
refactoring.rs
- 代碼重構工具(如 rename_symbol
、extract_function
等)。
formatting.rs
- 代碼格式化工具。
quality.rs
- 質量保證工具(如 clippy
、生命週期檢查)。
cargo.rs
- 項目管理工具。
navigation.rs
- 導航工具(如 workspace_symbols
)。
advanced.rs
- 高級特性(如類型層次結構、依賴項、模塊)。
開發
開發環境運行
cargo run
測試單個工具
服務器通過 MCP 協議公開所有工具。為了調試,你可以:
- 運行服務器:
cargo run
。
- 通過標準輸入(JSON-RPC 格式)發送 MCP 消息。
- 檢查服務器日誌和響應。
添加新工具
- 在相應的
src/tools/*.rs
文件中創建工具實現函數。
- 將參數結構體添加到
src/server/parameters.rs
中。
- 將工具添加到
src/tools/types.rs
中的 execute_tool
匹配語句中。
- 將工具定義添加到
src/tools/types.rs
中的 get_tools()
函數中。
- 在
src/server/handler.rs
中的 RustMcpServer
中添加相應的 #[tool]
方法。
- 如果需要,在
src/analyzer/client.rs
中添加分析器客戶端方法。
故障排除
rust-analyzer
未找到
確保 rust-analyzer
已安裝且可訪問。服務器將按以下順序查找 rust-analyzer
:
RUST_ANALYZER_PATH
環境變量指定的路徑。
- 默認位置:
~/.cargo/bin/rust-analyzer
。
要使用自定義路徑,請設置環境變量:
export RUST_ANALYZER_PATH=/custom/path/to/rust-analyzer
或者在 MCP 客戶端配置中進行配置(見上述配置部分)。
MCP 連接問題
- 驗證 MCP 客戶端配置中的服務器二進制文件路徑。
- 檢查二進制文件是否具有執行權限:
chmod +x target/release/rustmcp
。
- 確保沒有其他進程使用相同的 MCP 服務器名稱。
LSP 通信錯誤
- 驗證
rust-analyzer
是否可以獨立工作:rust-analyzer --version
。
- 檢查你的 Rust 項目是否有有效的
Cargo.toml
文件。
- 確保調用工具時工作區路徑正確。
🤝 貢獻
- 分叉本倉庫。
- 創建一個功能分支。
- 實現你的更改並編寫測試。
- 提交拉取請求。