AWS Cloud Control API MCP Server:用自然语言管理AWS基础设施

AWS推出Cloud Control API MCP服务器,允许开发者使用自然语言进行AWS资源的创建、读取、更新、删除和列表操作,支持1200多种AWS资源,集成安全检查与成本估算功能。

今天,我们正式发布 AWS Cloud Control API (CCAPI) MCP 服务器。该 MCP 服务器通过允许开发者使用自然语言创建、读取、更新、删除和列出资源,彻底改变了 AWS 基础设施管理。作为 awslabs/mcp 项目的一部分,这一创新工具充当了自然语言命令与 AWS 基础设施部署和管理之间的桥梁。该 MCP 服务器由 AWS Cloud Control API 提供支持——这是一个标准化 API,允许通过单一端点对 AWS 和第三方资源执行 CRUDL(创建/读取/更新/删除/列表)操作。

主要特性:

  • 利用 AWS Cloud Control API 对超过 1200 种 AWS 资源执行 CRUDL 操作
  • 使基于 LLM 的智能体和开发者能够通过自然语言提示管理基础设施
  • 提供输出基础设施即代码模板的选项,以便仍可与现有 CI/CD 流水线一起使用
  • 与 AWS Pricing API 集成,为其将创建的基础设施提供成本估算
  • 使用 Checkov 自动应用安全最佳实践

为什么使用 CCAPI MCP 服务器?

  • 简化的基础设施管理:无需再费力研究复杂的模板或文档
  • 提高开发者生产力:专注于您的需求,而非如何配置
  • 降低学习曲线:通过自然语言命令更快地让新团队成员上手
  • LLM 集成:AI 辅助开发工作流程的完美伴侣

CCAPI MCP 服务器通过实现对 AWS 资源操作的自然语言交互,改变了基础设施管理。该 MCP 服务器将自然语言命令与 AWS 基础设施部署和管理连接起来,允许开发者通过对话式输入来管理云基础设施,例如:

  • 你能为我创建一个新的 S3 存储桶吗?
  • 找到我所有的 EC2 实例,并告诉我哪些实例类型不是 t2.large

这显著减少了配置开销,并加快了新团队成员的入职速度,直接将开发者意图转化为云基础设施。

让我们看看它的实际应用。

创建和管理云基础设施

先决条件

  • 已安装 uv 包管理器
  • 已安装 Python 3.x.x
  • 具有适当权限的 AWS 凭证。MCP 服务器支持多种定义这些凭证的方式。有关更多信息,请参阅 MCP 文档。建议使用动态凭证,例如通过 SSO 提供的凭证。有关配置 AWS 凭证的更多信息,请参阅 AWS CLI 文档。
  • 已安装支持 MCP 客户端和 MCP 服务器的 MCP 主机应用程序(例如 Amazon Q Developer、Claude Desktop、Cursor 等)。要遵循此博客,请按照安装说明中所述安装 Amazon Q Developer for CLI。

与开发者工具集成

要开始使用 CCAPI MCP 服务器,您需要设置服务器配置,该配置通常位于名为 mcp.json 的文件中。在本博客中,我们将重点介绍如何在 Amazon Q Developer 中使用 CCAPI MCP 服务器。请注意,对于其他 MCP 主机应用程序,mcp 配置文件的路径可能不同。如果该文件在目录中尚不存在,您需要创建它。

  1. 全局配置~/.aws/amazon/mcp.json – 适用于所有工作区
  2. 工作区配置.amazonq/mcp.json – 特定于当前工作区

更多信息可以在 Amazon Q Developer 用户指南中找到。

配置文件结构

MCP 配置文件使用 JSON 格式,结构如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "mcpServers": {
    "server-name": {
      "command": "command-to-run",
      "args": ["arg1", "arg1"],
      "env": {
        "ENV_VAR1": "value1",
        "ENV_VAR2": "value2"
      }
    }
  }
}

