CLI DE AWS - MCP Server Seguro por ALMC Security 2025

CLI DE AWS

Ver en GitHub

servidor use_aws MCP

🌟 amazon-q-cli es genial, y es genial porque tiene la herramienta use_aws MCP para interactuar con la API de AWS.

💡 ¿No sería mejor si este use_aws fuera portable, y usarlo a través de diferentes herramientas de IA, cualquiera que estés usando actualmente?

use_aws_mcp es un servidor independiente del Protocolo de contexto de modelo (MCP) que proporciona la funcionalidad de la CLI de AWS a través de una interfaz estandarizada.
Este servidor replica la funcionalidad de la herramienta use_aws de la CLI de Amazon Q Developer.

🎬 Demo

  • Uso con Avante, MCPHub en nvim
    Demo: Avante

  • Uso con Cursor
    Demo: Cursor

✨ Características

  • Integración con AWS CLI: Ejecuta comandos CLI de AWS con un manejo adecuado de los parámetros
  • Comprobaciones de seguridad: Detección automática de operaciones de solo lectura frente a operaciones de escritura
  • Gestión de agentes de usuario: Configuración adecuada del agente de usuario de la CLI de AWS para el seguimiento
  • Formato de parámetros: Conversión automática de parámetros a kebab-case para compatibilidad CLI
  • Gestión de errores: Gestión integral de errores y formato de salida
  • Protocolo MCP: Cumplimiento total del protocolo de contexto de modelo
  • Descripciones legibles por el ser humano: Ricas descripciones de comandos utilizando el 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
  • ☁️ AWS CLI instalado y configurado
  • 🔑 Credenciales de AWS configuradas (a través de la CLI de AWS, variables de entorno o roles de IAM)

🔨 Construcción

cargo build --release

El binario estará disponible en target/release/use_aws.

🚀 Uso

🔗 Integración con clientes 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 sobre el uso del cliente MCP

Con q cli, los clientes mcp son procesos shell, por lo que las credenciales env como AWS_DEFAULT_PROFILE se transfieren automáticamente al servidor mcp.

Sin embargo, los clientes mcp no shell como cursor no pueden tomar ventaja de esto, por lo que es mejor aconsejado requerir a los clientes mcp directamente el uso de un perfil aws específico.

📋 Flujo de usuarios:

  1. Establecer mcp.json arriba
  2. Establecer clave de API, o iniciar sesión en el perfil específico utilizando aws sso login
  3. Pregunte a distancia cliente mcp aws preguntas relacionadas! y asegúrese de que requieren para utilizar el perfil específico.

Ejecutar el servidor MCP localmente

./target/release/use_aws_mcp

El servidor se comunica vía stdin/stdout usando el protocolo JSON-RPC.

Descripciones de comandos

El servidor proporciona descripciones legibles por humanos de los comandos de la CLI de AWS. Puedes ver esto en acción ejecutando el ejemplo:

cargo run --example descripción_demo

Esto mostrará algo como

Ejecución del comando aws cli: Nombre del servicio: s3 Nombre de la operación: list-buckets Parámetros: 
- max-items: "10" - query: "Buckets[].Name" Nombre de perfil: development Región: us-west-2 Etiqueta: Listar buckets de S3 con query ✅ Este comando es de sólo lectura (no requiere aceptación)

🛠️ Especificación de la herramienta

El servidor proporciona una única herramienta llamada use_aws con el siguiente esquema:

