AWS
STREAMABLE HTTPHTTP-SSEMCP server for AWS infrastructure deployment through natural language prompts.
MCP server for AWS infrastructure deployment through natural language prompts.
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
More AWS services (like Lambda, API Gateway, etc.) coming soon! Contributions welcome 🚀
For Development:
For Docker Deployment:
For Both:
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
pnpminstalled 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:
http://localhost:8080/mcphttp://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/mcpif your client supports HTTP streamable(For eg: Cursor). Usehttp://localhost:8080/sseif 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
Want to help make AWS infra chat-native? Pull requests, feedback, and feature suggestions are welcome!
git checkout -b feat/add-ec2)MIT — do what you want, just give credit where it's due. ✌️