内容
# Power Automate MCP 服务器
一个 [MCP](https://modelcontextprotocol.io) 服务器,暴露 Power Automate 云流管理和管理运行故障排除给 MCP 客户端(Claude Code、Claude Desktop 等)。
它与 Power Automate 管理平面(`api.flow.microsoft.com`,`Microsoft.ProcessSimple` 提供程序)使用 `service.flow.microsoft.com` 目标的 Entra令牌进行通信。使用**委托**身份验证(交互式 / 命令行界面)时,它**不需要管理员同意** — 它作为已登录的用户运行,并查看用户拥有或共享的流。
## 工具
### 读取(始终开启)
| 工具 | 用途 |
| --------------------- | ------------------------------------------------------------------------------------- |
| `list_environments` | 列出 Power Platform 环境及其 `name`(在其他地方使用)。 |
| `list_flows` | 列出调用者可以在环境中看到的云流。 |
| `get_flow` | 完整的流 JSON — 触发器/操作定义和连接引用。 |
| `list_flow_runs` | 流的最近运行,按最新运行顺序排列,包含状态/错误;通过 `nextLink` 分页。 |
| `get_flow_run` | 一个运行的完整详细信息,包括每个操作的运行状态和错误负载。 |
### 写入(`PA_MCP_MODE=write`)
| 工具 | 用途 |
| -------------- | ------------------------------------------------------ |
| `run_flow` | 触发手动触发流的按需运行。 |
| `enable_flow` | 启动流使其触发器生效。 |
| `disable_flow` | 停止流使其触发器不再生效。 |
每个写入调用都会在标准错误输出中记录审计日志,包含时间戳、工具、目标和调用者身份。
### 破坏性操作(`PA_MCP_MODE=write` **和** `PA_MCP_ALLOW_DELETE=true`)
| 工具 | 用途 |
| ------------- | -------------------------------------------------------------------- |
| `delete_flow` | 永久删除流。分为两步:`dry_run=true` 返回将被删除的流和一次性 `confirm_token`;只有第二个调用使用 `dry_run=false` 和该令牌执行删除,由 `If-Match` ETag 保护。 |
破坏性操作级别默认关闭。启用后,每个调用都是计划:`dry_run=true`(默认值)返回将被删除的流和一次性 `confirm_token`;只有第二个调用使用 `dry_run=false` 和该令牌执行删除,由 `If-Match` ETag 保护。
## 安装
```bash
cd power-automate-mcp-server
npm install
```
在 MCP 客户端中注册它。示例 `.claude.json` 条目(委托身份验证,只读):
```json
{
"mcpServers": {
"power-automate": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/power-automate-mcp-server/index.js"],
"env": {
"AZURE_TENANT_ID": "<your-entra-tenant-id>",
"PA_AUTH_MODE": "interactive",
"PA_MCP_MODE": "read"
}
}
}
}
```
要允许触发和启用/禁用流,请设置 `"PA_MCP_MODE": "write"`。要允许删除,还要添加 `"PA_MCP_ALLOW_DELETE": "true"`。
如果要省略每个调用的环境,请将 `PA_DEFAULT_ENVIRONMENT` 设置为 `list_environments` 的值。
参见 [`.env.example`](.env.example) 获取完整的环境变量列表,包括所有支持的身份验证模式。
## 身份验证说明
- **委托(此处推荐):** `interactive`、`device-code` 或 `cli`。无需管理员同意,但调用者只能看到他们拥有或共享的流。
- **服务主体:** 非交互式,但服务主体必须在可以枚举流之前获得 Power Platform 管理员同意 — 这是租户管理员的操作。
## 要求
- Node.js >= 20
- 可以登录到目标租户的 Power Automate 的 Entra 身份。
## 许可证
MIT — 请参见 [LICENSE](LICENSE)。