See it in action! Here's how easy it is to spin up a full-blown EC2 setup — VPC, subnets, security groups, this works — all through natural language prompts to an AI Model Context Protocol (MCP) server.
Currently supports
- RDS
- S3
- EC2
- VPC
- Subnet
- Internet Gateway
- Route Table
- Security Group
- Key Pair
- Instance Tag
- AMI
More AWS services (like Lambda, API Gateway, etc.) coming soon! Contributions welcome 🚀
For Development:
- Node.js >= 18.0.0
- pnpm >= 10.0.0
For Docker Deployment:
- Docker and Docker Compose
For Both:
- AWS Account with AWS credentials (Access Key ID and Secret Access Key)
git clone https://github.com/lokeswaran-aj/aws-mcp.git
cd aws-mcp
❗️Currently, the server reads credentials from MCP configuration headers. In future versions, we'll support AWS Role ARN.
pnpm install
💡 Make sure you have
pnpm
installed globally. If not:npm install -g pnpm
pnpm dev
Option 1: Using Docker Compose (Recommended)
docker-compose up -d
Option 2: Using Docker directly
# Build the image
docker build -t aws-mcp .
# Run with port mapping
docker run -d --name aws-mcp-server -p 8080:8080 aws-mcp
The server will be available at:
- MCP HTTP Stream:
http://localhost:8080/mcp
- MCP SSE:
http://localhost:8080/sse
# 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
💡 AWS credentials are still passed via HTTP headers (same as development setup). No container configuration needed.
To use this server with Cursor, add the following to your ~/.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"
}
}
}
}
❗️ Use
http://localhost:8080/mcp
if your client supports HTTP streamable(For eg: Cursor). Usehttp://localhost:8080/sse
if your client supports only SSE(For eg: Windsurf).
MCP HTTP streamable endpoint: http://localhost:8080/mcp
MCP SSE endpoint: http://localhost:8080/sse
.
├── 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
- Support RDS (Create, List, Update, Delete)
- Add S3 tools
- Add Network tools
- Add EC2 tools
- Add Lambda tools
- Add API Gateway tools
- Add IAM tools
- Add ECS tools
Want to help make AWS infra chat-native? Pull requests, feedback, and feature suggestions are welcome!
- Clone and fork the repo
- Create your feature branch (
git checkout -b feat/add-ec2
) - Commit and push
- Open a PR 🙌
MIT — do what you want, just give credit where it's due. ✌️