About AWS MCP Server
AWS MCP Server connects to AWS accounts using credential and profile options similar to AWS CLI. It is for users who need to access S3, EC2, and Lambda operations through its REST APIs.
Key features
- 01Connect with AWS credentials
- 02Configure credentials by profile
- 03Manage S3 buckets and objects
- 04Inspect and control EC2 instances
- 05Manage and invoke Lambda functions
- 06Scan for exposed secrets
Use cases
- 01List or upload S3 objects
- 02Start or stop EC2 instances
- 03Inspect or invoke Lambda functions
- 04Check a codebase for potential secrets
MCP support
The project identifies itself as an MCP server, but the README describes REST API endpoints rather than specifying tools or other capabilities exposed to MCP clients.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEAWS MCP Server
A server that connects to AWS accounts similar to AWS CLI.
Features
- Connect to AWS accounts using credentials
- Support for multiple AWS services
- Credential management similar to AWS CLI
- Profile-based configuration
Folder Structure
src/aws-mcp-server/
├── .env.example # Example environment variables
├── .gitignore # Git ignore file
├── README.md # Documentation
├── package.json # Project dependencies
└── src/ # Source code
├── config/ # Configuration files
│ └── aws-config.js # AWS SDK configuration
├── core/ # Core functionality (empty for now)
├── index.js # Main entry point
├── services/ # AWS service implementations
│ ├── ec2.js # EC2 service endpoints
│ ├── lambda.js # Lambda service endpoints
│ └── s3.js # S3 service endpoints
└── utils/ # Utility functions
├── logger.js # Logging utility
└── session-manager.js # AWS session management
Setup
- Install dependencies:
npm install
-
Configure AWS credentials:
- Create a
.envfile based on.env.example - Or use AWS credentials file at
~/.aws/credentials
- Create a
-
Set up Git hooks to prevent committing secrets:
./scripts/setup-git-hooks.sh
- Start the server:
npm start
Configuration
The server supports multiple ways to configure AWS credentials:
- Environment variables
- AWS credentials file (~/.aws/credentials)
- AWS config file (~/.aws/config)
- Instance profiles (when running on EC2)
Temporary Credentials
If you're using temporary AWS credentials (Access Key ID starting with 'ASIA'), make sure to include the session token in your .env file:
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_SESSION_TOKEN=your_session_token
AWS_REGION=your_region
Security
This project includes several security measures to prevent accidental exposure of credentials:
.gitignore: Configured to exclude.envfiles, keys, certificates, and other sensitive files- Git Hooks: Pre-commit hook to check for potential secrets in the codebase
- Secrets Checker: Script to scan for potential hardcoded secrets
To run the secrets check manually:
./scripts/check-secrets.sh
Usage
The server exposes REST APIs to interact with AWS services:
S3 Operations
GET /api/s3/buckets- List all S3 bucketsGET /api/s3/buckets/:bucket/objects- List objects in a bucketPOST /api/s3/buckets/:bucket/objects- Upload an object to a bucketDELETE /api/s3/buckets/:bucket/objects/:key- Delete an object from a bucket
EC2 Operations
GET /api/ec2/instances- List all EC2 instancesGET /api/ec2/instances/:instanceId- Get EC2 instance detailsPOST /api/ec2/instances/:instanceId/start- Start an EC2 instancePOST /api/ec2/instances/:instanceId/stop- Stop an EC2 instance
Lambda Operations
GET /api/lambda/functions- List all Lambda functionsGET /api/lambda/functions/:functionName- Get Lambda function detailsPOST /api/lambda/functions/:functionName/invoke- Invoke a Lambda functionPATCH /api/lambda/functions/:functionName/configuration- Update Lambda function configuration
Ways to Interact with the AWS MCP Server:
-
Using curl from the command line:
# List S3 buckets curl http://localhost:3000/api/s3/buckets # List EC2 instances curl http://localhost:3000/api/ec2/instances # List Lambda functions curl http://localhost:3000/api/lambda/functions -
Using a REST client like Postman:
- Set up requests to the endpoints like:
-
Using a web browser (for GET requests only):
- Navigate to http://localhost:3000/health to check if the server is running
- Navigate to http://localhost:3000/api/s3/buckets to see your S3 buckets
-
Building a frontend application:
- You can create a frontend application that makes API calls to this server
- This would give you a GUI similar to the AWS Management Console
Troubleshooting AWS Credentials:
If you're having issues with AWS credentials, here are some options:
-
For temporary credentials (Access Key starting with ASIA):
- Make sure to include the AWS_SESSION_TOKEN in your .env file
- These credentials typically expire after a few hours
-
Use long-term credentials (Access Key starting with AKIA):
- These don't require a session token
- Be careful with these credentials and never commit them to version control
-
Use AWS CLI profiles:
- If you have AWS CLI configured, you can use a profile:
AWS_PROFILE=your-profile-name- Remove the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY from .env
-
Use IAM roles if running on EC2:
- If you deploy this to an EC2 instance with an IAM role, you don't need to specify credentials
Development
npm run dev
Testing
npm test
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.