关于 AWS CLI MCP Server
AWS CLI MCP Server 让 MCP 客户端通过 AWS CLI 检查和操作 AWS,适用于管理 AWS 资源的用户。它提供命令执行、建议及账户和区域查询,并对 Shell 运算符和疑似破坏性命令设有防护。
主要功能
- 01执行 AWS CLI 命令
- 02根据自然语言建议命令
- 03列出可用 AWS 区域
- 04查询调用者身份
- 05标记疑似破坏性操作
适用场景
- 01检查 AWS 账户身份
- 02查找 AWS 任务的命令
- 03从 MCP 客户端执行 AWS CLI 操作
MCP 相关
它通过 stdio 向 MCP 客户端提供 AWS CLI 执行、命令建议、区域查询和调用者身份工具。命令使用服务器进程可用的凭证执行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx mdev-aws-mcp-serverAWS_REGIONDefault AWS regionAWS_PROFILEAWS credentials profileAWS_MCP_WORKING_DIRWorking directory for file operationsAWS_MCP_REQUIRE_CONFIRMATIONEmit warnings for destructive-looking operationsAWS_MCP_LOG_LEVELApplication log level本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cli_command | string | 是 | 要执行的完整 AWS CLI 命令。必须以 'aws' 开头 |
| max_results | any | 否 | 结果数量的可选上限(适用于分页) |
详细介绍
AWS MCP Server
一个 Python Model Context Protocol(MCP)服务,可让兼容 MCP 的客户端通过 AWS CLI 检查和操作 AWS。它支持经过验证的命令执行、命令建议、AWS 区域查询和调用者身份检查。
功能
- 执行 AWS CLI 命令时不进行 shell 扩展,并使用 shell 风格解析保留带引号的参数
- 根据自然语言请求建议常见的 AWS CLI 命令
- 返回可用的 AWS 区域
- 返回当前调用者身份
- 支持本地 MCP 客户端使用 stdio 传输
- 验证配置,并将日志写入 stderr 和本地日志文件
安全模型
此服务可以使用进程可用的凭据执行 AWS CLI 命令。它通过 subprocess.run(..., shell=False) 阻止 shell 运算符,并标记看起来具有破坏性的命令,但无法取代 IAM 最小权限原则或人工审核。请使用权限范围受限的 AWS 配置文件或角色,优先使用非生产账户进行测试,并在 MCP 客户端中将破坏性命令设为必须手动批准。
要求
- Python 3.12+
- 已安装 AWS CLI v2,且可通过
PATH访问 - 已配置 AWS CLI 身份验证和配置,方式包括 AWS 配置文件、IAM Identity Center/SSO、环境变量、IAM 角色或其他 AWS 支持的凭据提供程序
- 兼容 MCP 的客户端,例如 Claude Desktop、Cursor、VS Code 或其他 MCP 主机
安装
发布到 PyPI 后,可像标准 Python MCP 软件包一样安装或运行此服务:
uvx mdev-aws-mcp-server
从源代码进行本地开发:
git clone https://github.com/musaddiq-dev/aws-cli-mcp-server.git
cd aws-cli-mcp-server
python -m venv .venv
source .venv/bin/activate
pip install -e .
配置
运行此服务前,请使用官方 AWS CLI 安装指南安装 AWS CLI,然后使用官方 AWS CLI 登录指南和 AWS CLI 配置指南配置凭据。AWS 建议尽可能使用短期凭据;除非用例需要,否则请避免使用长期 IAM 用户密钥。
复制示例环境文件,并根据需要调整值。
cp .env.example .env
| 变量 | 说明 | 默认值 |
|---|---|---|
AWS_REGION | 默认 AWS 区域 | us-east-1 |
AWS_PROFILE | AWS 凭据配置文件 | default |
AWS_MCP_WORKING_DIR | 文件操作的工作目录 | /tmp/aws-mcp-work |
AWS_MCP_REQUIRE_CONFIRMATION | 对看起来具有破坏性的操作发出警告 | true |
AWS_MCP_LOG_LEVEL | 应用程序日志级别 | INFO |
运行
mdev-aws-mcp-server
在 PyPI 发布前,从本地检出目录运行:
python -m aws_mcp_server.server
MCP 客户端配置
对于已发布的安装,建议使用 uvx。使用 stdio 的 MCP 服务只能将协议消息写入 stdout;此服务会将日志写入 stderr 和 ~/.aws-mcp-server/logs 下的本地文件。
Claude Desktop / Cursor / Windsurf / Cline
大多数 MCP 客户端都接受以下 mcpServers JSON 格式:
{
"mcpServers": {
"aws": {
"command": "uvx",
"args": ["mdev-aws-mcp-server"],
"env": {
"AWS_PROFILE": "default",
"AWS_REGION": "us-east-1"
}
}
}
}
在此代码库中进行本地开发时,请改用已安装的控制台脚本路径:
{
"mcpServers": {
"aws": {
"command": "/absolute/path/to/aws-cli-mcp-server/.venv/bin/mdev-aws-mcp-server",
"args": [],
"env": {
"AWS_PROFILE": "default",
"AWS_REGION": "us-east-1"
}
}
}
}
Claude Code CLI
claude mcp add aws --env AWS_PROFILE=default --env AWS_REGION=us-east-1 -- uvx mdev-aws-mcp-server
VS Code MCP
VS Code 在其 MCP 配置中使用相同的 command/args/env 模型:
{
"servers": {
"aws": {
"type": "stdio",
"command": "uvx",
"args": ["mdev-aws-mcp-server"],
"env": {
"AWS_PROFILE": "default",
"AWS_REGION": "us-east-1"
}
}
}
}
工具
| 工具 | 用途 | 安全性 |
|---|---|---|
call_aws | 执行 AWS CLI 命令 | 可能修改 AWS 资源 |
suggest_aws_commands | 建议常见的 AWS CLI 命令 | 只读 |
get_aws_regions | 列出 AWS 区域 | 只读 |
get_caller_identity | 返回当前 AWS 身份 | 只读 |
开发
pip install -e .
pip install -e '.[dev]'
pytest
ruff check .
ruff format .
pyright
冒烟检查
python -m py_compile src/aws_mcp_server/server.py src/aws_mcp_server/config.py src/aws_mcp_server/aws/executor.py
python -m pytest
如果已配置凭据,可手动检查 AWS:
aws sts get-caller-identity
分发
此服务通过标准的 Python MCP 分发渠道发布:
- PyPI 软件包:
mdev-aws-mcp-server - MCP Registry 名称:
io.github.musaddiq-dev/aws-cli-mcp-server - 运行时提示:
uvx - 传输方式:
stdio
此 README 顶部的 mcp-name 标记是通过 MCP Registry 所有权验证的必要条件。建议用户在本地 MCP 客户端配置中使用 uvx mdev-aws-mcp-server。
安全注意事项
- 请勿提交
.env、AWS 凭据、配置文件、访问密钥或特定账户的输出。 - 为运行此服务的配置文件或角色使用最小权限 IAM 权限。
- 在 MCP 客户端中,将
call_aws设置为必须手动明确批准。 - 未添加身份验证、TLS 和网络控制措施时,请勿通过网络暴露此服务。
- 执行生成的命令建议前,请先检查。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。