# MCP Power Automate [Health: Active]

**Category:** 🏢 Workplace & Productivity  
**Repository:** https://github.com/kaael1/mcp-power-automate  
**GitHub Stars:** 27  
**npm Downloads (last month):** 203  
**Views:** 1  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/mcp-power-automate

## Description
Local MCP for Power Automate flows with browser-backed auth, extension, and Codex skill.

## Tools
Capabilities this server exposes over MCP:

- **get_health** — Return the current flow status plus cached run and update summaries for troubleshooting.
- **list_flows** — List flows from the currently captured environment and optionally filter by name.
- **refresh_flows** — Refresh the flow catalog for the currently captured environment.
- **set_active_flow** — Select which flow the MCP should operate on inside the current environment.
- **set_active_flow_from_tab** — Set the active flow target from the currently captured browser tab flow.
- **get_active_flow** — Return the selected flow target plus the current browser tab flow context.
- **create_flow** — Create a new blank flow in the current environment and select it as the active target.
- **clone_flow** — Clone an existing flow inside the current environment and optionally make the clone the active target.
- **get_status** — Show whether a Power Automate browser session is captured, which flow is selected, and which flow is open in the current tab.
- **get_flow** — Fetch the selected Power Automate flow target and return a normalized editable payload.
- **update_flow** — Update the selected flow using the normalized flow payload returned by get_flow. The existing environment metadata is preserved automatically.
- **list_runs** — List recent runs for the selected flow target.
- **get_latest_run** — Return the most recent run for the selected flow target.
- **get_trigger_callback_url** — Return the callback URL for the selected flow trigger when the trigger supports manual invocation.
- **invoke_trigger** — Invoke the selected flow trigger using its callback URL when the trigger supports manual execution.
- **get_run** — Return details for a specific run of the selected flow target.
- **get_run_actions** — Return action-level statuses for a specific run of the selected flow target.
- **wait_for_run** — Poll the latest run or a specific run until it reaches a terminal status or a timeout is reached.
- **get_last_update** — Return the last successful flow update recorded by the local bridge, including before/after data, summaries, and a structured review diff.
- **get_last_run** — Return the last run summary cached by the local bridge.
- **revert_last_update** — Revert the selected flow target to the last successfully recorded before-state. The target flow must match the last updated flow.
- **validate_flow** — Validate the selected flow definition using the legacy Power Automate validation endpoints when available.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "mcp-power-automate": {
    "command": "npx",
    "args": ["-y","@kaael1/mcp-power-automate"]
  }
}
```

## Documentation & README

<p align="center">
  <img src="https://raw.githubusercontent.com/kaael1/mcp-power-automate/HEAD/assets/readme-cover.png" alt="MCP Power Automate cover: inspect, validate, edit, and revert Power Automate flows with an MCP agent" width="720" />
</p>

# MCP Power Automate

Local-first MCP server and Chromium extension for AI-assisted Microsoft Power Automate work.

Use your existing logged-in browser session to let an MCP client inspect, validate, edit, run, review, and revert Power Automate cloud flows. No Microsoft Entra ID app registration, admin consent flow, or custom enterprise application setup is required to get started.

> Early public signal: 15,000+ LinkedIn post views and 14 GitHub stars while the project is still small, practical, and moving fast.

## Why It Exists

Power Automate is powerful, but AI agents need more than raw convenience before they should touch real flows. This project keeps the workflow visible and reversible:

- The browser extension captures the active Power Automate context and compatible tokens from your own Chromium session.
- The MCP server exposes a v1 command surface for targeting, reading, previewing, validating, saving, run inspection, and rollback.
- The extension stays mostly passive: status, diagnostics, and review surfaces instead of mystery buttons that hide what changed.
- Local state, snapshots, and backups stay on your machine.

## What It Can Do

| Area | Capabilities |
| --- | --- |
| Context | Detect browser-captured flows, list flows, and explicitly lock onto a target flow. |
| Safe editing | Read the flow, preview the smallest candidate update, validate, save, review the diff, and revert. |
| Debugging | Inspect recent runs, latest run details, and action-level failures. |
| Testing | Invoke safe manual/request trigger flows and wait for the resulting run. |
| Solutions | List unmanaged Dataverse solutions, inspect solution components and environment variables, add existing flows, and create blank flows inside solutions. |

Write operations are deliberately scoped. The MCP does not expose solution deletion, component deletion, managed-solution modification, environment-variable writes, or blind production edits as the default path.

## Quickstart

Register the MCP in Codex:

```powershell
codex mcp add power-automate-local -- npx -y @kaael1/mcp-power-automate
```

Find the packaged extension path:

```powershell
npx -y @kaael1/mcp-power-automate extension-path
```

Load that folder in Chromium:

1. Open `chrome://extensions` or `edge://extensions`.
2. Enable Developer Mode.
3. Choose `Load unpacked`.
4. Select the folder printed by `extension-path`.

