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 Cargocargo_test- Executar testes para um projeto Rustcargo_run- Executar um binário Rustcargo_check- Verificar erros em um projeto sem compilarcargo_clippy- Executar o linter Clippycargo_fmt- Formatar código Rust usando rustfmtcargo_doc- Gerar documentaçãocargo_clean- Limpar artefatos de compilaçãocargo_tree- Exibir árvore de dependênciascargo_update- Atualizar dependências no Cargo.lockcargo_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
- Clone este repositório:
git clone <repository-url>
cd cargo-mcp
- 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çõesfeatures(array, opcional): Lista de features para ativartarget(string, opcional): Compilar para o triple de destino fornecidoworkspace_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 executarrelease(booleano, opcional): Executar testes em modo releasefeatures(array, opcional): Lista de features para ativarworkspace_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áriorelease(booleano, opcional): Executar em modo releasefeatures(array, opcional): Lista de features para ativarworkspace_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 ativarworkspace_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 sugeridasfeatures(array, opcional): Lista de features para ativarworkspace_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á-losworkspace_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çãono_deps(booleano, opcional): Não compilar documentação para dependênciasworkspace_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 árvorefeatures(array, opcional): Lista de features para ativarworkspace_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 atualizarworkspace_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 executarfeatures(array, opcional): Lista de features para ativarworkspace_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
- Clone o repositório
- 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:
- Crie uma issue no GitHub
- Consulte a documentação do MCP para perguntas gerais sobre MCP