今天,我们正式发布 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 配置文件的路径可能不同。如果该文件在目录中尚不存在,您需要创建它。
- 全局配置:
~/.aws/amazon/mcp.json– 适用于所有工作区 - 工作区配置:
.amazonq/mcp.json– 特定于当前工作区
更多信息可以在 Amazon Q Developer 用户指南中找到。
配置文件结构
MCP 配置文件使用 JSON 格式,结构如下:
|
|
这是包含 CCAPI MCP 服务器配置的 mcp.json:
|
|
重要提示
确保在 MCP 服务器配置中正确设置您的 AWS 凭证。正确配置这些凭证至关重要,因为 MCP 服务器在您的 AWS 账户中调用 AWS Cloud Control API 执行 CRUDL 操作时,将使用其关联的权限。服务器支持多种使用这些凭证的方法,例如 AWS 配置文件、环境变量、SSO 令牌等。您可以在 aws_client.py 文件中看到其中一些方法。有关更多信息,请参阅这些关于使用命名配置文件的文档。
只读模式
如果您希望阻止 MCP 服务器执行变更操作(例如创建/更新/删除资源),可以指定 --readonly 标志,如下所示:
|
|
有关 CCAPI MCP 服务器提供的配置和工具的更多信息,请参阅 AWS CloudFormation MCP 服务器文档。
安全注意事项
- 确保 IAM 凭证包含对 Cloud Control API 操作(List、Get、Create、Update、Delete)的权限。有关更多信息,请参阅 AWS CCAPI API 文档
- 遵循 IAM 最小权限原则
- 启用 AWS CloudTrail 审计
- 考虑使用
--readonly标志在只读模式下运行以获得更安全的操作
示例用例:创建带有 KMS 加密的 S3 存储桶
重要提示:在尝试这些命令之前,请确保您已满足所有先决条件。
- 正确设置
mcp.json文件后,尝试运行示例提示。在终端中,运行q chat以开始在 CLI 中使用 Amazon Q。 - 这将在后台开始初始化 MCP 服务器,即使它们仍在加载,您也可以立即开始使用 Q Chat。请注意,如果这些服务器尚未完成加载,您的提示将在不使用任何 MCP 服务器的情况下进行处理。要检查服务器的状态,请运行
/mcp - 验证 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 期望的标准化资源属性。
- 首先,Amazon Q 会提到需要检查环境变量以查找与 AWS 会话信息相关的信息。它将告知您它打算使用的特定工具,并请求许可。选择
y接受并允许操作。 - 接下来,Amazon Q 将请求使用
get_aws_session_info()来获取有关其应用于后续操作的 AWS 会话的信息。它将使用 MCP 配置文件(例如~/.aws/amazon/mcp.json)中定义的环境变量的相关值。 - Amazon Q 随后将显示它将用于部署资源的 AWS 账户 ID 和区域。首先,它将使用
generate_infrastructure_code()生成将发送到 Cloud Control API 的 KMS 密钥的资源属性。这些属性反映了 AWS CloudFormation 资源提供者模式(Cloud Control API 以此为基础)中定义的结构,从而允许在部署前通过 Checkov 进行安全验证。该密钥将按照安全最佳实践进行配置,其密钥策略范围限定为仅允许在 AWS 账户内使用。 - Amazon Q 生成资源代码后,它将使用
explain()工具来解释生成的基础设施代码。请注意,对于由 CCAPI MCP 服务器管理的所有资源,都会添加默认标签MANAGED_BY、MCP_SERVER_SOURCE_CODE和MCP_SERVER_VERSION。这些标签便于识别由 MCP 服务器管理的基础设施。它们是可配置的,您可以选择禁用它们,但我们强烈建议添加标签以确保您能了解由 CCAPI MCP 服务器管理的基础设施。 - 然后它将尝试使用
run_checkov()工具来检查代码的安全性。触发此工具是因为在服务器配置文件中将SECURITY_SCANNING设置为enabled。 - Checkov 运行后,它将再次尝试使用
explain()工具来解释 Checkov 运行的安全发现。如果没有安全问题,它将尝试继续。如果存在安全问题,将询问您希望如何继续,并且 Amazon Q 将推荐必要的修复措施。默认情况下,通过的检查将只给出最少的摘要。如果您想获取更多信息,只需询问更多细节。 - Amazon Q 将使用的下一个工具是
create_resource()工具。此工具将尝试使用 AWS Cloud Control API 创建资源,然后使用get_resource_request_status()工具检查创建状态。此工具使用请求令牌来标识提交到 Cloud Control API 的请求,并使用它来获取其状态信息。 - Amazon Q 将继续根据需要使CCAPI MCP 服务器工具,直到完成 S3 存储桶和 KMS 密钥的创建,并输出摘要。
- 现在,要求 Amazon Q 进行可能对安全性产生负面影响的更改,例如允许 S3 存储桶公开访问。虽然通常不建议此配置,但有时是必要的——例如当您想将 S3 存储桶用于公共网站托管时。Amazon Q 将响应,告知您所请求的内容不是最佳实践,并解释原因。但是,根据您的使用情况,这可能是一个有效的请求,因此它会提示您确认。
- CCAPI MCP 服务器还与 AWS Pricing API 集成,因此您甚至可以询问其已部署资源的估算成本。
- 最后,要求 Amazon Q 创建迄今为止已创建资源的 CloudFormation 模板,以便您可以拥有备份,或者如果您想重新部署类似的内容,您将有一个模板可供使用。它将使用
create_template()工具来完成此任务。
注意:create_template() 工具附带预定义的设置:
- 默认输出 YAML 格式(可以是 JSON)
- 将 DeletionPolicy 设置为 RETAIN
- 将 UpdateReplacePolicy 设置为 RETAIN
- 允许用于模板 ID、文件保存位置和区域指定的可选参数
有关更多信息,请查看源代码中的工具。
- 尝试一个更危险的操作,尝试删除 AWS 账户中的所有资源。安全检查阻止了此尝试并建议其他替代方案。
- 最后,要求 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 交互。