{ "name": "use_aws", "description": "Ejecuta comandos CLI de AWS con un manejo de parámetros y comprobaciones de seguridad adecuados", "inputSchema": { "type": "object", "properties": { "service_name": { "type": "string", "description": "Nombre del servicio de AWS (por ejemplo, s3, ec2, lambda)" }, "operation_name": { "type": "string", "description": "Nombre de operación de la CLI de AWS (por ejemplo, list-buckets, describe-instances)" }, "parameters": { "type": "object", "description": "Parámetros opcionales para el comando CLI de AWS", "additionalProperties": true }, "region": { "type": "string", "description": "región de AWS (por ejemplo, us-west-2, eu-west-1)" }, "profile_name": { "type": "string", "description": "Nombre opcional del perfil de AWS" }, "label": { "type": "string", "description": "Etiqueta opcional para la operación" } }, "required": ["service_name", "operation_name", "region"] }

📚 Ejemplos

Listar cubos de S3

{ "name": "use_aws", "arguments": { "service_name": "s3", "nombre_operación": "ls", "region": "us-west-2" } }

Describir instancias EC2

{ "name": "use_aws", "arguments": { "service_name": "ec2", "operation_name": "describe-instances", "region": "us-west-2", "parameters": { "instance-ids": "i-1234567890abcdef0" } }

Lista de funciones lambda con perfil

{ "name": "use_aws", "arguments": { "service_name": "lambda", "operation_name": "list-functions", "region": "us-west-2", "profile_name": "development" }

🛡️ Funciones de seguridad

Detección de operaciones de sólo lectura

El servidor detecta automáticamente las operaciones de sólo lectura basándose en el prefijo del nombre de la operación:

  • Prefijos de sólo lectura: get, describe, list, ls, search, batch_get
  • Operaciones de escritura: Todas las demás operaciones requieren la aceptación explícita del usuario

Truncamiento de la salida

Las salidas grandes se truncan automáticamente para evitar problemas de memoria, con un tamaño máximo de respuesta de 100 KB.

Desarrollo

Ejecución de pruebas

prueba de carga

🔨 Construcción para el desarrollo

cargo build

Ejecución con logging

RUST_LOG=use_aws=debug cargo run

Ejemplos

# Ejecutar la descripción demo cargo run --example descripción_demo

Arquitectura

El proyecto está estructurado de la siguiente manera:

  • src/lib.rs: Biblioteca central con tipos y constantes
  • src/error.rs: Tipos para el tratamiento de errores
  • src/use_aws.rs: Funcionalidad principal de la CLI de AWS (replicado del original)
  • src/mcp_server.rs: Implementación del servidor MCP
  • src/main.rs: Punto de entrada binario
  • examples/description_demo.rs: Ejemplo de demostración de descripciones de comandos

📦 Dependencias

Si no tienes Cargo (el gestor de paquetes de Rust) instalado, puedes conseguirlo instalando Rust usando rustup:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Siga las instrucciones en pantalla para completar la instalación. Tras la instalación, reinicia tu terminal y asegúrate de que Cargo está disponible ejecutando

cargo --version

Debería ver impresa la versión de Cargo instalada.

Este proyecto se distribuye como un crate de Rust. Las siguientes dependencias son gestionadas automáticamente por Cargo:

  • tokio
  • serde
  • serde_json
  • eyre
  • bstr
  • convertir_caso
  • async-trait
  • thiserror
  • rastreo
  • tracing-subscriber
  • crossterm

dependencias test/dev:

  • tokio-test

No es necesario instalar estos manualmente; Cargo se encargará de ellos durante la instalación.

📄 Licencia

MIT, Apache-2.0

🤝 Contribuir

  1. Abre el repositorio
  2. Crear una rama de características
  3. Haz tus cambios
  4. Añade pruebas
  5. Envía un pull request

🔒 Seguridad

Este servidor ejecuta comandos CLI de AWS, que pueden tener implicaciones de seguridad:

  • Asegurar las credenciales y permisos de AWS adecuados
  • Revise todos los comandos antes de su ejecución
  • Utilice operaciones de solo lectura siempre que sea posible
  • Considere la posibilidad de ejecutar en un entorno restringido

🔧 Solución de problemas

Problemas comunes

  1. No se encuentra AWS CLI: Asegúrese de que AWS CLI está instalado y en el PATH
  2. Permiso denegado: Compruebe las credenciales y los permisos de AWS
  3. Región no válida: Compruebe que el nombre de la región es correcto
  4. Errores de parámetros: Compruebe los nombres y valores de los parámetros

Modo depuración

Ejecutar con registro de depuración para ver información detallada:

RUST_LOG=use_aws=debug ./target/release/use_aws

Referencias

Relacionados en Servicio en la nube - MCP Servers Seguros

ServidorResumenAcciones
APISIX-MCPVer
Servidor MCP JupiterOneUn servidor de Protocolo de Contexto de Modelo (MCP) que proporciona acceso a las herramientas de Ju...Ver
Workday de CDataServidor de protocolo de contexto de modelo (MCP) de CData para WorkdayVer
Servidor CISA M365 MCPUn servidor de Protocolo de Contexto de Modelo (MCP) que implementa los controles de seguridad CISA...Ver
FreshserviceVer
Servidor MCP remoto de CloudflareEste ejemplo le permite implementar un servidor MCP remoto que no requiere autenticación en Cloudfla...Ver