Inspect, operate, and author Microsoft Power Automate cloud flows from an agent context.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
💡 Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
An MCP server that lets agents inspect, operate, and author Microsoft Power Automate cloud flows from a CLI/agent context — list and inspect flows, debug runs, check connections and owners, and (when explicitly enabled) enable/disable flows, cancel/resubmit runs, manage owners, and create/update/delete flows.
Primarily a management surface — the Power Automate portal's visual designer remains the
better place to author complex flow logic — but create_flow/update_flow/delete_flow are
also available (write-gated) for programmatic authoring. Built on
SomaMCP (telemetry, health/info/
dashboard, error classification) over FastMCP.
⚠️ Unofficial API. v1 targets
api.flow.microsoft.com— the surface the Power Automate portal itself uses. Microsoft labels it "isn't supported. Customers should instead use the Dataverse Web APIs." It is stable in practice and, unlike Dataverse, sees all flows (including personal "My Flows") and works on M365‑seeded entitlements (no Premium license). Every tool's description carries this disclaimer. A supported Dataverse backend is stubbed for the future (seesrc/backend/dataverse/README.md).
On first use the server prints a device-code prompt to stderr; open
https://microsoft.com/devicelogin, enter the code, and sign in. The token is cached
(TOKEN_CACHE_PATH, mode 0600) and silently refreshed thereafter.
Developing on this repo? It ships a project-scoped .mcp.json (stdio, local
dist/bin.js). After pnpm build, export AZURE_CLIENT_ID and open the repo in Claude Code —
the power-automate server loads automatically (complete the device-code sign-in once; the
cached token is then reused).
This server ships no default client id — you register your own (one‑time):
power-automate-mcp). Supported account types: multitenant (or
single‑tenant if you'll only ever use one org).http://localhost (unused by device code, but required to register the platform). Set
"Allow public client flows" = Yes.AZURE_CLIENT_ID.For unattended clientCredentials mode instead: add a client secret, grant application
permissions with admin consent, and set AZURE_AUTH_MODE=clientCredentials,
AZURE_TENANT_ID=<your tenant>, AZURE_CLIENT_SECRET=.... Note app‑only has limited Flow
reach (it generally cannot see personal "My Flows").
Confirmed against a real tenant. Interactive Flow auth needs all four of these — each one,
if missing, fails with a different cryptic AADSTS… (details in docs/api-notes.md):
AZURE_TENANT_ID=<your-tenant-GUID>, not common. common + a
resource scope → AADSTS50059 (and MSAL hides it as an empty device-code response).7df0a125-d3be-4c96-aa54-591f83ff541c). Missing → AADSTS650057..default, when reusing an app that has other (incrementally
consented) permissions — .default validates the whole app and can fail with AADSTS650051.
A dedicated app may use .default. Pin via FLOW_SCOPES.isFallbackPublicClient=true). Off → token redemption
fails with invalid_client.Verified FLOW_SCOPES:
https://service.flow.microsoft.com/Flows.Read.All,https://service.flow.microsoft.com/Flows.Manage.All
azRecommended: a dedicated public-client app with only the Flow delegated permissions avoids the
.default/shared-app pitfalls (#3) entirely — cleaner than reusing a Graph app.
All tools are read‑only by default. Write tools are registered but refuse unless
ENABLE_WRITE_OPS=true.
| Tool | Parameters | Returns |
|---|---|---|
list_environments | — | { id, name, displayName, location, isDefault }[] |
list_flows | environment?, owner? | { name, displayName, state, createdTime, lastModifiedTime, owner }[] |
get_flow | environment?, flow | full flow incl. definition, connectionReferences, trigger/action names |
list_flow_runs | environment?, flow, top? (≤100), status? | { name, status, startTime, endTime, durationMs, triggerName, error }[] |
get_flow_run | environment?, flow, run | run detail + first‑failure + raw properties (debugging) |
list_connections | environment? | { name, apiName, displayName, status, accountName, expiresAt }[] |
list_flow_owners | environment?, flow | { principalId, principalType, roleName, principalDisplayName }[] |
ENABLE_WRITE_OPS=true)| Tool | Parameters |
|---|---|
create_flow | environment?, displayName, definition, connectionReferences?, state? |
update_flow | environment?, flow, any of displayName / definition / state / connectionReferences |
delete_flow | environment?, flow, confirm (must be true) |
enable_flow / disable_flow | environment?, flow |
cancel_flow_run | environment?, flow, run |
resubmit_flow_run | environment?, flow, run, trigger |
add_flow_owner | environment?, flow, principalId, roleName (CanEdit|CanView) |
remove_flow_owner | environment?, flow, principalId |
Authoring (
create_flow/update_flow):definitionis the raw Logic Apps-style workflow JSON (seeget_flowoutput as a template). The visual designer is better for complex logic; for edits,get_flow→ modify thedefinition→ pass it back toupdate_flow.
When environment is omitted, tools use DEFAULT_ENVIRONMENT if set, else the discovered
default environment (isDefault: true).
info MCP tool — server name, version, git SHA, capability counts.report_feedback — file API‑drift/bug reports as GitHub issues (FEEDBACK_GITHUB_REPO,
GITHUB_TOKEN)./health, /health/detail, /info, /dashboard (the detailed ones are
protected by MCP_API_KEY when set).See .env.example for the full list. Highlights: AZURE_CLIENT_ID (required),
AZURE_TENANT_ID (common), AZURE_AUTH_MODE, TRANSPORT (stdio|http), PORT,
ENABLE_WRITE_OPS, DEFAULT_ENVIRONMENT, MCP_API_KEY, TELEMETRY, TOKEN_CACHE_PATH.
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/power-automate-mcp-server)<a href="https://allmcps.com/mcp/power-automate-mcp-server"><img src="https://allmcps.com/api/badge/power-automate-mcp-server?style=directory" alt="Power Automate MCP Server on AllMCPs" /></a>