1. Conduid
  2. Developer Tools
  3. Rust MCP
MCP server · Developer Tools

Rust MCP

Rust MCP server

Unclaimed last commit a year ago devtools
39Low

Scored 15 days ago · breakdown

About Rust MCP

Rust MCP is an MCP server published by dexwritescode in the Developer Tools category: rust MCP server.

The repository has 36 stars and 17 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

From source
git clone https://github.com/dexwritescode/rust-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Rust MCP

Powered by Claude · Grounded in docs

I know everything about Rust MCP. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.

5 checks have not been run yet.

README

CI

Rust MCP Server

A comprehensive Model Context Protocol (MCP) server that provides rust-analyzer integration for LLM-assisted Rust development. This server enables AI tools like Claude to work with Rust code idiomatically through rust-analyzer's Language Server Protocol capabilities, avoiding string manipulation and providing intelligent code analysis and refactoring.

Quick Start

  1. Build: cargo build --release
  2. Configure your MCP client to use target/release/rustmcp
  3. Use through AI assistants with natural language prompts like "Generate a User struct with Debug and Clone derives"

Features - Complete Tool Suite (19 Tools)

Code Analysis (4 tools)

  • find_definition - Navigate to symbol definitions
  • find_references - Find all symbol uses
  • get_diagnostics - Get compiler errors/warnings with fixes
  • workspace_symbols - Search project symbols

Code Generation (4 tools)

  • generate_struct - Create structs with derives and constructors
  • generate_enum - Create enums with variants
  • generate_trait_impl - Generate trait implementations with stubs
  • generate_tests - Create unit or integration test templates

Refactoring (5 tools)

  • rename_symbol - Rename with scope awareness
  • extract_function - Extract code into functions
  • inline_function - Inline function calls
  • organize_imports - Sort and organize use statements
  • format_code - Apply rustfmt formatting

Quality Assurance (2 tools)

  • apply_clippy_suggestions - Apply clippy automatic fixes
  • validate_lifetimes - Check lifetime and borrow checker issues

Project Management (2 tools)

  • analyze_manifest - Parse and analyze Cargo.toml
  • run_cargo_check - Execute cargo check with error parsing

Advanced Features (4 tools)

  • get_type_hierarchy - Get type relationships for symbols
  • suggest_dependencies - Recommend crates based on code patterns
  • create_module - Create new Rust modules with visibility control
  • move_items - Move code items between files

Additional Advanced Tools

  • change_signature - Modify function signatures safely

Prerequisites

  • Rust toolchain (1.70+)
  • rust-analyzer installed (defaults to ~/.cargo/bin/rust-analyzer)
  • An MCP-compatible client (Claude, Roo, etc.)

Installation

  1. Clone this repository:
git clone <repository-url>
cd rust-mcp
  1. Build the server:
cargo build --release
  1. The server binary will be available at target/release/rustmcp

Configuration

Environment Variables

The server supports the following environment variables:

  • RUST_ANALYZER_PATH - Path to rust-analyzer binary (default: ~/.cargo/bin/rust-analyzer)

You can set this when running the server:

RUST_ANALYZER_PATH=/usr/local/bin/rust-analyzer ./target/release/rustmcp

Or set it in your MCP client configuration (see examples below).

Claude Desktop

Add the following to your Claude Desktop MCP configuration file:

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"
      }
    }
  }
}

If rust-analyzer is in the default location (~/.cargo/bin/rust-analyzer), you can omit the env section:

{
  "mcpServers": {
    "rust-analyzer": {
      "command": "/path/to/rust-mcp/target/release/rustmcp",
      "args": []
    }
  }
}

Roo Configuration

Add to your Roo configuration file (typically ~/.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"
      }
    }
  ]
}

For default rust-analyzer location, you can use an empty env object:

{
  "mcp_servers": [
    {
      "name": "rust-analyzer",
      "command": "/path/to/rust-mcp/target/release/rustmcp",
      "args": [],
      "env": {}
    }
  ]
}

Other MCP Clients

For any MCP-compatible client, configure it to run:

/path/to/rust-mcp/target/release/rustmcp

The server uses stdio transport and will be ready to accept MCP protocol messages.

Usage Examples

Once configured, you can use the tools through your AI assistant. Here are some example prompts:

Code Analysis

"Find all references to the `Config` struct in this Rust project"
"Show me the definition of the `parse_args` function"
"Check for compiler errors in src/main.rs"
"Search for all symbols matching 'user' in the workspace"

Code Generation

"Generate a struct called `User` with fields: name (String), age (u32), email (String), with Debug and Clone derives"
"Create an enum called `HttpStatus` with variants: Ok, NotFound, ServerError"
"Generate unit tests for the `calculate_total` function"
"Generate a Display trait implementation for the User struct"

Refactoring

"Rename the variable `data` to `user_input` throughout the codebase"
"Extract this code block into a separate function called `validate_input`"
"Inline the `helper_function` call on line 42"
"Organize all import statements in src/lib.rs"
"Format all the code in src/lib.rs"

Quality Assurance

"Run clippy and apply all automatic fixes to improve code quality"
"Check for any lifetime or borrow checker issues in src/auth.rs"

Project Management

"Analyze the Cargo.toml file and show dependency information"
"Run cargo check and report any compilation errors"

Advanced Features

"Show me the type hierarchy for the symbol at line 15, character 8 in src/main.rs"
"Suggest crate dependencies for HTTP client functionality in this workspace"
"Create a new public module called 'auth' in src/auth.rs"
"Move the User struct and validate_user function from src/main.rs to src/user.rs"
"Change the signature of the process_data function to accept a reference instead of ownership"

Architecture

The server is built with a modular architecture:

  • src/main.rs - Entry point and server initialization
  • src/lib.rs - Module declarations
  • src/server/ - MCP server implementation
    • handler.rs - Tool handlers and MCP server logic using rmcp crate
    • parameters.rs - Parameter type definitions for all tools
  • src/analyzer/ - rust-analyzer LSP client integration
    • client.rs - LSP client implementation and protocol handling
  • src/tools/ - Modular tool implementations
    • types.rs - Tool dispatcher and definitions
    • analysis.rs - Code analysis tools (find_definition, find_references, etc.)
    • generation.rs - Code generation tools (generate_struct, generate_enum, etc.)
    • refactoring.rs - Refactoring tools (rename_symbol, extract_function, etc.)
    • formatting.rs - Code formatting tools
    • quality.rs - Quality assurance tools (clippy, lifetimes)
    • cargo.rs - Project management tools
    • navigation.rs - Navigation tools (workspace_symbols)
    • advanced.rs - Advanced features (type hierarchy, dependencies, modules)

Development

Running in Development

cargo run

Testing Individual Tools

The server exposes all tools through the MCP protocol. For debugging, you can:

  1. Run the server: cargo run
  2. Send MCP messages via stdin (JSON-RPC format)
  3. Check server logs and responses

Adding New Tools

  1. Create the tool implementation function in the appropriate src/tools/*.rs file
  2. Add parameter struct to src/server/parameters.rs
  3. Add the tool to the execute_tool match statement in src/tools/types.rs
  4. Add tool definition to get_tools() function in src/tools/types.rs
  5. Add the corresponding #[tool] method to RustMcpServer in src/server/handler.rs
  6. Add analyzer client method to src/analyzer/client.rs if needed

Troubleshooting

rust-analyzer Not Found

Ensure rust-analyzer is installed and accessible. The server will look for rust-analyzer in the following order:

  1. The path specified by the RUST_ANALYZER_PATH environment variable
  2. Default location: ~/.cargo/bin/rust-analyzer

To use a custom path, set the environment variable:

export RUST_ANALYZER_PATH=/custom/path/to/rust-analyzer

Or configure it in your MCP client configuration (see Configuration section above).

MCP Connection Issues

  • Verify the server binary path in your MCP client configuration
  • Check that the binary has execute permissions: chmod +x target/release/rustmcp
  • Ensure no other processes are using the same MCP server name

LSP Communication Errors

  • Verify rust-analyzer works independently: rust-analyzer --version
  • Check that your Rust project has a valid Cargo.toml
  • Ensure the workspace path is correct when calling tools

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Implement your changes with tests
  4. Submit a pull request

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About Rust MCP

How do I install Rust MCP?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Rust MCP safe to use with an AI agent?

Its trust score is 39 out of 100 (low). It passes 1 of the 1 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Rust MCP still maintained?

The last commit was a year ago. That's long enough that you should check whether the maintainer is responding to issues before depending on it.