Token导航 LogoToken导航TokenDH.com
Tool Aws Ops logo
运维云端stdio官方级别未说明来源级核验

Tool Aws Ops

MCP Server

FastMCP服务器为AWS多账户操作提供全面的SRE工具,支持Secrets Manager、Route53、S3等服务,通过AssumeRole实现多账户访问。

工具数

10

提示词数

0

GitHub Stars

0

资源数

0
Python云端部署Docker

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

DepStacks

提供方

DepStacks

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -r requirements.txt

详细介绍

AWS运营MCP服务器

FastMCP服务器,用于跨多个帐户的AWS操作。通过AssumpeRole为Secrets Manager、Route53、S3和其他AWS服务提供全面的SRE工具,并支持多帐户。

特性

秘密经理运营

  • 创建秘密 带有标签和描述
  • 检索机密值 支持版本
  • 更新机密 及其元数据
  • 删除机密 使用恢复窗口或强制删除
  • 列出秘密 具有过滤和分页功能
  • 描述秘密 (无值元数据)
  • 还原已删除的机密 在恢复窗口内
  • 标记/取消标记秘密 为了组织

多账户支持

  • 关心角色 基于身份验证的跨帐户访问(生产)
  • AWS配置文件 支持本地开发(~/.aws/credentials)
  • 按请求身份验证 -每次工具调用提供的角色或个人资料
  • 预配置的帐户映射 通过环境变量
  • 没有存储凭据 -最高安全性

未来服务(可扩展架构)

  • Route53:DNS记录管理
  • S3:桶和对象操作
  • EC2:实例操作
  • IAM:角色/策略管理

建筑

多帐户身份验证

┌──────────────────────────────────────────────────────────────┐
│                    MCP Server (EKS)                          │
│  ┌────────────────────────────────────────────────────────┐  │
│  │  IRSA Role: aws-ops-mcp (sts:AssumeRole permission)    │  │
│  └────────────────────────────────────────────────────────┘  │
│                              │                               │
│           Each tool call includes: role_arn                  │
│                              ▼                               │
│  ┌────────────────────────────────────────────────────────┐  │
│  │                   STS AssumeRole                       │  │
│  └────────────────────────────────────────────────────────┘  │
└──────────────────────────────────────────────────────────────┘
                               │
         ┌─────────────────────┼─────────────────────┐
         ▼                     ▼                     ▼
┌─────────────────┐   ┌─────────────────┐   ┌─────────────────┐
│  Account A      │   │  Account B      │   │  Account C      │
│  Trust Policy   │   │  Trust Policy   │   │  Trust Policy   │
│  → aws-ops-mcp  │   │  → aws-ops-mcp  │   │  → aws-ops-mcp  │
└─────────────────┘   └─────────────────┘   └─────────────────┘

快速开始

先决条件

  • Docker和Docker Compose
  • AWS凭据(用于本地开发)

地方发展

# Clone the repository
git clone https://github.com/DepStacks/tool.aws-ops.git
cd tool.aws-ops

# Copy and configure environment
cp .env.example .env
# Edit .env with your configuration

# Start the server
chmod +x docker-start.sh
./docker-start.sh

# Server runs on http://localhost:8100/sse

MCP客户端配置

添加到MCP客户端配置中:

{
  "mcpServers": {
    "aws-ops": {
      "url": "http://localhost:8100/sse",
      "headers": {
        "Authorization": "Bearer YOUR_AUTH_TOKEN"
      }
    }
  }
}

可用工具

实用工具

list_accounts

列出所有预配置的AWS帐户及其角色ARN。

秘密管理器工具

create_secret

在AWS Secrets Manager中创建新密钥。

# Using AssumeRole (production)
{
    "name": "prod/myapp/database",
    "secret_value": "{\"username\":\"admin\",\"password\":\"secret\"}",
    "description": "Database credentials",
    "tags": {"Environment": "prod", "Team": "platform"},
    "role_arn": "arn:aws:iam::111111111111:role/aws-ops-target",
    "region": "us-east-1"
}

# Using AWS Profile (local development)
{
    "name": "staging/myapp/database",
    "secret_value": "{\"username\":\"admin\",\"password\":\"secret\"}",
    "profile": "staging",
    "region": "us-east-1"
}

get_secret_value

检索秘密的值。

# Using AssumeRole
{
    "secret_id": "prod/myapp/database",
    "role_arn": "arn:aws:iam::111111111111:role/aws-ops-target"
}

# Using AWS Profile
{
    "secret_id": "staging/myapp/database",
    "profile": "staging"
}

update_secret

更新现有密钥的值。

delete_secret

删除机密(使用可配置的恢复窗口)。

list_secrets

列出带有可选名称前缀过滤的机密。

describe_secret

获取有关秘密的元数据(不带值)。

restore_secret

