Skip to main content
Glama
youxiang46

aliyun-mcp

by youxiang46

阿里云多账号 MCP

基于 FastMCP 的多账号阿里云只读 MCP 服务,结构与 aws_mcp 对齐:环境变量多账号、stdio/http 双传输、工具强制 account 参数、Prompts/Resources 分层。

功能

  • 多账号:ALIYUN_ACCOUNT_{KEY}_*,可选 ROLE_ARN + ROLE_SESSION_NAME(STS 扮演 RAM 角色)

  • 本机阿里云 CLI profile:

    • 可显式设置 ALIYUN_ACCOUNT_{KEY}_CLI_PROFILE=profile名

    • 未设置时会自动尝试本地 profile:先按账号 key(如 staging),再尝试 default

    • 读取来源为 ~/.aliyun/config.json(或 ALIYUN_CLI_CONFIG_PATH),仅支持 mode=AK

    • .env 里已写的 ACCESS_KEY_* / DEFAULT_REGION 优先于 profile 同字段

  • 只读工具:ECS DescribeInstances、VPC DescribeVpcs、标签 ListTagResources / ListSupportResourceTypes

  • 账单:QueryBillOverview

  • 监控:云监控 DescribeAlertHistoryList

  • 审计:ActionTrail LookupEvents

  • 日志服务:SLS Project/Logstore 列表与 GetLogs 日志查询,可用于已投递到 SLS 的访问日志/流量日志分析

  • 账号描述、区域与运维常量的 MCP Resources;中文 Prompt 模板

环境要求

  • Python 3.10+(推荐使用 3.11,可用 uv 管理虚拟环境)

安装

cd aliyun_mcp
uv venv -p 3.11
source .venv/bin/activate   # Windows: .venv\Scripts\activate
uv pip install -e .

配置

复制 .env.example 为 .env 并填写 AccessKey(建议使用 仅只读权限 的 RAM 用户或 STS 角色)。

cp .env.example .env

如需使用本地阿里云 CLI 配置,可二选一:

  • 显式指定 profile:ALIYUN_ACCOUNT_STAGING_CLI_PROFILE=prod-ops

  • 不指定 profile:MCP 自动尝试 staging 与 default

Landing Zone(Resource Directory)自动发现子账号

如果你有大量子账号,不想逐个配置 AK/SK,可启用 RD 自动发现:

  1. 仅配置一个“管理账号”逻辑账号(AK/SK 或 CLI profile)。

  2. 在各子账号创建同名只读角色(如 ReadOnlyForMcp),并信任管理账号扮演。

  3. 打开 RD 自动发现开关,MCP 会自动生成子账号逻辑账号(底层通过 STS AssumeRole)。

示例环境变量:

ALIYUN_RD_AUTO_DISCOVERY=true
ALIYUN_RD_MANAGER_ACCOUNT_KEY=rd_manager
ALIYUN_RD_ROLE_NAME=ReadOnlyForMcp
ALIYUN_RD_ROLE_SESSION_NAME=aliyun-mcp
ALIYUN_RD_ACCOUNT_KEY_PREFIX=rd
ALIYUN_RD_DEFAULT_REGION=cn-shanghai
# ALIYUN_RD_INCLUDE_SUSPENDED=false

自动生成的账号标识格式为 rd_{子账号ID},例如 rd_1234567890123456。

启动

stdio(Cursor 本地 MCP):

python main.py

HTTP:

python main.py --transport http --host 0.0.0.0 --port 8000

安装后的入口命令(若 PATH 可用):

aliyun-mcp

接入 Agent

见 docs/REGISTRATION_GUIDE.md 与 RAM 只读策略示例 docs/RAM_READONLY_EXAMPLE.json。

Docker

docker build -t aliyun-mcp:latest .
docker run --rm -p 8000:8000 --env-file .env aliyun-mcp:latest --transport http --host 0.0.0.0 --port 8000

安全说明

  • 勿将 .env 提交到仓库;生产环境优先 STS AssumeRole + 最小只读策略。

  • 工具返回可能含内网 IP、资源 ID,请勿随意外发。

aliyun-mcp

Related MCP Connectors