cargo-mcp 0.1.0

mcp server for cargo commands
cargo-mcp-0.1.0 is not a library.

Cargo MCP Server

[!CAUTION] This repository is written by AI as an experiment. Although I (jbr) review every line, the code quality is not necessarily identical to what I would have written. Caveat usor.

A Model Context Protocol (MCP) server that provides safe access to Cargo operations for Rust projects.

Features

This MCP server exposes the following Cargo tools:

  • cargo_check - Verify code compiles without producing executables
  • cargo_clippy - Run the Clippy linter for code suggestions
  • cargo_test - Execute project tests
  • cargo_fmt_check - Check code formatting without modifying files
  • cargo_build - Build the project (debug or release mode)

Installation

cargo build --release

Usage with Claude Desktop

Add this to your Claude Desktop MCP configuration:

{
  "mcpServers": {
    "cargo-mcp": {
      "command": "/path/to/cargo-mcp/target/release/cargo-mcp",
      "args": ["serve"]
    }
  }
}

Tool Usage

cargo_check

Verify that your Rust code compiles:

{
  "name": "cargo_check",
  "arguments": {
    "path": "/path/to/rust/project",
    "package": "optional-package-name"
  }
}

cargo_clippy

Get linting suggestions:

{
  "name": "cargo_clippy", 
  "arguments": {
    "path": "/path/to/rust/project",
    "package": "optional-package-name",
    "fix": false
  }
}

cargo_test

Run tests:

{
  "name": "cargo_test",
  "arguments": {
    "path": "/path/to/rust/project", 
    "package": "optional-package-name",
    "test_name": "optional-specific-test"
  }
}

cargo_fmt_check

Check formatting:

{
  "name": "cargo_fmt_check",
  "arguments": {
    "path": "/path/to/rust/project"
  }
}

cargo_build

Build the project:

{
  "name": "cargo_build",
  "arguments": {
    "path": "/path/to/rust/project",
    "package": "optional-package-name", 
    "release": false
  }
}

Safety Features

  • Only whitelisted Cargo commands are available
  • Path validation ensures the target is a valid Rust project (has Cargo.toml)
  • No arbitrary command execution
  • All commands run in the specified project directory

Development

To test the server manually:

cargo run -- serve

Then send MCP requests via stdin. Example initialization:

{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {}}

License

MIT