hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Integrates with Codecov to track code coverage metrics during CI/CD runs with target coverage thresholds and PR status checks
Provides containerized deployment option with multi-architecture support for AMD64/x86_64 and ARM64, with security isolation and consistent environment configuration
Distributes the containerized application through GitHub Packages with versioned releases and development builds tagged with Git commit SHA
Servidor de protocolo de contexto de modelo (MCP) de AWS
Un servicio liviano que permite a los asistentes de IA ejecutar comandos de AWS CLI a través del Protocolo de contexto de modelo (MCP).
Descripción general
El servidor AWS MCP proporciona un puente entre los asistentes de IA compatibles con MCP (como Claude Desktop, Cursor y Windsurf) y la CLI de AWS. Permite a estos asistentes:
- Recuperar documentación de AWS CLI (
aws_cli_help
): obtener ayuda detallada sobre los servicios y comandos de AWS - Ejecutar comandos de AWS CLI (
aws_cli_pipeline
): ejecute comandos con tuberías Unix y reciba resultados formateados optimizados para el consumo de IA
Manifestación
El video demuestra el uso de Claude Desktop con AWS MCP Server para crear una nueva instancia de AWS EC2 con el agente de AWS SSM instalado.
Características
- Documentación de comandos : información de ayuda detallada para los comandos de AWS CLI
- Ejecución de comandos : ejecute comandos de AWS CLI y devuelva resultados legibles para humanos
- Compatibilidad con tuberías de Unix : filtre y transforme la salida de AWS CLI mediante tuberías y utilidades estándar de Unix
- Contexto de recursos de AWS : acceso a perfiles de AWS, regiones, información de cuentas y detalles del entorno a través de recursos de MCP
- Plantillas de solicitud : plantillas de solicitud predefinidas para tareas comunes de AWS siguiendo las mejores prácticas
- Integración con Docker : implementación sencilla mediante contenedorización con soporte multiarquitectura (AMD64/x86_64 y ARM64)
- Autenticación de AWS : aprovecha las credenciales de AWS existentes en la máquina host
Requisitos
- Docker (predeterminado) o Python 3.13+ (y AWS CLI instalado localmente)
- Credenciales de AWS configuradas
Empezando
Nota: Por seguridad y confiabilidad, se recomienda encarecidamente ejecutar el servidor dentro de un contenedor Docker. Consulte la sección "Consideraciones de Seguridad" para obtener información importante.
Opción 1 para ejecutar el servidor: usar Docker (recomendado)
La imagen de Docker admite arquitecturas AMD64/x86_64 (Intel/AMD) y ARM64 (Apple Silicon M1-M4, AWS Graviton).
Nota : La imagen oficial de GitHub Packages es multiarquitectura y utilizará automáticamente la versión adecuada para su sistema.
CopyEtiquetas de imagen de Docker :
latest
versión establexyz
(p. ej.,1.0.0
): versión específicasha-<commit-sha>
: compilaciones de desarrollo, etiquetadas con SHA de confirmación de Git (por ejemplo,sha-gb697684
)
Opción 2 de ejecutar el servidor: uso de Python
Usar con precaución: La ejecución nativa requiere una configuración cuidadosa del entorno y conlleva mayores riesgos de seguridad en comparación con la implementación recomendada de Docker. Asegúrese de comprender las implicaciones descritas en la sección Consideraciones de seguridad .
Configuración
El servidor AWS MCP se puede configurar mediante variables de entorno:
Variable de entorno | Descripción | Por defecto |
---|---|---|
AWS_MCP_TIMEOUT | Tiempo de espera de ejecución del comando en segundos | 300 |
AWS_MCP_MAX_OUTPUT | Tamaño máximo de salida en caracteres | 100000 |
AWS_MCP_TRANSPORT | Protocolo de transporte a utilizar ("stdio" o "sse") | estudio |
AWS_PROFILE | Perfil de AWS a utilizar | por defecto |
AWS_REGION | Región de AWS a utilizar | Estados Unidos-Este-1 |
AWS_MCP_SECURITY_MODE | Modo de seguridad ("estricto" o "permisivo") | estricto |
AWS_MCP_SECURITY_CONFIG | Ruta al archivo de configuración de seguridad personalizado | "" |
Importante: Administre de forma segura las credenciales de AWS proporcionadas al servidor, ya sea mediante archivos ~/.aws
montados o variables de entorno. Asegúrese de que las credenciales cumplan con el principio de mínimo privilegio, como se detalla en la sección Consideraciones de Seguridad . Al ejecutar mediante Docker, asegúrese de que estas variables se transfieran correctamente al entorno del contenedor (por ejemplo, mediante docker run -e VAR=value ...
).
Consideraciones de seguridad
La seguridad es fundamental al ejecutar comandos en su entorno de AWS. Si bien AWS MCP Server proporciona funcionalidad, usted es responsable de configurarlo y ejecutarlo de forma segura. Siga estrictamente las siguientes instrucciones:
1. Implementación recomendada: contenedor Docker
- Aislamiento: Ejecutar el servidor dentro de un contenedor Docker es el método de implementación predeterminado y altamente recomendado . La contenedorización proporciona un aislamiento crucial del sistema de archivos y de los procesos. Los comandos Unix potencialmente destructivos (como
rm
ymv
) ejecutados mediante tuberías, incluso si se usan incorrectamente, se contendrán dentro del entorno efímero de Docker y no afectarán el sistema de archivos del equipo host. El contenedor se puede detener y recrear fácilmente. - Entorno controlado: Docker garantiza un entorno consistente con las dependencias necesarias, lo que reduce el comportamiento inesperado.
2. Credenciales de AWS y privilegios mínimos de IAM (crítico)
- Responsabilidad del usuario: usted proporciona las credenciales de AWS al servidor (a través de
~/.aws
montado o variables de entorno). - El privilegio mínimo es esencial: El servidor ejecuta los comandos de la CLI de AWS con las credenciales que proporcione . Es fundamental que estas credenciales pertenezcan a una entidad principal de IAM (usuario o rol) configurada con los permisos mínimos necesarios (privilegio mínimo) únicamente para las acciones de AWS que desee realizar a través de esta herramienta.
- No utilice credenciales raíz: nunca utilice las credenciales de usuario raíz de la cuenta de AWS.
- Revisar permisos periódicamente: audite periódicamente los permisos de IAM asociados con las credenciales.
- Limitación de Impacto: Los permisos de IAM correctamente configurados son el mecanismo principal para limitar el impacto potencial de cualquier comando ejecutado a través del servidor, ya sea intencional o no. Incluso si un comando fuera manipulado, solo podría realizar acciones permitidas por la política de IAM específica.
3. Modelo de usuario confiable
- El servidor asume que el usuario final que interactúa con el cliente MCP (p. ej., Claude Desktop, Cursor) es la misma persona de confianza que configuró el servidor y proporcionó las credenciales de AWS con privilegios mínimos. No exponga el servidor ni el cliente conectado a usuarios no confiables.
4. Comprensión de los riesgos de ejecución (implementación actual)
- Ejecución de comandos: La implementación actual utiliza funciones de shell (
shell=True
en llamadas de subproceso) para ejecutar comandos de AWS y gestionar tuberías Unix. Si bien es conveniente, este enfoque conlleva riesgos inherentes si se manipula la cadena de comandos de entrada (inyección de comandos). - Mitigación mediante controles operativos: en el contexto del modelo de usuario confiable y la implementación de Docker , estos riesgos se mitigan operativamente:
- Se supone que el usuario confiable no proporciona comandos intencionalmente maliciosos contra su propio entorno.
- Docker contiene efectos secundarios del sistema de archivos.
- Fundamentalmente, los privilegios mínimos de IAM limitan el alcance de cualquier acción de AWS que pueda ejecutarse.
- Riesgo de exfiltración de credenciales: A pesar de la contenedorización y la gestión de identidades y accesos (IAM), una inyección de comandos sofisticada podría intentar leer las credenciales montadas (
~/.aws
) o las variables de entorno dentro del contenedor y exfiltrarlas (por ejemplo, mediantecurl
). Las políticas estrictas de IAM siguen siendo la defensa más importante para limitar el valor de las credenciales potencialmente exfiltradas.
5. Exposición de la red (Transporte SSE)
- Si se utiliza el transporte
sse
(que implica un receptor de red), asegúrese de vincular el servidor únicamente a interfaces de red confiables (p. ej.,localhost
) o implemente controles de seguridad de red adecuados (firewalls, servidores proxy de autenticación) si se expone de forma más amplia. El transportestdio
predeterminado no abre puertos de red.
6. Resumen de responsabilidad compartida
- AWS MCP Server proporciona la herramienta.
- Usted, el usuario, es responsable de:
- Ejecutarlo dentro del entorno Docker seguro recomendado.
- Proporcionar y administrar de forma segura credenciales de AWS con el mínimo privilegio .
- Garantizar que sólo los usuarios confiables interactúen con el servidor/cliente.
- Asegurar el entorno de red si corresponde.
Al adherirse estrictamente a la implementación de Docker y a la configuración meticulosa de privilegios mínimos de IAM, establece los controles operativos necesarios para usar el servidor AWS MCP de forma segura con su implementación actual.
Integración con Claude Desktop
Configuración
Para integrar manualmente AWS MCP Server con Claude Desktop:
- Localice el archivo de configuración de Claude Desktop :
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Ventanas:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- Edite el archivo de configuración para incluir el servidor AWS MCP:Copy
- Reinicie Claude Desktop para aplicar los cambios
- Después de reiniciar, debería ver un ícono de martillo 🔨 en la esquina inferior derecha del cuadro de entrada.
- Esto indica que el servidor AWS MCP está disponible para su uso.
Ejemplos de interacciones
Obtención de la documentación de AWS CLI :
Ejecución de comandos de AWS CLI :
Uso de canales de comando :
Acceso a recursos de AWS :
Uso de plantillas de indicaciones :
Plantillas de indicaciones disponibles
El servidor AWS MCP incluye las siguientes plantillas de solicitud predefinidas:
Operaciones principales
Inmediato | Descripción | Parámetros |
---|---|---|
create_resource | Genere comandos para crear recursos de AWS con las mejores prácticas | resource_type , resource_name |
resource_inventory | Crear un inventario completo de recursos | service , region (opcional) |
troubleshoot_service | Generar comandos para solucionar problemas de servicio | service , resource_id |
resource_cleanup | Identificar y limpiar de forma segura los recursos | service , criteria (opcional) |
Seguridad y cumplimiento
Inmediato | Descripción | Parámetros |
---|---|---|
security_audit | Auditar la configuración de seguridad para un servicio específico de AWS | service |
security_posture_assessment | Evaluación de seguridad integral en todo su entorno de AWS | Ninguno |
iam_policy_generator | Crear políticas de IAM con privilegios mínimos | service , actions , resource_pattern (opcional) |
compliance_check | Verificar el cumplimiento de las normas | compliance_standard , service (opcional) |
Costo y rendimiento
Inmediato | Descripción | Parámetros |
---|---|---|
cost_optimization | Encuentre oportunidades de optimización de costos para un servicio | service |
performance_tuning | Optimizar y ajustar el rendimiento de los recursos de AWS | service , resource_id |
Infraestructura y arquitectura
Inmediato | Descripción | Parámetros |
---|---|---|
serverless_deployment | Implemente aplicaciones sin servidor con las mejores prácticas | application_name , runtime (opcional) |
container_orchestration | Configurar entornos de contenedores (ECS/EKS) | cluster_name , service_type (opcional) |
vpc_network_design | Diseñar e implementar redes VPC seguras | vpc_name , cidr_block (opcional) |
infrastructure_automation | Automatizar la gestión de la infraestructura | resource_type , automation_scope (opcional) |
multi_account_governance | Implementar estrategias seguras de múltiples cuentas | account_type (opcional) |
Confiabilidad y Monitoreo
Inmediato | Descripción | Parámetros |
---|---|---|
service_monitoring | Establecer un seguimiento exhaustivo | service , metric_type (opcional) |
disaster_recovery | Implementar soluciones de recuperación ante desastres de nivel empresarial | service , recovery_point_objective (opcional) |
Seguridad
El servidor AWS MCP implementa un enfoque integral de múltiples capas para la validación y seguridad de comandos:
Sistema de validación de comandos
El servidor valida todos los comandos de AWS CLI a través de un sistema de tres capas:
- Estructura básica de mando :
- Verifica que los comandos comiencen con el prefijo 'aws' y contengan un servicio válido
- Garantiza la sintaxis de comando adecuada
- Filtrado de comandos centrado en la seguridad :
- Comandos peligrosos : bloquea comandos que podrían comprometer la seguridad
- Patrones seguros : permite explícitamente operaciones de solo lectura necesarias para el uso normal
- Coincidencia de patrones de expresiones regulares : previene riesgos de seguridad complejos con la coincidencia de patrones
- Seguridad del comando Pipe :
- Valida los comandos Unix utilizados en las tuberías
- Restringe los comandos a una lista de permitidos segura
- Evita la manipulación del sistema de archivos y la ejecución de comandos arbitrarios.
Configuración de seguridad predeterminada
La configuración de seguridad predeterminada se centra en prevenir los siguientes vectores de ataque:
1. Riesgos de la gestión de identidad y acceso (IAM)
Comando bloqueado | Riesgo de seguridad |
---|---|
aws iam create-user | Crea posibles cuentas de puerta trasera con acceso persistente |
aws iam create-access-key | Crea credenciales a largo plazo que pueden ser robadas o utilizadas indebidamente. |
aws iam attach-*-policy | Posible escalada de privilegios mediante adjuntos de políticas |
aws iam put-user-policy | Las políticas en línea pueden otorgar permisos excesivos |
aws iam create-policy | Creación de nuevas políticas con permisos potencialmente peligrosos |
aws iam create-login-profile | Crea contraseñas de consola para usuarios existentes |
aws iam deactivate-mfa-device | Desactiva la autenticación multifactor, lo que debilita la seguridad. |
aws iam update-assume-role-policy | Modifica las relaciones de confianza, lo que permite la escalada de privilegios. |
2. Auditoría y registro de manipulaciones
Comando bloqueado | Riesgo de seguridad |
---|---|
aws cloudtrail delete-trail | Elimina el registro de auditoría de la actividad de AWS |
aws cloudtrail stop-logging | Deja de recopilar registros de actividad y crear puntos ciegos. |
aws cloudtrail update-trail | Puede redirigir o modificar la configuración de registro |
aws config delete-configuration-recorder | Desactiva el registro de cambios de recursos de AWS Config |
aws guardduty delete-detector | Desactiva las capacidades de detección de amenazas |
3. Acceso y protección de datos sensibles
Comando bloqueado | Riesgo de seguridad |
---|---|
aws secretsmanager put-secret-value | Modifica credenciales sensibles |
aws secretsmanager delete-secret | Elimina credenciales confidenciales |
aws kms schedule-key-deletion | Programa la eliminación de claves de cifrado, con riesgo de pérdida de datos |
aws kms disable-key | Desactiva las claves de cifrado, lo que podría exponer los datos. |
aws s3api put-bucket-policy | Puede crear depósitos S3 públicos, exponiendo datos |
aws s3api delete-bucket-policy | Elimina las políticas de protección de los depósitos |
4. Riesgos de seguridad de la red
Comando bloqueado | Riesgo de seguridad |
---|---|
aws ec2 authorize-security-group-ingress | Abre el acceso a la red entrante, exposición potencial |
aws ec2 authorize-security-group-egress | Abre el acceso a la red saliente, lo que puede provocar una posible exfiltración de datos. |
aws ec2 modify-instance-attribute | Puede alterar las propiedades de seguridad de las instancias |
Muchas operaciones de solo lectura que coinciden con estos patrones están permitidas explícitamente a través de patrones seguros:
- Todos los comandos
get-
,list-
ydescribe-
- Todos los comandos de ayuda (
--help
,help
) - Comandos de simulación y prueba (por ejemplo,
aws iam simulate-custom-policy
)
Opciones de configuración
- Modos de seguridad :
strict
(predeterminado): aplica todas las validaciones de seguridadpermissive
: registra advertencias pero permite la ejecución (úselo con precaución)
- Configuración personalizada :
- Anular las reglas de seguridad predeterminadas mediante el archivo de configuración YAML
- Configurar comandos peligrosos específicos del servicio
- Definir patrones seguros personalizados y reglas de expresiones regulares
- Variable de entorno:
AWS_MCP_SECURITY_CONFIG
- Controles de ejecución :
- Los tiempos de espera evitan la ejecución prolongada de comandos (valor predeterminado: 300 segundos)
- Los límites de tamaño de salida evitan problemas de memoria
- Variables de entorno:
AWS_MCP_TIMEOUT
,AWS_MCP_MAX_OUTPUT
Ejemplo de reglas de seguridad personalizadas
Puede crear reglas de seguridad personalizadas definiendo un archivo de configuración YAML:
Ejemplos de seguridad
El sistema sigue las mejores prácticas de IAM, centrándose en prevenir la escalada de privilegios:
Mejores prácticas de seguridad
- Utilice siempre el modo de seguridad
strict
predeterminado en producción - Siga las recomendaciones de implementación en Consideraciones de seguridad
- Ejecutar con credenciales de AWS con privilegios mínimos
- Para configuraciones personalizadas, concéntrese en sus requisitos de seguridad
Desarrollo
Configuración del entorno de desarrollo
Comandos de Makefile
El proyecto incluye un Makefile con varios objetivos para tareas comunes:
Para obtener una lista completa de los comandos disponibles, ejecute make help
.
Cobertura del código
El proyecto incluye la configuración para que Codecov monitoree las métricas de cobertura de código. La configuración se encuentra en el archivo codecov.yml
, que:
- Establece un umbral de cobertura objetivo del 80%
- Excluye archivos de prueba, archivos de configuración y documentación de los informes de cobertura
- Configura comentarios de PR y comprobaciones de estado
Los informes de cobertura se generan automáticamente durante las ejecuciones de CI/CD y se cargan en Codecov.
Pruebas de integración
Las pruebas de integración verifican que el servidor de AWS MCP funcione correctamente con los recursos de AWS. Para ejecutarlas:
- Configurar recursos de AWS :
- Crear un bucket S3 para realizar pruebas
- Establezca la variable de entorno:
export AWS_TEST_BUCKET=your-test-bucket-name
- Asegúrese de que sus credenciales de AWS estén configuradas
- Ejecutar pruebas de integración :Copy
O puedes ejecutar los comandos de pytest directamente:
Solución de problemas
- Problemas de autenticación : asegúrese de que sus credenciales de AWS estén configuradas correctamente
- Errores de conexión : Verifique que el servidor esté ejecutándose y que la configuración de conexión del asistente de IA sea correcta
- Errores de permisos : Verifique que sus credenciales de AWS tengan los permisos necesarios
- Errores de tiempo de espera : para comandos de ejecución prolongada, aumente la variable de entorno
AWS_MCP_TIMEOUT
¿Por qué implementar con Docker?
Implementar AWS MCP Server a través de Docker es el enfoque recomendado, que ofrece importantes ventajas de seguridad y confiabilidad que forman el núcleo del patrón de uso seguro de la herramienta:
Beneficios de seguridad
- Aislamiento (Mitigación primaria): El contenedor Docker proporciona un aislamiento esencial del sistema de archivos y de los procesos. Los comandos de AWS CLI y las utilidades Unix canalizadas se ejecutan en un entorno contenido. Los comandos accidentales o mal utilizados que afecten al sistema de archivos se limitan al contenedor, lo que protege el equipo host .
- Acceso controlado a credenciales: al montar credenciales, el uso del indicador
:ro
(solo lectura) limita la capacidad del contenedor para modificar los archivos de configuración de AWS. - Sin instalación local: evita instalar la AWS CLI y sus dependencias directamente en su sistema host.
- Entorno limpio: cada ejecución de contenedor comienza con un estado limpio conocido.
Ventajas de confiabilidad
- Configuración consistente : todas las herramientas necesarias (AWS CLI, complemento SSM, jq) están preinstaladas y configuradas correctamente
- Gestión de dependencias : evite conflictos de versiones entre herramientas y dependencias
- Coherencia entre plataformas : funciona de la misma manera en diferentes sistemas operativos.
- Entorno completo : incluye todas las herramientas necesarias para canales de comandos, filtrado y formato.
Otros beneficios
- Compatibilidad con múltiples arquitecturas : funciona en procesadores Intel/AMD (x86_64) y ARM (Apple Silicon, AWS Graviton)
- Actualizaciones simples : actualice a nuevas versiones con un solo comando de extracción
- Sin conflictos con el entorno de Python : evita posibles conflictos con otras aplicaciones de Python en su sistema
- Fijación de versiones : fije fácilmente a versiones específicas para lograr estabilidad en entornos de producción
Control de versiones
Este proyecto utiliza setuptools_scm para determinar automáticamente las versiones según las etiquetas de Git:
- Versiones de lanzamiento : cuando existe una etiqueta Git (por ejemplo,
1.2.3
), la versión será exactamente esa etiqueta - Versiones de desarrollo : Para las confirmaciones sin etiquetas, se genera una versión de desarrollo con el formato:
<last-tag>.post<commits-since-tag>+g<commit-hash>.d<date>
(por ejemplo,1.2.3.post10+gb697684.d20250406
)
La versión se incluye automáticamente en:
- Información de la versión del paquete
- Etiquetas de imágenes de Docker
- Construcciones de integración continua
Creación de lanzamientos
Para crear una nueva versión de lanzamiento:
La canalización CI/CD creará y publicará automáticamente imágenes de Docker con las etiquetas de versión adecuadas.
Para obtener información más detallada sobre el sistema de gestión de versiones, consulte VERSION.md .
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.
This server cannot be installed
Un servicio liviano que permite a los asistentes de IA ejecutar comandos de AWS CLI a través del Protocolo de contexto de modelo (MCP), lo que permite que las herramientas de IA recuperen documentación de AWS e interactúen con los servicios de AWS.