Rust分析器
STDIO集成rust-analyzer的Rust代码分析MCP服务器
集成rust-analyzer的Rust代码分析MCP服务器
This is a Model Context Protocol (MCP) server that provides integration with rust-analyzer, allowing AI assistants to analyze Rust code, get hover information, find definitions, references, and more. Written in Rust for optimal performance and native integration.
rust-analyzer: Make sure rust-analyzer is installed and available in your PATH
# Install via rustup (recommended) rustup component add rust-analyzer # Or install directly cargo install rust-analyzer # Verify installation rust-analyzer --version
Rust: Version 1.70 or higher with Cargo
A Rust project: The server works best with a valid Rust workspace (containing Cargo.toml)
This Rust implementation offers several advantages over alternative implementations:
Install directly from crates.io:
cargo install rust-analyzer-mcp
The binary will be installed to your Cargo bin directory (usually ~/.cargo/bin/rust-analyzer-mcp).
Clone the repository:
git clone https://github.com/zeenix/rust-analyzer-mcp.git cd rust-analyzer-mcp
Build the project:
cargo build --release
The binary will be available at target/release/rust-analyzer-mcp
Add an MCP server configuration to one of these locations:
Option 1: Project-specific (.mcp.json in your Rust project root):
{ "mcpServers": { "rust-analyzer": { "command": "rust-analyzer-mcp" } } }
Option 2: User-wide (~/.claude.json or ~/.claude/settings.json):
{ "mcpServers": { "rust-analyzer": { "command": "rust-analyzer-mcp" } } }
Note: If you installed from crates.io, the command will be in your PATH. If you built from source, use the full path to the binary. You can also configure servers using Claude Code's CLI wizard too.
Add this to your Claude Desktop configuration (claude_desktop_config.json):
{ "mcpServers": { "rust-analyzer": { "command": "rust-analyzer-mcp" } } }
Note: If installed from crates.io, the command will be in your PATH. For Claude Desktop, you
may want to specify a cwd parameter if you want to analyze a specific project by default.
For other MCP clients, run the server with:
./target/release/rust-analyzer-mcp
Or during development:
cargo run
The server communicates via stdio and follows the MCP protocol.
rust_analyzer_symbolsGet all symbols (functions, structs, enums, etc.) in a file.
Parameters:
file_path: Path to the Rust filerust_analyzer_definitionFind the definition of a symbol at a specific position.
Parameters:
file_path: Path to the Rust fileline: Line number (0-based)character: Character position (0-based)rust_analyzer_referencesFind all references to a symbol at a specific position.
Parameters:
file_path: Path to the Rust fileline: Line number (0-based)character: Character position (0-based)rust_analyzer_hoverGet hover information (documentation, type info) for a symbol at a specific position.
Parameters:
file_path: Path to the Rust file (relative to workspace)line: Line number (0-based)character: Character position (0-based)rust_analyzer_completionGet code completion suggestions at a specific position.
Parameters:
file_path: Path to the Rust fileline: Line number (0-based)character: Character position (0-based)rust_analyzer_formatFormat a Rust file using rust-analyzer's formatter. Returns an array of text edits to apply.
Parameters:
file_path: Path to the Rust fileReturns an empty array if the file is already formatted, or an array of edits with ranges and new text to apply.
rust_analyzer_code_actionsGet available code actions (quick fixes, refactorings) for a range.
Parameters:
file_path: Path to the Rust fileline: Start line number (0-based)character: Start character position (0-based)end_line: End line number (0-based)end_character: End character position (0-based)Note: Code actions availability depends on:
rust_analyzer_diagnosticsGet diagnostics (errors, warnings, hints) for a specific file.
Parameters:
file_path: Path to the Rust fileReturns diagnostics with severity levels (error, warning, hint, information), messages, and location ranges. Includes a summary count of diagnostics by severity.
rust_analyzer_workspace_diagnosticsGet all diagnostics across the entire workspace.
Parameters: None
Returns aggregated diagnostics for all files in the workspace with file paths, severity levels, messages, and a summary of total counts by severity.
rust_analyzer_set_workspaceChange the workspace root directory.
Parameters:
workspace_path: Path to the new workspace rootHere are some example prompts you can use with Claude when this MCP server is configured:
Code Analysis:
Can you analyze the main function in src/main.rs and tell me what it does? 
Use the rust analyzer tools to get hover information and symbols.
Finding Definitions:
I'm looking at a function call on line 25 of src/lib.rs at character position 10. 
Can you find its definition using rust-analyzer?
Code Completion:
I'm writing code at line 15, character 8 in src/main.rs. 
What completion suggestions are available?
Refactoring Help:
What code actions are available for the code between line 10-15 in src/utils.rs?
Error Checking:
Can you get the diagnostics for src/main.rs and tell me about any errors or warnings?
Workspace Analysis:
Show me all the diagnostics across the entire workspace using rust-analyzer.
rust-analyzer-mcp-server/
├── src/
│   └── main.rs       # Main MCP server implementation
├── Cargo.toml        # Rust dependencies and metadata
└── README.md         # This file
To run in development mode:
cargo run
To build for release:
cargo build --release
To run tests:
cargo test
To check code without building:
cargo check
For verbose logging during development:
RUST_LOG=debug cargo run
To run with release optimizations in dev:
cargo run --release
which rust-analyzerrustup component add rust-analyzerRUST_LOG=debug for verbose logging)rustc --versioncargo clean and rebuild if you encounter dependency issuesThis is a foundation implementation that covers the most common rust-analyzer features. Contributions are welcome for:
cargo fmt for consistent formattingcargo clippy for lintingThis project is licensed under the MIT License - see the LICENSE file for details.