这是一个实现 Model Context Protocol (MCP) 的服务器,通过 boto3 运行生成的 Python 代码来查询任何 AWS 资源。
风险自负:
我没有限制操作为只读模式,因此谨慎的操作人员可以使用此工具进行管理操作。您的 AWS 用户角色将决定您可以执行的操作权限。
演示:修复 DynamoDB 权限错误
https://github.com/user-attachments/assets/de88688d-d7a0-45e1-94eb-3f5d71e9a7c7
我尝试了具有开发者访问权限的 AWS 聊天机器人。免费层级每月仅限 25 次资源查询。下一个层级是每月 19 美元,包括我几乎不使用的 90% 功能。而且结果是以 JSON 格式呈现,并有很多限制。
我尝试使用 aws-mcp,但遇到了一些问题:
所以我创建了这个新方法,该方法:
有关 Model Context Protocol 的更多信息及其工作原理,请参阅 Anthropic 的 MCP 文档。
服务器暴露以下资源:
aws://query_resources:一个动态资源,通过 boto3 查询提供对 AWS 资源的访问这里有一些你可以执行的示例查询:
s3 = session.client('s3')
result = s3.list_buckets()
def get_latest_deployment(pipeline_name):
codepipeline = session.client('codepipeline')
result = codepipeline.list_pipeline_executions(
pipelineName=pipeline_name,
maxResults=5
)
if result['pipelineExecutionSummaries']:
latest_execution = max(
[e for e in result['pipelineExecutionSummaries']
if e['status'] == 'Succeeded'],
key=itemgetter('startTime'),
default=None
)
if latest_execution:
result = codepipeline.get_pipeline_execution(
pipelineName=pipeline_name,
pipelineExecutionId=latest_execution['pipelineExecutionId']
)
else:
result = None
else:
result = None
return result
result = get_latest_deployment("your-pipeline-name")
注意:所有代码片段都必须设置一个 result 变量,该变量将返回给客户端。result 变量将自动转换为 JSON 格式,并适当处理 AWS 特定对象和日期时间值。
服务器提供了一个用于执行 AWS 查询的工具:
aws_resources_query_or_modify
code_snippet(字符串):使用 boto3 查询 AWS 资源的 Python 代码result 变量服务器包括几个安全特性:
你需要有适当的权限来查询 AWS 资源的 AWS 凭据。你可以通过以下方式获得这些凭据:
需要以下环境变量:
AWS_ACCESS_KEY_ID:你的 AWS 访问密钥AWS_SECRET_ACCESS_KEY:你的 AWS 秘密密钥AWS_SESSION_TOKEN:(可选)如果你使用临时凭证,则为 AWS 会话令牌AWS_DEFAULT_REGION:AWS 区域(如果未设置,默认为 'us-east-1')你也可以使用存储在 ~/.aws/credentials 文件中的配置文件。为此,请将 AWS_PROFILE 环境变量设置为配置文件名称。
注意:确保你的 AWS 凭据安全,切勿将其提交到版本控制系统。
要通过 Smithery 自动安装 AWS 资源 MCP 服务器:
npx -y @smithery/cli install mcp-server-aws-resources-python --client claude
你可以选择本地构建镜像或从 Docker Hub 拉取。镜像针对 Linux 平台构建。
docker pull buryhuang/mcp-server-aws-resources:latest
docker build -t mcp-server-aws-resources .
运行容器:
docker run \
-e AWS_ACCESS_KEY_ID=your_access_key_id_here \
-e AWS_SECRET_ACCESS_KEY=your_secret_access_key_here \
-e AWS_DEFAULT_REGION=your_AWS_DEFAULT_REGION \
buryhuang/mcp-server-aws-resources:latest
或者使用存储的凭据和配置文件:
docker run \
-e AWS_PROFILE=[AWS_PROFILE_NAME] \
-v ~/.aws:/root/.aws \
buryhuang/mcp-server-aws-resources:latest
要为多个平台发布 Docker 镜像,可以使用 docker buildx 命令。按照以下步骤操作:
创建一个新的构建实例(如果尚未创建):
docker buildx create --use
为多个平台构建并推送镜像:
docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t buryhuang/mcp-server-aws-resources:latest --push .
验证镜像是否可用于指定的平台:
docker buildx imagetools inspect buryhuang/mcp-server-aws-resources:latest
{
"mcpServers": {
"aws-resources": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"AWS_ACCESS_KEY_ID=your_access_key_id_here",
"-e",
"AWS_SECRET_ACCESS_KEY=your_secret_access_key_here",
"-e",
"AWS_DEFAULT_REGION=us-east-1",
"buryhuang/mcp-server-aws-resources:latest"
]
}
}
}
{
"mcpServers": {
"aws-resources": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"AWS_PROFILE=default",
"-v",
"~/.aws:/root/.aws",
"buryhuang/mcp-server-aws-resources:latest"
]
}
}
}
{
"mcpServers": {
"aws": {
"command": "/Users/gmr/.local/bin/uv",
"args": [
"--directory",
"/<your-path>/mcp-server-aws-resources-python",
"run",
"src/mcp_server_aws_resources/server.py",
"--profile",
"testing"
]
}
}
}