aliyun-mcp
by youxiang46
README.md
# 阿里云多账号 MCP
基于 [FastMCP](https://github.com/jlowin/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](https://github.com/astral-sh/uv) 管理虚拟环境)
## 安装
```bash
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 角色)。
```bash
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)。
示例环境变量:
```env
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):**
```bash
python main.py
```
**HTTP:**
```bash
python main.py --transport http --host 0.0.0.0 --port 8000
```
安装后的入口命令(若 PATH 可用):
```bash
aliyun-mcp
```
## 接入 Agent
见 [docs/REGISTRATION_GUIDE.md](docs/REGISTRATION_GUIDE.md) 与 RAM 只读策略示例 [docs/RAM_READONLY_EXAMPLE.json](docs/RAM_READONLY_EXAMPLE.json)。
## Docker
```bash
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
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues