A

AWS CLI助手

@alexei-led/aws-mcp-server
0 Stars 364 次浏览 alexei-led 更新于 2026-08-23

一种轻量级服务,通过模型上下文协议(MCP)使人工智能助手能够执行AWS CLI命令,允许人工智能工具检索AWS文档并 interacts 与AWS服务进行交互。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "aws-mcp-server": {
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/Users/YOUR_USER_NAME/.aws:/home/appuser/.aws:ro",
        "ghcr.io/alexei-led/aws-mcp-server:latest"
      ],
      "command": "docker"
    }
  }
}

服务介绍

AWS Model Context Protocol (MCP) 服务器

CI
代码覆盖率

镜像标签
镜像大小

一个轻量级的服务,通过模型上下文协议(MCP)使AI助手能够执行AWS CLI命令。

概述

AWS MCP 服务器在支持MCP的AI助手(如Claude Desktop、Cursor、Windsurf)和AWS CLI之间提供了一个桥梁。它使这些助手能够:

  1. 检索AWS CLI文档 (aws_cli_help) - 获取有关AWS服务和命令的详细帮助
  2. 执行AWS CLI命令 (aws_cli_pipeline) - 使用Unix管道运行命令,并接收优化后的格式化结果以供AI使用
flowchart LR
    AI[AI Assistant] <-->|MCP Protocol| Server[AWS MCP Server]
    Server <-->|Subprocess| AWS[AWS CLI]
    AWS <-->|API| Cloud[AWS Cloud]

演示

演示

视频展示了如何使用Claude Desktop与AWS MCP Server创建一个新的安装了AWS SSM代理的AWS EC2实例。

特性

  • 命令文档 - 详细的AWS CLI命令帮助信息
  • 命令执行 - 执行AWS CLI命令并返回人类可读的结果
  • Unix管道支持 - 使用标准Unix管道和工具过滤和转换AWS CLI输出
  • AWS资源上下文 - 通过MCP资源访问AWS配置文件、区域、账户信息和环境详情
  • 提示模板 - 遵循最佳实践的常见AWS任务预定义提示模板
  • Docker集成 - 通过容器化进行简单部署,并支持多架构(AMD64/x86_64 和 ARM64)
  • AWS身份验证 - 利用主机上的现有AWS凭证

要求

  • Docker(默认)或Python 3.13+(以及本地安装的AWS CLI)
  • 配置好的AWS凭证

开始使用

注意: 为了安全性和可靠性,强烈建议在Docker容器中运行服务器。请参阅安全注意事项部分了解重要事项。

运行服务器选项1:使用Docker(推荐)

# Clone repository
git clone https://github.com/alexei-led/aws-mcp-server.git
cd aws-mcp-server

# Build and run Docker container
docker compose -f deploy/docker/docker-compose.yml up -d

Docker镜像支持AMD64/x86_64(Intel/AMD)和ARM64(Apple Silicon M1-M4, AWS Graviton)架构。

注意:来自 GitHub Packages 的官方镜像支持多架构,并会自动为您的系统使用合适的版本。

# 使用最新的稳定版本
docker pull ghcr.io/alexei-led/aws-mcp-server:latest

# 或者固定到特定版本(推荐用于生产环境)
docker pull ghcr.io/alexei-led/aws-mcp-server:1.0.0

Docker 镜像标签

  • latest:最新稳定版本
  • x.y.z(例如,1.0.0):特定版本
  • sha-<commit-sha>:开发构建版本,标记为 Git 提交 SHA(例如,sha-gb697684

运行服务器选项 2:使用 Python

谨慎使用:直接运行需要仔细设置环境,并且与推荐的 Docker 部署相比具有更高的安全风险。确保您理解了安全注意事项部分中概述的影响。

# Clone repository
git clone https://github.com/alexei-led/aws-mcp-server.git
cd aws-mcp-server

# Set up virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in development mode
pip install -e .

# Run the server
python -m aws_mcp_server

配置

AWS MCP 服务器可以通过环境变量进行配置:

环境变量 描述 默认值
AWS_MCP_TIMEOUT 命令执行超时时间(秒) 300
AWS_MCP_MAX_OUTPUT 最大输出大小(字符数) 100000
AWS_MCP_TRANSPORT 使用的传输协议 ("stdio" 或 "sse") stdio
AWS_PROFILE 使用的 AWS 配置文件 default
AWS_REGION 使用的 AWS 区域 us-east-1

重要:安全地管理提供给服务器的 AWS 凭证,无论是通过挂载的 ~/.aws 文件还是环境变量。确保凭证遵循最小权限原则,如安全注意事项部分所述。当通过 Docker 运行时,请确保这些变量正确传递到容器环境(例如,使用 docker run -e VAR=value ...)。

安全注意事项

在针对您的 AWS 环境执行命令时,安全性至关重要。虽然 AWS MCP 服务器提供了功能,但您负责安全地配置和运行它。请严格遵守以下几点:

1. 推荐部署:Docker 容器

  • 隔离:在 Docker 容器内运行服务器是强烈推荐和默认的部署方法。容器化提供了关键的文件系统和进程隔离。即使误用,通过管道执行的潜在破坏性 Unix 命令(如 rmmv)也只会在临时的 Docker 环境中生效,而不会影响主机文件系统。容器可以轻松停止并重新创建。
  • 受控环境:Docker 确保了一致的环境,减少了意外行为。

2. AWS 凭证和 IAM 最小权限(关键)

  • 用户责任: 您需要向服务器提供 AWS 凭证(通过挂载的 ~/.aws 或环境变量)。
  • 最小权限至关重要: 服务器将使用您提供的凭证执行 AWS CLI 命令。这些凭证必须属于一个配置了仅执行您打算通过此工具进行的 AWS 操作所需的最小必要权限(最小权限)的 IAM 主体(用户或角色)。这一点绝对关键
    • 不要使用根账户凭证: 绝对不要使用 AWS 账户的根用户凭证。
    • 定期审查权限: 定期审核与凭证关联的 IAM 权限。
  • 影响限制: 正确配置的 IAM 权限是限制通过服务器执行的任何命令(无论是有意还是无意)潜在影响的主要机制。即使命令被篡改,它也只能执行由特定 IAM 策略允许的操作。

3. 受信任用户模型

  • 服务器假设与 MCP 客户端(例如 Claude Desktop, Cursor)交互的最终用户是同一受信任的个人,该个人配置了服务器并提供了最小权限的 AWS 凭证。不要将服务器或连接的客户端暴露给不受信任的用户。

4. 理解执行风险(当前实现)

  • 命令执行: 当前实现利用 shell 功能(在 subprocess 调用中设置 shell=True)来执行 AWS 命令并处理 Unix 管道。虽然方便,但如果输入命令字符串被篡改(命令注入),这种方法存在固有风险。
  • 通过操作控制缓解风险:受信任用户模型Docker 部署的背景下,这些风险通过以下方式得到操作上的缓解:
    • 假设受信任用户不会故意对自己环境执行恶意命令。
    • Docker 包含文件系统副作用。
    • 最关键的是,IAM 最小权限限制了可以执行的任何 AWS 操作的范围。
  • 凭据泄露风险: 尽管采用了容器化和 IAM,但复杂的命令注入仍可能尝试读取挂载的凭据(~/.aws)或容器内的环境变量,并将其泄露(例如,通过 curl)。严格的 IAM 策略仍然是限制潜在泄露凭据价值的最重要防御措施

5. 网络暴露(SSE 传输)

  • 如果使用 sse 传输(这意味着网络监听器),请确保只将服务器绑定到受信任的网络接口(例如 localhost),或者如果更广泛地暴露,则实施适当的网络安全控制(防火墙、身份验证代理)。默认的 stdio 传输不打开网络端口。

6. 共同责任总结

  • AWS MCP Server 提供了该工具。
  • 您,作为用户,需要负责:
    • 在推荐的安全 Docker 环境中运行它。
    • 提供并安全地管理最小权限的 AWS 凭证。
    • 确保只有受信任的用户与服务器/客户端交互。
    • 如适用,确保网络环境的安全。

通过严格遵循 Docker 部署和细致的 IAM 最小权限配置,您可以为当前实现中的 AWS MCP Server 的安全使用建立必要的操作控制。

与 Claude Desktop 集成

配置

要手动将 AWS MCP Server 与 Claude Desktop 集成:

  1. 定位 Claude Desktop 配置文件

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. 编辑配置文件以包含 AWS MCP Server:

    {
      "mcpServers": {
        "aws-mcp-server": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "-v",
            "/Users/YOUR_USER_NAME/.aws:/home/appuser/.aws:ro",
            "ghcr.io/alexei-led/aws-mcp-server:latest"
          ]
        }
      }
    }
    
  3. 重启 Claude Desktop 以应用更改

    • 重启后,您应该会在输入框右下角看到一个锤子 🔨 图标
    • 这表明 AWS MCP Server 已准备好使用
flowchart TD
    subgraph "User Device"
        config[Edit claude_desktop_config.json]
        claude[Claude Desktop]
        docker[Docker Container]
        aws_creds[AWS Credentials]
    end
    
    subgraph "AWS Cloud"
        services[AWS Services]
    end
    
    subgraph "MCP Server Components"
        tools[AWS CLI Tools]
        resources[AWS Resources]
        templates[Prompt Templates]
    end
    
    config -->|Add MCP Server Config| claude
    claude -->|Docker Run Command| docker
    docker --- tools
    docker --- resources
    docker --- templates
    aws_creds -->|Mount Read-only| docker
    resources -.->|Read| aws_creds
    tools -->|API Calls| services

示例交互

获取 AWS CLI 文档

User: What are the available options for the AWS S3 cp command?

Claude: Let me get that information for you.

The AWS S3 cp command has the following options:

NAME
    cp - Copies a local file or S3 object to another location locally or in S3.

SYNOPSIS
    cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri> [--acl <value>] [--cache-control <value>] ...

执行 AWS CLI 命令

User: List my S3 buckets

Claude: I'll list your S3 buckets for you.

2023-10-15 14:30:45 my-bucket-1
2023-11-20 09:15:32 my-bucket-2
2024-01-05 11:22:18 my-backup-bucket

使用命令管道

User: List my S3 buckets that have "backup" in their name and show them in alphabetical order

Claude: Let me find that for you.

2024-01-05 11:22:18 my-backup-bucket
2024-03-01 09:44:12 weekly-backup-bucket
2024-03-15 13:10:57 database-backup-bucket

访问 AWS 资源

User: What AWS regions are available for me to use?

Claude: Let me check what AWS regions are available for you.

Available regions:
- us-east-1 (US East, N. Virginia) - Currently selected
- us-east-2 (US East, Ohio)
- us-west-1 (US West, N. California)
- us-west-2 (US West, Oregon)
- eu-west-1 (EU West, Ireland)
- eu-central-1 (EU Central, Frankfurt)
- ap-northeast-1 (Asia Pacific, Tokyo)
- ap-southeast-1 (Asia Pacific, Singapore)
- ap-southeast-2 (Asia Pacific, Sydney)

You're currently using the us-east-1 region.

使用提示模板

User: I need to perform a security audit of my S3 buckets

Claude: I'll help you audit the security of your S3 buckets.

Here are AWS CLI commands to perform a comprehensive security audit:

# List all buckets with public access settings
aws s3api list-buckets --query 'Buckets[*].Name' --output text | xargs -I {} aws s3api get-public-access-block --bucket {}

# Check bucket policies for public access
aws s3api list-buckets --query 'Buckets[*].Name' --output text | xargs -I {} aws s3api get-bucket-policy --bucket {} 2>/dev/null

# Identify buckets without encryption
aws s3api list-buckets --query 'Buckets[*].Name' --output text | xargs -I {} aws s3api get-bucket-encryption --bucket {} 2>/dev/null

# Check for buckets without logging enabled
aws s3api list-buckets --query 'Buckets[*].Name' --output text | xargs -I {} aws s3api get-bucket-logging --bucket {} 2>/dev/null

# Verify bucket versioning status
aws s3api list-buckets --query 'Buckets[*].Name' --output text | xargs -I {} aws s3api get-bucket-versioning --bucket {}

可用的提示模板

AWS MCP Server 包括以下预定义的提示模板:

核心操作

提示 描述 参数
create_resource 生成使用最佳实践创建 AWS 资源的命令 resource_type, resource_name
resource_inventory 创建资源的综合清单 service, region (可选)
troubleshoot_service 生成用于排查服务问题的命令 service, resource_id
resource_cleanup 识别并安全清理资源 service, criteria (可选)

安全与合规

提示词 描述 参数
security_audit 审计特定 AWS 服务的安全设置 service
security_posture_assessment 对您的 AWS 环境进行全面的安全评估
iam_policy_generator 创建最小权限 IAM 策略 service, actions, resource_pattern (可选)
compliance_check 检查是否符合标准 compliance_standard, service (可选)

成本与性能

提示词 描述 参数
cost_optimization 寻找某项服务的成本优化机会 service
performance_tuning 优化和调整 AWS 资源的性能 service, resource_id

基础设施与架构

提示词 描述 参数
serverless_deployment 以最佳实践部署无服务器应用程序 application_name, runtime (可选)
container_orchestration 设置容器环境(ECS/EKS) cluster_name, service_type (可选)
vpc_network_design 设计并实施安全的 VPC 网络 vpc_name, cidr_block (可选)
infrastructure_automation 自动化基础设施管理 resource_type, automation_scope (可选)
multi_account_governance 实施安全的多账户策略 account_type (可选)

可靠性与监控

请注意,原文中的“Reliability & Monitoring”部分没有提供具体内容,因此在翻译中也保持了这一状态。如果有更多内容需要添加,请告知我!

提示 描述 参数
service_monitoring 设置全面监控 service, metric_type (可选)
disaster_recovery 实施企业级灾难恢复解决方案 service, recovery_point_objective (可选)

安全

  • 服务器使用主机上的 AWS 凭证
  • 所有命令在执行前都会经过验证
  • 超时限制防止长时间运行的命令
  • 命令必须以 'aws' 前缀开头
  • 潜在危险的命令受到限制

开发

设置开发环境

# Install only runtime dependencies using pip
pip install -e .

# Install all development dependencies using pip
pip install -e ".[dev]"

# Or use uv for faster dependency management
make uv-install       # Install runtime dependencies
make uv-dev-install   # Install development dependencies

Makefile 命令

项目包含一个带有多个目标的 Makefile,用于处理常见任务:

# Test commands
make test             # Run tests excluding integration tests
make test-unit        # Run unit tests only (all tests except integration tests)
make test-integration # Run integration tests only (requires AWS credentials)
make test-all         # Run all tests including integration tests

# Test coverage commands
make test-coverage    # Run tests with coverage report (excluding integration tests)
make test-coverage-all # Run all tests with coverage report (including integration tests)

# Linting and formatting
make lint             # Run linters (ruff check and format --check)
make lint-fix         # Run linters and auto-fix issues where possible
make format           # Format code with ruff

要查看所有可用命令的完整列表,请运行 make help

代码覆盖率

项目包括 Codecov 的配置,以跟踪代码覆盖率指标。配置文件为 codecov.yml,它:

  • 设置了 80% 的覆盖率阈值
  • 从覆盖率报告中排除测试文件、设置文件和文档
  • 配置 PR 评论和状态检查

在 CI/CD 运行过程中会自动生成覆盖率报告并上传到 Codecov。

集成测试

集成测试验证 AWS MCP 服务器与实际 AWS 资源正确工作。要运行它们:

  1. 设置 AWS 资源

    • 创建一个用于测试的 S3 存储桶
    • 设置环境变量:export AWS_TEST_BUCKET=your-test-bucket-name
    • 确保您的 AWS 凭证已配置
  2. 运行集成测试

    # 运行所有测试,包括集成测试
    make test-all
    
    # 仅运行集成测试
    make test-integration
    

或者您可以直接运行 pytest 命令:

# Run all tests including integration tests
pytest --run-integration

# Run only integration tests
pytest --run-integration -m integration

故障排除

  • 认证问题:确保您的 AWS 凭证配置正确
  • 连接错误:验证服务器正在运行,并且 AI 助手连接设置正确
  • 权限错误:检查您的 AWS 凭证是否具有必要的权限
  • 超时错误:对于长时间运行的命令,增加 AWS_MCP_TIMEOUT 环境变量的值

为什么使用 Docker 部署

通过 Docker 部署 AWS MCP 服务器是推荐的方法,提供了显著的安全性和可靠性优势,构成了工具安全使用模式的核心:

安全优势

  • 隔离(主要缓解措施): Docker 容器提供了必要的文件系统和进程隔离。AWS CLI 命令和管道 Unix 工具在一个受控环境中运行。意外或误用的命令对文件系统的影响仅限于容器内,保护了您的主机
  • 受控凭据访问: 在挂载凭据时,使用 :ro(只读)标志限制了容器修改您的 AWS 配置文件的能力。
  • 无需本地安装: 避免直接在主机系统上安装 AWS CLI 及其依赖项。
  • 干净的环境: 每次容器运行都从一个已知且干净的状态开始。

可靠性优势

  • 一致的配置:所有必需的工具(AWS CLI、SSM 插件、jq)均已预安装并正确配置
  • 依赖管理:避免工具及其依赖项之间的版本冲突
  • 跨平台一致性:在不同操作系统上以相同方式工作
  • 完整的环境:包括用于命令管道、过滤和格式化的所有必要工具

其他优点

  • 多架构支持:可在 Intel/AMD (x86_64) 和 ARM (Apple Silicon, AWS Graviton) 处理器上运行
  • 简单更新:通过单个拉取命令即可更新到新版本
  • 无 Python 环境冲突:避免与系统中其他 Python 应用程序的潜在冲突
  • 版本锁定:轻松锁定特定版本以确保生产环境中的稳定性

版本控制

此项目使用 setuptools_scm 根据 Git 标签自动确定版本:

  • 发布版本:当存在 Git 标签(例如 1.2.3)时,版本将精确为该标签
  • 开发版本:对于没有标签的提交,生成的开发版本格式为:
    <last-tag>.post<commits-since-tag>+g<commit-hash>.d<date>(例如 1.2.3.post10+gb697684.d20250406

版本会自动包含在以下内容中:

  • 包版本信息
  • Docker 镜像标签
  • 持续集成构建

创建发布版本

要创建一个新的发布版本:

# Create and push a new tag
git tag -a 1.2.3 -m "Release version 1.2.3"
git push origin 1.2.3

CI/CD 流水线将自动构建并发布带有适当版本标签的 Docker 镜像。

有关版本管理系统更详细的信息,请参阅 VERSION.md

许可证

此项目根据 MIT 许可证授权 - 详情请参阅 LICENSE 文件。

相关 MCP 服务