Then open or focus a Power Automate flow page. The extension captures the session and target context automatically.

Check readiness:

```powershell
npx -y @kaael1/mcp-power-automate doctor
```

## Recommended Agent Loop

For a supervised edit, ask your MCP client to follow this loop:

1. `doctor`
2. `get_context`
3. `connect_flow`
4. `get_flow`
5. `preview_flow_update`
6. `validate_flow`
7. `apply_flow_update`
8. `get_last_update`
9. `validate_flow` again when available

For run inspection and manual/request trigger tests, use `list_runs`, `get_latest_run`, `get_run`, `get_run_actions`, `wait_for_run`, `get_trigger_callback_url`, and `invoke_trigger`.

For Dataverse solution work, use `list_solutions`, `list_solution_components`, `list_environment_variables`, `add_flow_to_solution`, and `create_flow_in_solution`. Solution writes are intentionally limited to adding cloud flows to unmanaged solutions.

## Public v1 Tools

```text
get_context
doctor
connect_flow
list_flows
list_solutions
list_solution_components
list_environment_variables
add_flow_to_solution
get_flow
preview_flow_update
validate_flow
apply_flow_update
get_last_update
revert_last_update
list_runs
get_latest_run
get_run
get_run_actions
wait_for_run
get_trigger_callback_url
invoke_trigger
create_flow
create_flow_in_solution
clone_flow
```

## Safety Model

- Inspect with `get_context`, `connect_flow`, and `get_flow` before any write.
- Preview with `preview_flow_update` before saving.
- Validate before and after meaningful edits when Power Automate accepts validation.
- Review `get_last_update` after save so the diff is visible.
- Use `revert_last_update` when the saved result is wrong.
- Prefer test or staging flows before production flows.

If Power Automate rejects a save because of a connection permission problem, the MCP reports `CONNECTION_AUTHORIZATION_FAILED` and waits for the user to fix that connection in Power Automate. If the service rejects a field such as `retryPolicy`, the MCP reports `SCHEMA_VALIDATION_FAILED` with the rejected member so the agent can correct the candidate flow instead of guessing.

## Browser-Backed Auth

The extension can capture Power Automate, Power Platform/BAP, and Dataverse-audience tokens from your logged-in browser session. When those tokens are present, `get_context` and `/health` expose readiness details such as `canManageSolutions`.

This means the MCP can work without a new Microsoft Entra app registration, but it also means the browser session remains the live authority. If a token expires or a permission is missing, reopen or focus the relevant Power Automate, Power Apps, or Dataverse page and retry after capture.

## HTTP Bridge

The local bridge listens on `127.0.0.1:17373`.

- `GET /health` is kept for simple probes.
- `GET /v1/health` returns bridge identity and readiness.
- `GET /v1/context` returns the same context used by the MCP.
- `GET /v1/commands` lists the public v1 command surface.
- `POST /v1/commands/:name` runs any public v1 command with a JSON body.

Only the process that owns the bridge port executes stateful work. If another process already owns the port, new MCP instances refuse to reuse it; stop the existing bridge process or choose a different `POWER_AUTOMATE_BRIDGE_PORT`.

## Development

```powershell
npm install
npm run typecheck
npm run lint
npm run test
npm run build
npm run pack:dry-run
```

For a local clone, prefer registering Codex against the built server from this checkout:

```powershell
npm run build
$nodePath = (Get-Command node).Source
$serverPath = Join-Path (Get-Location) "dist/server/index.js"
codex mcp add power-automate-local -- $nodePath $serverPath
```

If an older local entry exists, remove it first:

```powershell
codex mcp remove power-automate-local
```

Load the browser extension from `dist/extension` after rebuilding. Runtime state lives in `data/` and must not be committed.

## Docs

- [Launch kit](https://github.com/kaael1/mcp-power-automate/blob/HEAD/docs/launch-kit.md)
- [Multi-provider distribution](https://github.com/kaael1/mcp-power-automate/blob/HEAD/docs/multi-provider-distribution.md)
- [Publishing](https://github.com/kaael1/mcp-power-automate/blob/HEAD/PUBLISHING.md)
- [Codex skill bundle](https://github.com/kaael1/mcp-power-automate/blob/HEAD/skills/power-automate-mcp/README.md)

## Package Links

- GitHub: https://github.com/kaael1/mcp-power-automate
- npm: https://www.npmjs.com/package/@kaael1/mcp-power-automate
- MCP Registry: https://registry.modelcontextprotocol.io/v0/servers?search=io.github.kaael1/mcp-power-automate

## License

MIT. See [LICENSE](https://github.com/kaael1/mcp-power-automate/blob/HEAD/LICENSE).