还原以前删除的机密。

tag_secret

在机密上添加或更新标签。

untag_secret

从秘密中删除标签。

配置

环境变量

# Default AWS Region
AWS_REGION=us-east-1

# MCP Authentication Token (required for API access)
MCP_AUTH_TOKEN=your-secret-token

# Pre-configured Account Role ARNs (Production - AssumeRole)
ACCOUNT_PRODUCTION_ROLE_ARN=arn:aws:iam::111111111111:role/aws-ops-target
ACCOUNT_STAGING_ROLE_ARN=arn:aws:iam::222222222222:role/aws-ops-target

# Pre-configured Account Profiles (Local Development - ~/.aws/credentials)
ACCOUNT_PRODUCTION_PROFILE=prod
ACCOUNT_STAGING_PROFILE=staging
ACCOUNT_DEVELOPMENT_PROFILE=dev

身份验证方法

所有工具都支持三种身份验证方法:

方法参数用例
个人资料profile="staging"使用~/.aws/凭据进行本地开发
关心角色role_arn="arn:aws:iam::..."与IRSA合作生产
默认(无)使用环境凭据

优先级: profile > role_arn >默认凭据

目标帐户设置

每个目标AWS帐户都需要一个IAM角色,该角色具有:

  1. 信任政策 (允许基础角色承担它):
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::BASE_ACCOUNT_ID:role/aws-ops-mcp"
    },
    "Action": "sts:AssumeRole"
  }]
}
  1. 权限策略 (保密经理):
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "secretsmanager:CreateSecret",
      "secretsmanager:GetSecretValue",
      "secretsmanager:PutSecretValue",
      "secretsmanager:UpdateSecret",
      "secretsmanager:DeleteSecret",
      "secretsmanager:ListSecrets",
      "secretsmanager:DescribeSecret",
      "secretsmanager:RestoreSecret",
      "secretsmanager:TagResource",
      "secretsmanager:UntagResource"
    ],
    "Resource": "*"
  }]
}

可扩展性

该架构旨在轻松添加新的AWS服务:

添加新服务

  1. 在中创建新的服务管理器 services/:
# services/route53.py
from .base import AWSServiceBase

class Route53Service(AWSServiceBase):
    def _get_client(self, role_arn=None, region=None):
        return self._get_aws_client('route53', role_arn, region)
    
    async def list_hosted_zones(self, role_arn=None, region=None):
        client = self._get_client(role_arn, region)
        response = client.list_hosted_zones()
        return {"success": True, "zones": response['HostedZones']}
  1. 添加工具 server.py:
from services.route53 import Route53Service
route53 = Route53Service()

@mcp.tool()
async def list_hosted_zones(role_arn=None, region=None):
    """List Route53 hosted zones"""
    return await route53.list_hosted_zones(role_arn, region)
  1. 更新文档

安全最佳实践

  1. 切勿使用AWS访问密钥 -在生产中使用IRSA
  2. 最小特权 -目标角色具有最低权限
  3. 按请求身份验证 -根据请求提供角色ARN
  4. 审计跟踪 -CloudTrail记录所有假定的角色操作
  5. MCP API认证 -需要承载令牌
  6. TLS加密 -仅在生产环境中使用HTTPS
  7. 没有存储凭据 -凭据仅存在于内存中

监控

健康检查

  • 端点: /healthz
  • 使用:ALB健康检查、Kubernetes探测器

日志记录

  • 结构化日志到stdout
  • 兼容CloudWatch、Fluent Bit等。

故障排除

假设角色失败

  • 验证目标帐户中的信任策略
  • 检查基础角色是否 sts:AssumeRole 许可
  • 验证角色ARN的格式是否正确

权限不足

  • 验证目标角色是否具有所需的服务权限
  • 检查资源级别权限(如果适用)
  • 确保您使用的是正确的地区

启动时连接超时

  • boto3客户端被延迟加载以防止这种情况
  • 检查服务器日志中的初始化错误

发展

项目结构

tool.aws-ops/
├── server.py              # Main FastMCP server
├── config.py              # Configuration management
├── services/              # AWS service managers
│   ├── __init__.py
│   ├── base.py            # Base class with AssumeRole
│   └── secrets_manager.py # Secrets Manager operations
├── requirements.txt       # Python dependencies
├── Dockerfile             # Container image
├── docker-compose.yml     # Local development
├── docker-start.sh        # Startup script
├── .env.example           # Example configuration
├── AGENTS.md              # Agent documentation
└── README.md              # This file

运行测试

# Install dependencies
pip install -r requirements.txt

# Test imports
python -c "from server import mcp; print('OK')"

许可证

DepStacks使用的内部工具。

目录标签

目录标签

Python云端部署DockerAWS操作本地部署多账户管理SecretsManagerSRE工具AssumeRole

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

10

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP