使用说明
AWS MCP服务器
与AWS CLI类似的连接到AWS帐户的服务器。
特性
- 使用凭据连接到AWS帐户
- 支持多种AWS服务
- 类似于AWS CLI的凭据管理
- 基于配置文件的配置
文件夹结构
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
设置
- 安装依赖项:
npm install
-
配置AWS凭据:
- 创建一个
.env文件基于.env.example - 或使用AWS凭据文件
~/.aws/credentials
- 创建一个
-
设置Git挂钩以防止提交机密:
./scripts/setup-git-hooks.sh
- 启动服务器:
npm start
配置
服务器支持多种配置AWS凭据的方法:
- 环境变量
- AWS凭据文件(~/.AWS/凭据)
- AWS配置文件(~/.AWS/config)
- 实例配置文件(在EC2上运行时)
临时凭据
如果您使用的是临时AWS凭据(访问密钥ID以“ASIA”开头),请确保在您的 .env 文件:
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_SESSION_TOKEN=your_session_token
AWS_REGION=your_region
安全
该项目包括几种安全措施,以防止意外暴露凭据:
.gitignore:配置为排除.env文件、密钥、证书和其他敏感文件- Git挂钩:预提交钩子,用于检查代码库中的潜在秘密
- 机密检查器:用于扫描潜在硬编码秘密的脚本
要手动运行机密检查,请执行以下操作:
./scripts/check-secrets.sh
用法
服务器公开REST API以与AWS服务交互:
S3操作
GET /api/s3/buckets-列出所有S3存储桶GET /api/s3/buckets/:bucket/objects-列出bucket中的对象POST /api/s3/buckets/:bucket/objects-将对象上传到bucketDELETE /api/s3/buckets/:bucket/objects/:key-从bucket中删除对象
EC2操作
GET /api/ec2/instances-列出所有EC2实例GET /api/ec2/instances/:instanceId-获取EC2实例详细信息POST /api/ec2/instances/:instanceId/start-启动EC2实例POST /api/ec2/instances/:instanceId/stop-停止EC2实例
Lambda操作
GET /api/lambda/functions-列出所有Lambda函数GET /api/lambda/functions/:functionName-获取Lambda函数详细信息POST /api/lambda/functions/:functionName/invoke-调用Lambda函数PATCH /api/lambda/functions/:functionName/configuration-更新Lambda函数配置
与AWS MCP服务器交互的方法:
-
从命令行使用curl:
# 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 -
使用像Postman这样的REST客户端:
- 设置对端点的请求,如:
- 获取http://localhost:3000/api/s3/buckets
- 获取http://localhost:3000/api/ec2/instances
- 发布http://localhost:3000/api/lambda/functions/my-函数/调用(带JSON正文)
- 设置对端点的请求,如:
-
使用网络浏览器 (仅适用于GET请求):
- 引导到http://localhost:3000/health检查服务器是否正在运行
- 引导到http://localhost:3000/api/s3/buckets查看您的S3存储桶
-
构建前端应用程序:
- 您可以创建一个前端应用程序来调用此服务器的API
- 这将为您提供一个类似于AWS管理控制台的GUI
AWS凭据故障排除:
如果您在使用AWS凭据时遇到问题,以下是一些选项:
-
用于临时凭据(访问密钥以ASIA开头):
- 确保在.env文件中包含AWS_SESSION_TOKEN
- 这些凭据通常在几个小时后过期
-
使用长期凭据(访问密钥以AKIA开头):
- 这些不需要会话令牌
- 小心这些凭据,永远不要将其提交给版本控制
-
使用AWS CLI配置文件:
- 如果您已配置AWS CLI,则可以使用配置文件:
AWS_PROFILE=your-profile-name- 从.env中删除AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY
-
如果在EC2上运行,请使用IAM角色:
- 如果将其部署到具有IAM角色的EC2实例,则不需要指定凭据
发展
npm run dev
测试
npm test