AWS多云平台服务器

AWS MCP Server是一个Docker化的HTTP服务器,通过JavaScript工具集暴露AWS SDK功能,提供标准化的AWS服务HTTP访问接口。

  • by matthabermehl
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 matthabermehl/aws-mcp-server

使用说明

AWS MCP(多云平台)服务器

概述

AWS MCP服务器是一个Docker化的HTTP服务器,旨在通过一系列基于JavaScript的工具公开各种AWS SDK功能。其主要目的是通过向动态生成的API端点发出HTTP请求,提供一种标准化和可访问的方式来与AWS服务交互。每个端点对应于中定义的特定AWS服务操作 tools/ 目录。

快速开始

先决条件

  • 码头工人 和 Docker Compose 安装
  • AWS凭据 具有适当的权限

基本设置

  1. 克隆并导航到存储库
  2. 创建环境文件:
    cp .env.example .env
    # Edit .env with your AWS credentials
    
  3. 启动服务器:
    docker-compose up -d
    
  4. 测试服务器:
    curl http://localhost:3000/routes
    

部署选项

选项1:独立外部访问(默认)

从Docker外部直接访问:

# In docker-compose.yml, uncomment the ports section:
ports:
  - "3000:3000"

docker-compose up -d

访问地址: http://localhost:3000

选项2:仅限内部Docker网络

为了与其他容器化服务(如n8n、自动化工具)集成:

# Set custom network in .env file
echo "DOCKER_NETWORK=your_network_name" >> .env

# Create or use existing network
docker network create your_network_name

# Start without external ports (default configuration)
docker-compose up -d

从其他容器进入: http://aws-mcp-server:3000

选项3:与现有的Docker Compose堆栈集成

添加到现有 docker-compose.yml:

services:
  aws-mcp-server:
    image: your-registry/aws-mcp-server  # or build: path/to/aws-mcp-server
    container_name: aws-mcp-server
    env_file:
      - path/to/aws-mcp-server/.env
    networks:
      - your_existing_network
    expose:
      - "3000"

环境变量

创建一个 .env 包含以下变量的文件:

# Required AWS credentials
AWS_ACCESS_KEY_ID=your_aws_access_key_id_here
AWS_SECRET_ACCESS_KEY=your_aws_secret_access_key_here
AWS_DEFAULT_REGION=us-east-1

# Optional: For temporary credentials
# AWS_SESSION_TOKEN=your_session_token

# Server configuration
PORT=3000

# Docker network (optional)
# DOCKER_NETWORK=your_custom_network_name

AWS凭据选项

  1. IAM用户:创建具有所需权限的专用IAM用户
  2. IAM角色:使用EC2实例配置文件或ECS任务角色
  3. 临时凭据:使用带有会话令牌的STS假定角色
  4. AWS CLI配置文件:安装 ~/.aws 目录(不建议用于生产)

可用的AWS服务

服务器提供 116工具 通过这些AWS服务:

  • CloudWatch日志 (9个工具)-日志管理和查询
  • CloudTrail 的 (2个工具)-API调用审核
  • 配置服务 (19个工具)-资源配置跟踪
  • EC2 (16个工具)-虚拟机管理
  • 弹性计算服务 (10个工具)-容器编排
  • 警卫职责 (10个工具)-威胁检测
  • 健康客户端 (6个工具)-服务健康监测
  • 国际机械师协会 (13个工具)-身份和访问管理
  • 拉姆达 (12个工具)-无服务器功能
  • 53号公路 (3个工具)-DNS管理
  • 第3页 (11个工具)-对象存储
  • 单一监管机制 (5个工具)-系统管理

API使用

发现可用工具

curl http://localhost:3000/routes

调用AWS工具

所有工具都使用POST请求 /tools/{service}/{tool}:

# List S3 buckets
curl -X POST http://localhost:3000/tools/s3/ListBuckets \
  -H "Content-Type: application/json" \
  -d '{"region": "us-east-1"}'

# Describe EC2 instances
curl -X POST http://localhost:3000/tools/ec2/DescribeInstances \
  -H "Content-Type: application/json" \
  -d '{
    "region": "us-east-1",
    "instanceIds": ["i-1234567890abcdef0"]
  }'

集成示例

使用n8n工作流自动化

  1. 在同一个Docker网络上部署这两个服务
  2. 在n8n中使用HTTP请求节点
  3. 将URL设置为 http://aws-mcp-server:3000/tools/{service}/{tool}

使用自定义应用程序

// Example: List S3 buckets from Node.js
const response = await fetch('http://aws-mcp-server:3000/tools/s3/ListBuckets', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ region: 'us-east-1' })
});
const buckets = await response.json();

使用CI/CD管道

# Example: GitHub Actions
- name: Check AWS Resources
  run: |
    curl -X POST http://aws-mcp-server:3000/tools/ec2/DescribeInstances \
      -H "Content-Type: application/json" \
      -d '{"region": "us-east-1"}'

安全考虑

  • 网络隔离:使用内部Docker网络进行生产
  • 凭据管理:尽可能使用IAM角色而不是访问密钥
  • 访问控制:如果需要,实施身份验证/授权层
  • 监控:启用CloudTrail以监控API使用情况

发展

从源头构建

git clone <repository-url>
cd aws-mcp-server
docker build -t aws-mcp-server .

地方发展

npm install
cp .env.example .env
# Edit .env with your credentials
npm start

添加新工具

  1. 在中创建新的工具类 tools/ 目录
  2. 遵循现有模式进行参数验证
  3. 服务模块中的导出工具
  4. 重新启动服务器以加载新工具

故障排除

常见问题

  1. 容器无法启动:检查 .env 文件存在并且具有有效的AWS凭据
  2. 网络连接:确保容器位于同一Docker网络上
  3. AWS权限:验证IAM用户/角色是否具有所需权限
  4. 端口冲突:如果3000正在使用中,请更改PORT环境变量

调试

# View container logs
docker logs aws-mcp-server

# Test network connectivity from another container
docker exec other-container curl http://aws-mcp-server:3000/routes

# Validate AWS credentials
docker exec aws-mcp-server aws sts get-caller-identity

贡献

  1. 分叉存储库
  2. 创建特征分支
  3. 添加新功能的测试
  4. 提交拉取请求

许可证

[在此处添加您的许可证信息]