AWS CLI
Interactúa con los servicios de AWS usando la AWS CLI. Requiere que la AWS CLI esté instalada y configurada.
Documentación
Servidor MCP use_aws
🌟 amazon-q-cli es excelente, y es excelente porque tiene use_aws herramienta MCP para interactuar con la API de AWS.
💡 ¿No sería mejor si esta use_aws fuera portátil y pudieras usarla en diferentes herramientas de IA, cualquiera que estés usando actualmente?
⚡ use_aws_mcp es un servidor independiente del Model Context Protocol (MCP) que proporciona funcionalidad de AWS CLI a través de una interfaz estandarizada.
Este servidor replica la funcionalidad de la herramienta use_aws del Amazon Q Developer CLI.
🎬 Demo
-
Uso con Avante, MCPHub en nvim

-
Uso con Cursor

✨ Características
- Integración con AWS CLI: Ejecuta comandos de AWS CLI con manejo adecuado de parámetros
- Comprobaciones de seguridad: Detección automática de operaciones de solo lectura vs. operaciones de escritura
- Gestión de User Agent: Configuración adecuada del user agent de AWS CLI para seguimiento
- Formato de parámetros: Conversión automática de parámetros a kebab-case para compatibilidad con CLI
- Manejo de errores: Manejo integral de errores y formato de salida
- Protocolo MCP: Cumplimiento total del Model Context Protocol
- Descripciones legibles para humanos: Descripciones ricas de comandos usando formato de terminal
📦 Instalación
📋 Requisitos previos
- 🦀 Rust (1.70 o posterior), Cargo
- para MacOS y Linux, instalar con
curl https://sh.rustup.rs -sSf | sh
- para MacOS y Linux, instalar con
- ☁️ AWS CLI instalado y configurado
- 🔑 Credenciales de AWS configuradas (mediante AWS CLI, variables de entorno o roles de IAM)
🔨 Compilación
cargo build --release
El binario estará disponible en target/release/use_aws.
🚀 Uso
🔗 Integración con cliente MCP
Para usar este servidor con un cliente MCP, primero instálalo usando Cargo:
cargo install use_aws_mcp
Luego configura tu cliente MCP con:
{
"mcpServers": {
"use_aws_mcp": {
"name": "use_aws_mcp",
"command": "use_aws_mcp",
"timeout": 300,
"env": {},
"disabled": false
}
}
}
⚠️ Advertencia importante para usar cliente MCP
Con q cli, los clientes mcp son procesos de shell, por lo que las variables de entorno de credenciales como AWS_DEFAULT_PROFILE se transfieren automáticamente al servidor mcp.
Sin embargo, los clientes mcp que no son de shell, como cursor, no pueden aprovechar esto, por lo que se recomienda solicitar directamente a los clientes mcp que usen un perfil de AWS específico.
📋 Flujo de usuario:
- Configura mcp.json como se indica arriba
- Configura la clave API, o inicia sesión en un perfil específico usando
aws sso login - ¡Haz preguntas relacionadas con AWS al cliente mcp! Y asegúrate de solicitarle que use un perfil específico.
Ejecutar el servidor MCP localmente
./target/release/use_aws_mcp
El servidor se comunica mediante stdin/stdout usando el protocolo JSON-RPC.
Descripciones de comandos
El servidor proporciona descripciones legibles para humanos de los comandos de AWS CLI. Puedes ver esto en acción ejecutando el ejemplo:
cargo run --example description_demo
Esto generará algo como:
Running aws cli command:
Service name: s3
Operation name: list-buckets
Parameters:
- max-items: "10"
- query: "Buckets[].Name"
Profile name: development
Region: us-west-2
Label: List S3 buckets with query
✅ This command is read-only (no acceptance required)
🛠️ Especificación de la herramienta
El servidor proporciona una única herramienta llamada use_aws con el siguiente esquema:
{
"name": "use_aws",
"description": "Execute AWS CLI commands with proper parameter handling and safety checks",
"inputSchema": {
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "AWS service name (e.g., s3, ec2, lambda)"
},
"operation_name": {
"type": "string",
"description": "AWS CLI operation name (e.g., list-buckets, describe-instances)"
},
"parameters": {
"type": "object",
"description": "Optional parameters for the AWS CLI command",
"additionalProperties": true
},
"region": {
"type": "string",
"description": "AWS region (e.g., us-west-2, eu-west-1)"
},
"profile_name": {
"type": "string",
"description": "Optional AWS profile name"
},
"label": {
"type": "string",
"description": "Optional label for the operation"
}
},
"required": ["service_name", "operation_name", "region"]
}
}
📚 Ejemplos
Listar buckets de S3
{
"name": "use_aws",
"arguments": {
"service_name": "s3",
"operation_name": "ls",
"region": "us-west-2"
}
}
Describir instancias de EC2
{
"name": "use_aws",
"arguments": {
"service_name": "ec2",
"operation_name": "describe-instances",
"region": "us-west-2",
"parameters": {
"instance-ids": "i-1234567890abcdef0"
}
}
}
Listar funciones de Lambda con perfil
{
"name": "use_aws",
"arguments": {
"service_name": "lambda",
"operation_name": "list-functions",
"region": "us-west-2",
"profile_name": "development"
}
}
🛡️ Características de seguridad
Detección de operaciones de solo lectura
El servidor detecta automáticamente operaciones de solo lectura basándose en el prefijo del nombre de la operación:
- Prefijos de solo lectura:
get,describe,list,ls,search,batch_get - Operaciones de escritura: Todas las demás operaciones requieren aceptación explícita del usuario
Truncamiento de salida
Las salidas grandes se truncan automáticamente para evitar problemas de memoria, con un tamaño máximo de respuesta de 100KB.
Desarrollo
Ejecutar pruebas
cargo test
🔨 Compilación para desarrollo
cargo build
Ejecutar con registro
RUST_LOG=use_aws=debug cargo run
Ejemplos
# Run the description demo
cargo run --example description_demo
Arquitectura
El proyecto está estructurado de la siguiente manera:
src/lib.rs: Biblioteca principal con tipos y constantessrc/error.rs: Tipos de manejo de erroressrc/use_aws.rs: Funcionalidad principal de AWS CLI (replicada del original)src/mcp_server.rs: Implementación del servidor MCPsrc/main.rs: Punto de entrada del binarioexamples/description_demo.rs: Ejemplo que demuestra las descripciones de comandos
📦 Dependencias
Si no tienes Cargo (el gestor de paquetes de Rust) instalado, puedes obtenerlo instalando Rust usando rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Sigue las instrucciones en pantalla para completar la instalación. Después de la instalación, reinicia tu terminal y asegúrate de que Cargo esté disponible ejecutando:
cargo --version
Deberías ver la versión instalada de Cargo impresa.
Este proyecto se distribuye como un crate de Rust. Las siguientes dependencias son gestionadas automáticamente por Cargo:
tokioserdeserde_jsoneyrebstrconvert_caseasync-traitthiserrortracingtracing-subscribercrossterm
dependencias de prueba/desarrollo:
tokio-test
No necesitas instalarlas manualmente; Cargo se encargará de ellas durante la instalación.
📄 Licencia
MIT, Apache-2.0
🤝 Contribuciones
- Haz un fork del repositorio
- Crea una rama de características
- Realiza tus cambios
- Añade pruebas
- Envía una solicitud de extracción (pull request)
🔒 Seguridad
Este servidor ejecuta comandos de AWS CLI, lo que puede tener implicaciones de seguridad:
- Asegura credenciales y permisos adecuados de AWS
- Revisa todos los comandos antes de ejecutarlos
- Usa operaciones de solo lectura cuando sea posible
- Considera ejecutar en un entorno restringido
🔧 Solución de problemas
Problemas comunes
- AWS CLI no encontrado: Asegúrate de que AWS CLI esté instalado y en PATH
- Permiso denegado: Verifica las credenciales y permisos de AWS
- Región no válida: Verifica que el nombre de la región sea correcto
- Errores de parámetros: Verifica los nombres y valores de los parámetros
Modo de depuración
Ejecuta con registro de depuración para ver información detallada:
RUST_LOG=use_aws=debug ./target/release/use_aws