Cargo MCP

Interaja com projetos Rust usando comandos Cargo como build, test e run.

Documentação

Cargo MCP Server

Um servidor Model Context Protocol (MCP) que fornece ferramentas para executar comandos Cargo. Este servidor permite que agentes de IA interajam com projetos Rust através do Cargo, possibilitando compilações automatizadas, testes, geração de documentação e muito mais.

Recursos

O servidor fornece as seguintes ferramentas Cargo:

  • cargo_build - Compilar um projeto Rust com Cargo
  • cargo_test - Executar testes para um projeto Rust
  • cargo_run - Executar um binário Rust
  • cargo_check - Verificar erros em um projeto sem compilar
  • cargo_clippy - Executar o linter Clippy
  • cargo_fmt - Formatar código Rust usando rustfmt
  • cargo_doc - Gerar documentação
  • cargo_clean - Limpar artefatos de compilação
  • cargo_tree - Exibir árvore de dependências
  • cargo_update - Atualizar dependências no Cargo.lock
  • cargo_bench - Executar benchmarks

Instalação

Pré-requisitos

  • Python 3.8 ou superior
  • Rust e Cargo instalados no seu sistema
  • Acesso para instalar pacotes Python

Instalar a partir do código-fonte

  1. Clone este repositório:
git clone <repository-url>
cd cargo-mcp
  1. Instale o pacote:
pip install -e .

Uso

Com Claude Desktop

Adicione o servidor ao seu claude_desktop_config.json:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "cargo-mcp": {
      "command": "cargo-mcp"
    }
  }
}

Com outros clientes MCP

O servidor pode ser usado com qualquer cliente compatível com MCP. Inicie o servidor usando:

cargo-mcp

Testando com o MCP Inspector

Você pode testar o servidor usando o MCP Inspector:

npx @modelcontextprotocol/inspector cargo-mcp

Documentação das Ferramentas

cargo_build

Compilar um projeto Rust com Cargo.

Parâmetros:

  • release (booleano, opcional): Compilar em modo release com otimizações
  • features (array, opcional): Lista de features para ativar
  • target (string, opcional): Compilar para o triple de destino fornecido
  • workspace_path (string, opcional): Caminho para a raiz do workspace (detectado automaticamente se não fornecido)

cargo_test

Executar testes para um projeto Rust.

Parâmetros:

  • test_name (string, opcional): Nome do teste específico a executar
  • release (booleano, opcional): Executar testes em modo release
  • features (array, opcional): Lista de features para ativar
  • workspace_path (string, opcional): Caminho para a raiz do workspace

cargo_run

Executar um binário Rust.

Parâmetros:

  • bin_name (string, opcional): Nome do binário a executar (para projetos com múltiplos binários)
  • args (array, opcional): Argumentos a passar para o binário
  • release (booleano, opcional): Executar em modo release
  • features (array, opcional): Lista de features para ativar
  • workspace_path (string, opcional): Caminho para a raiz do workspace

cargo_check

Verificar erros em um projeto Rust sem compilá-lo.

Parâmetros:

  • features (array, opcional): Lista de features para ativar
  • workspace_path (string, opcional): Caminho para a raiz do workspace

cargo_clippy

Executar o linter Clippy em um projeto Rust.

Parâmetros:

  • fix (booleano, opcional): Aplicar automaticamente as correções sugeridas
  • features (array, opcional): Lista de features para ativar
  • workspace_path (string, opcional): Caminho para a raiz do workspace

cargo_fmt

Formatar código Rust usando rustfmt.

Parâmetros:

  • check (booleano, opcional): Verificar se os arquivos estão formatados sem modificá-los
  • workspace_path (string, opcional): Caminho para a raiz do workspace

cargo_doc

Gerar documentação para um projeto Rust.

Parâmetros:

  • open (booleano, opcional): Abrir a documentação no navegador após a geração
  • no_deps (booleano, opcional): Não compilar documentação para dependências
  • workspace_path (string, opcional): Caminho para a raiz do workspace

cargo_clean

Limpar artefatos de compilação.

Parâmetros:

  • workspace_path (string, opcional): Caminho para a raiz do workspace

cargo_tree

Exibir árvore de dependências.

Parâmetros:

  • package (string, opcional): Pacote para exibir a árvore
  • features (array, opcional): Lista de features para ativar
  • workspace_path (string, opcional): Caminho para a raiz do workspace

cargo_update

Atualizar dependências no Cargo.lock.

Parâmetros:

  • package (string, opcional): Pacote específico para atualizar
  • workspace_path (string, opcional): Caminho para a raiz do workspace

cargo_bench

Executar benchmarks.

Parâmetros:

  • bench_name (string, opcional): Nome do benchmark específico a executar
  • features (array, opcional): Lista de features para ativar
  • workspace_path (string, opcional): Caminho para a raiz do workspace

Detecção de Estrutura do Projeto

O servidor detecta automaticamente projetos Rust procurando por arquivos Cargo.toml. Ele percorre a árvore de diretórios a partir do diretório de trabalho atual para encontrar o arquivo Cargo.toml mais próximo e usa esse diretório como raiz do workspace.

Você pode substituir esse comportamento fornecendo o parâmetro workspace_path a qualquer ferramenta.

Tratamento de Erros

O servidor fornece mensagens de erro detalhadas e logs para solução de problemas:

  • Verifica se o Cargo está instalado e disponível no PATH
  • Valida se o Cargo.toml existe no diretório de destino
  • Captura tanto stdout quanto stderr dos comandos Cargo
  • Fornece informações detalhadas de execução de comandos

Desenvolvimento

Configuração

  1. Clone o repositório
  2. Instale as dependências de desenvolvimento:
pip install -e ".[dev]"

Testes

Execute os testes usando pytest:

pytest

Formatação de Código

Formate o código usando black:

black src/

Faça lint do código usando ruff:

ruff check src/

Licença

Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

Suporte

Para problemas e dúvidas: