Cargo MCP
Interactúa con proyectos de Rust usando comandos de Cargo como build,
Documentación
Servidor Cargo MCP
Un servidor Model Context Protocol (MCP) que proporciona herramientas para ejecutar comandos de Cargo. Este servidor permite a los agentes de IA interactuar con proyectos de Rust a través de Cargo, habilitando compilaciones automatizadas, pruebas, generación de documentación y más.
Características
El servidor proporciona las siguientes herramientas de Cargo:
cargo_build- Compilar un proyecto de Rust con Cargocargo_test- Ejecutar pruebas para un proyecto de Rustcargo_run- Ejecutar un binario de Rustcargo_check- Verificar un proyecto en busca de errores sin compilarcargo_clippy- Ejecutar el linter Clippycargo_fmt- Formatear código Rust usando rustfmtcargo_doc- Generar documentacióncargo_clean- Limpiar artefactos de compilacióncargo_tree- Mostrar el árbol de dependenciascargo_update- Actualizar dependencias en Cargo.lockcargo_bench- Ejecutar benchmarks
Instalación
Requisitos previos
- Python 3.8 o superior
- Rust y Cargo instalados en su sistema
- Acceso para instalar paquetes de Python
Instalar desde el código fuente
- Clonar este repositorio:
git clone <repository-url>
cd cargo-mcp
- Instalar el paquete:
pip install -e .
Uso
Con Claude Desktop
Agregue el servidor a su 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"
}
}
}
Con otros clientes MCP
El servidor se puede usar con cualquier cliente compatible con MCP. Inicie el servidor usando:
cargo-mcp
Pruebas con MCP Inspector
Puede probar el servidor usando MCP Inspector:
npx @modelcontextprotocol/inspector cargo-mcp
Documentación de herramientas
cargo_build
Compilar un proyecto de Rust con Cargo.
Parámetros:
release(booleano, opcional): Compilar en modo release con optimizacionesfeatures(arreglo, opcional): Lista de características a activartarget(cadena, opcional): Compilar para el triple de destino dadoworkspace_path(cadena, opcional): Ruta a la raíz del workspace (se detecta automáticamente si no se proporciona)
cargo_test
Ejecutar pruebas para un proyecto de Rust.
Parámetros:
test_name(cadena, opcional): Nombre de la prueba específica a ejecutarrelease(booleano, opcional): Ejecutar pruebas en modo releasefeatures(arreglo, opcional): Lista de características a activarworkspace_path(cadena, opcional): Ruta a la raíz del workspace
cargo_run
Ejecutar un binario de Rust.
Parámetros:
bin_name(cadena, opcional): Nombre del binario a ejecutar (para proyectos con múltiples binarios)args(arreglo, opcional): Argumentos a pasar al binariorelease(booleano, opcional): Ejecutar en modo releasefeatures(arreglo, opcional): Lista de características a activarworkspace_path(cadena, opcional): Ruta a la raíz del workspace
cargo_check
Verificar un proyecto de Rust en busca de errores sin compilarlo.
Parámetros:
features(arreglo, opcional): Lista de características a activarworkspace_path(cadena, opcional): Ruta a la raíz del workspace
cargo_clippy
Ejecutar el linter Clippy en un proyecto de Rust.
Parámetros:
fix(booleano, opcional): Aplicar automáticamente las correcciones sugeridasfeatures(arreglo, opcional): Lista de características a activarworkspace_path(cadena, opcional): Ruta a la raíz del workspace
cargo_fmt
Formatear código Rust usando rustfmt.
Parámetros:
check(booleano, opcional): Verificar si los archivos están formateados sin modificarlosworkspace_path(cadena, opcional): Ruta a la raíz del workspace
cargo_doc
Generar documentación para un proyecto de Rust.
Parámetros:
open(booleano, opcional): Abrir la documentación en el navegador después de generarlano_deps(booleano, opcional): No compilar documentación para dependenciasworkspace_path(cadena, opcional): Ruta a la raíz del workspace
cargo_clean
Limpiar artefactos de compilación.
Parámetros:
workspace_path(cadena, opcional): Ruta a la raíz del workspace
cargo_tree
Mostrar el árbol de dependencias.
Parámetros:
package(cadena, opcional): Paquete para mostrar el árbolfeatures(arreglo, opcional): Lista de características a activarworkspace_path(cadena, opcional): Ruta a la raíz del workspace
cargo_update
Actualizar dependencias en Cargo.lock.
Parámetros:
package(cadena, opcional): Paquete específico a actualizarworkspace_path(cadena, opcional): Ruta a la raíz del workspace
cargo_bench
Ejecutar benchmarks.
Parámetros:
bench_name(cadena, opcional): Nombre del benchmark específico a ejecutarfeatures(arreglo, opcional): Lista de características a activarworkspace_path(cadena, opcional): Ruta a la raíz del workspace
Detección de estructura del proyecto
El servidor detecta automáticamente proyectos de Rust buscando archivos Cargo.toml. Recorre el árbol de directorios hacia arriba desde el directorio de trabajo actual para encontrar el archivo Cargo.toml más cercano y usa ese directorio como raíz del workspace.
Puede anular este comportamiento proporcionando el parámetro workspace_path a cualquier herramienta.
Manejo de errores
El servidor proporciona mensajes de error detallados y registros para la resolución de problemas:
- Verifica si Cargo está instalado y disponible en PATH
- Valida que Cargo.toml exista en el directorio de destino
- Captura tanto stdout como stderr de los comandos de Cargo
- Proporciona información detallada de ejecución de comandos
Desarrollo
Configuración
- Clonar el repositorio
- Instalar dependencias de desarrollo:
pip install -e ".[dev]"
Pruebas
Ejecutar pruebas usando pytest:
pytest
Formato de código
Formatear código usando black:
black src/
Lint del código usando ruff:
ruff check src/
Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para más detalles.
Contribuciones
¡Las contribuciones son bienvenidas! No dude en enviar un Pull Request.
Soporte
Para problemas y preguntas:
- Cree un issue en GitHub
- Consulte la documentación de MCP para preguntas generales sobre MCP