这是包含 CCAPI MCP 服务器配置的 mcp.json

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
{
  "mcpServers": {
    "awslabs.ccapi-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.ccapi-mcp-server@latest"],
      "env": {
        "AWS_PROFILE": "your named AWS profile",
        "DEFAULT_TAGS": "enabled",
        "SECURITY_SCANNING": "enabled",
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

重要提示

确保在 MCP 服务器配置中正确设置您的 AWS 凭证。正确配置这些凭证至关重要,因为 MCP 服务器在您的 AWS 账户中调用 AWS Cloud Control API 执行 CRUDL 操作时,将使用其关联的权限。服务器支持多种使用这些凭证的方法,例如 AWS 配置文件、环境变量、SSO 令牌等。您可以在 aws_client.py 文件中看到其中一些方法。有关更多信息,请参阅这些关于使用命名配置文件的文档。

只读模式

如果您希望阻止 MCP 服务器执行变更操作(例如创建/更新/删除资源),可以指定 --readonly 标志,如下所示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
{
  "mcpServers": {
    "awslabs.ccapi-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.ccapi-mcp-server@latest", "--readonly"],
      "env": {
        "AWS_PROFILE": "your named AWS profile",
        "DEFAULT_TAGS": "enabled",
        "SECURITY_SCANNING": "enabled",
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

有关 CCAPI MCP 服务器提供的配置和工具的更多信息,请参阅 AWS CloudFormation MCP 服务器文档。

安全注意事项

  • 确保 IAM 凭证包含对 Cloud Control API 操作(List、Get、Create、Update、Delete)的权限。有关更多信息,请参阅 AWS CCAPI API 文档
  • 遵循 IAM 最小权限原则
  • 启用 AWS CloudTrail 审计
  • 考虑使用 --readonly 标志在只读模式下运行以获得更安全的操作

示例用例:创建带有 KMS 加密的 S3 存储桶

重要提示:在尝试这些命令之前,请确保您已满足所有先决条件。

  1. 正确设置 mcp.json 文件后,尝试运行示例提示。在终端中,运行 q chat 以开始在 CLI 中使用 Amazon Q。
  2. 这将在后台开始初始化 MCP 服务器,即使它们仍在加载,您也可以立即开始使用 Q Chat。请注意,如果这些服务器尚未完成加载,您的提示将在不使用任何 MCP 服务器的情况下进行处理。要检查服务器的状态,请运行 /mcp
  3. 验证 MCP 服务器已成功加载后,尝试一个示例命令。只需告诉 Amazon Q:创建一个具有版本控制功能并使用新 KMS 密钥加密的 S3 存储桶

Amazon Q 将使用服务器自动执行以下操作:

  • 获取您当前的环境变量
  • 使用这些变量获取您当前的 AWS 会话信息
  • 创建定义您提示中内容的代码
  • 解释生成的代码
  • 对生成的代码运行安全分析(如果启用)
  • 解释安全分析的结果
  • 根据 AWS Cloud Control API 模式(使用 CloudFormation 资源提供者模式作为其基础)和 IAM 策略验证配置。此验证确保符合 Cloud Control API 要求,这对于资源创建至关重要
  • 通过 Cloud Control API 直接创建资源

注意:虽然在验证步骤中引用了 CloudFormation 模式,但此解决方案使用 Cloud Control API 进行资源管理,而不是 CloudFormation。使用这些模式是因为它们定义了 Cloud Control API 期望的标准化资源属性。

  1. 首先,Amazon Q 会提到需要检查环境变量以查找与 AWS 会话信息相关的信息。它将告知您它打算使用的特定工具,并请求许可。选择 y 接受并允许操作。
  2. 接下来,Amazon Q 将请求使用 get_aws_session_info() 来获取有关其应用于后续操作的 AWS 会话的信息。它将使用 MCP 配置文件(例如 ~/.aws/amazon/mcp.json)中定义的环境变量的相关值。
  3. Amazon Q 随后将显示它将用于部署资源的 AWS 账户 ID 和区域。首先,它将使用 generate_infrastructure_code() 生成将发送到 Cloud Control API 的 KMS 密钥的资源属性。这些属性反映了 AWS CloudFormation 资源提供者模式(Cloud Control API 以此为基础)中定义的结构,从而允许在部署前通过 Checkov 进行安全验证。该密钥将按照安全最佳实践进行配置,其密钥策略范围限定为仅允许在 AWS 账户内使用。
  4. Amazon Q 生成资源代码后,它将使用 explain() 工具来解释生成的基础设施代码。请注意,对于由 CCAPI MCP 服务器管理的所有资源,都会添加默认标签 MANAGED_BYMCP_SERVER_SOURCE_CODEMCP_SERVER_VERSION。这些标签便于识别由 MCP 服务器管理的基础设施。它们是可配置的,您可以选择禁用它们,但我们强烈建议添加标签以确保您能了解由 CCAPI MCP 服务器管理的基础设施。
  5. 然后它将尝试使用 run_checkov() 工具来检查代码的安全性。触发此工具是因为在服务器配置文件中将 SECURITY_SCANNING 设置为 enabled
  6. Checkov 运行后,它将再次尝试使用 explain() 工具来解释 Checkov 运行的安全发现。如果没有安全问题,它将尝试继续。如果存在安全问题,将询问您希望如何继续,并且 Amazon Q 将推荐必要的修复措施。默认情况下,通过的检查将只给出最少的摘要。如果您想获取更多信息,只需询问更多细节。
  7. Amazon Q 将使用的下一个工具是 create_resource() 工具。此工具将尝试使用 AWS Cloud Control API 创建资源,然后使用 get_resource_request_status() 工具检查创建状态。此工具使用请求令牌来标识提交到 Cloud Control API 的请求,并使用它来获取其状态信息。
  8. Amazon Q 将继续根据需要使CCAPI MCP 服务器工具,直到完成 S3 存储桶和 KMS 密钥的创建,并输出摘要。
  9. 现在,要求 Amazon Q 进行可能对安全性产生负面影响的更改,例如允许 S3 存储桶公开访问。虽然通常不建议此配置,但有时是必要的——例如当您想将 S3 存储桶用于公共网站托管时。Amazon Q 将响应,告知您所请求的内容不是最佳实践,并解释原因。但是,根据您的使用情况,这可能是一个有效的请求,因此它会提示您确认。
  10. CCAPI MCP 服务器还与 AWS Pricing API 集成,因此您甚至可以询问其已部署资源的估算成本。
  11. 最后,要求 Amazon Q 创建迄今为止已创建资源的 CloudFormation 模板,以便您可以拥有备份,或者如果您想重新部署类似的内容,您将有一个模板可供使用。它将使用 create_template() 工具来完成此任务。

注意create_template() 工具附带预定义的设置:

  • 默认输出 YAML 格式(可以是 JSON)
  • 将 DeletionPolicy 设置为 RETAIN
  • 将 UpdateReplacePolicy 设置为 RETAIN
  • 允许用于模板 ID、文件保存位置和区域指定的可选参数

有关更多信息,请查看源代码中的工具。

  1. 尝试一个更危险的操作,尝试删除 AWS 账户中的所有资源。安全检查阻止了此尝试并建议其他替代方案。
  2. 最后,要求 Amazon Q 仅删除它已创建的内容。这次它将使用 get_resource() 工具获取有关其创建的现有资源的信息,使用 explain() 工具解释将进行的更改,最后使用 delete_resource() 工具删除资源。

成功删除资源后,它将提供最终摘要。

易于入门的示例提示

示例提示 功能说明
“创建具有私有和公共子网的 VPC” 设置完整的网络环境
“列出我所有的 EC2 实例” 显示您账户中运行的实例
“为我的应用程序创建一个无服务器 API” 部署带有 Lambda 集成的 API Gateway
“设置一个负载均衡的 Web 应用程序” 创建带有目标组和实例的 ALB

结论

AWS Cloud Control API MCP 服务器代表了 AWS 基础设施管理方面的重大进步,使得通过自然语言轻松表达和访问云资源操作。无论您是在简化操作、试验基于 LLM 的开发,还是让新团队成员上手,无论您是在 CLI 中使用 Amazon Q Developer 还是任何其他 MCP 主机应用程序(例如 Claude Desktop 或 Cursor),CCAPI MCP 服务器及其工具都提供了一种真正直观的方式来与 AWS 交互。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计