AWS MCP

Una interfaz de lenguaje natural para gestionar servicios de AWS como RDS, S3, EC2 y VPC.

Documentación

demo

🎬 Demo

¡Míralo en acción! Así de fácil es poner en marcha una configuración completa de EC2 — VPC, subredes, grupos de seguridad, todo funciona — mediante indicaciones en lenguaje natural a un servidor de Protocolo de Contexto de Modelo (MCP) de IA.

demo

✨ Características

Actualmente admite

  1. RDS
  2. S3
  3. EC2
  4. VPC
  5. Subnet
  6. Internet Gateway
  7. Route Table
  8. Security Group
  9. Key Pair
  10. Instance Tag
  11. AMI

¡Más servicios de AWS (como Lambda, API Gateway, etc.) próximamente! ¡Contribuciones bienvenidas 🚀


📋 Requisitos previos

Para desarrollo:

  • Node.js >= 18.0.0
  • pnpm >= 10.0.0

Para implementación con Docker:

  • Docker y Docker Compose

Para ambos:

  • Cuenta de AWS con credenciales de AWS (Access Key ID y Secret Access Key)

⚙️ Configuración para desarrolladores

1. Clonar el repositorio

git clone https://github.com/lokeswaran-aj/aws-mcp.git
cd aws-mcp

❗️Actualmente, el servidor lee las credenciales de los encabezados de configuración de MCP. En versiones futuras, admitiremos AWS Role ARN.

2. Instalar dependencias

pnpm install

💡 Asegúrate de tener pnpm instalado globalmente. Si no:

npm install -g pnpm

3. Ejecutar el servidor de desarrollo

pnpm dev

🐳 Implementación con Docker

Inicio rápido con Docker

Opción 1: Usar Docker Compose (Recomendado)

docker-compose up -d

Opción 2: Usar Docker directamente

# Build the image
docker build -t aws-mcp .

# Run with port mapping
docker run -d --name aws-mcp-server -p 8080:8080 aws-mcp

El servidor estará disponible en:

  • MCP HTTP Stream: http://localhost:8080/mcp
  • MCP SSE: http://localhost:8080/sse

Gestión de contenedores Docker

# View logs
docker-compose logs -f

# Stop container
docker-compose down

# Rebuild and restart
docker-compose build --no-cache && docker-compose up -d

# Stop aws-mcp-server and remove container
docker stop aws-mcp-server && docker rm aws-mcp-server

💡 Las credenciales de AWS se siguen pasando a través de los encabezados HTTP (igual que en la configuración de desarrollo). No se necesita configuración de contenedor.


🧪 Ejemplo: Configuración de Cursor

Para usar este servidor con Cursor, agrega lo siguiente a tu ~/.cursor/mcp.json:

{
  "mcpServers": {
    "aws": {
      "serverUrl": "http://localhost:8080/mcp",
      "headers": {
        "AWS_ACCESS_KEY_ID": "YOUR_AWS_ACCESS_KEY_ID",
        "AWS_SECRET_ACCESS_KEY": "YOUR_AWS_SECRET_ACCESS_KEY",
        "AWS_SESSION_TOKEN": "YOUR_AWS_SESSION_TOKEN"
      }
    }
  }
}

❗️ Usa http://localhost:8080/mcp si tu cliente admite HTTP streamable (por ejemplo: Cursor). Usa http://localhost:8080/sse si tu cliente admite solo SSE (por ejemplo: Windsurf).

Endpoint HTTP streamable de MCP: http://localhost:8080/mcp

Endpoint SSE de MCP: http://localhost:8080/sse


📁 Estructura del proyecto

.
├── src/
│   ├── server.ts             # AWS MCP server setup - Entry point
│   ├── aws-clients.ts        # AWS SDK client setup
│   ├── config/               # App configuration
│   ├── tools/                # Tools definitions
│   │   ├── rds/              # RDS operations
│   │   ├── s3/               # S3 operations
│   │   ├── ec2/              # EC2 operations
│   │   ├── vpc/              # VPC operations
│   │   ├── subnet/           # Subnet operations
│   │   ├── internet-gateway/ # Internet Gateway operations
│   │   ├── route-table/      # Route Table operations
│   │   ├── security-group/   # Security Group operations
│   │   ├── key-pair/         # Key Pair operations
│   │   ├── instance-tag/     # Instance Tag operations
│   │   ├── ami/              # AMI operations
│   ├── schema/               # Tool input schemas
│   ├── types/                # TypeScript definitions
│   └── utils/                # Helper functions
├── package.json              # Dependencies and scripts
└── README.md                 # This file

📌 Hoja de ruta

  • Soporte para RDS (Crear, Listar, Actualizar, Eliminar)
  • Añadir herramientas de S3
  • Añadir herramientas de red
  • Añadir herramientas de EC2
  • Añadir herramientas de Lambda
  • Añadir herramientas de API Gateway
  • Añadir herramientas de IAM
  • Añadir herramientas de ECS

🤝 Contribuciones

¿Quieres ayudar a hacer que la infraestructura de AWS sea nativa del chat? ¡Las solicitudes de extracción, los comentarios y las sugerencias de funciones son bienvenidos!

  • Clona y haz un fork del repositorio
  • Crea tu rama de características (git checkout -b feat/add-ec2)
  • Haz commit y push
  • Abre un PR 🙌

📄 Licencia

MIT — haz lo que quieras, solo da crédito donde corresponde. ✌️


⚡ Impulsado por