Power Automate MCP Server by Flow Studio

io.github.ninihen1Published by GitHub account ninihen1v1.0.0Updated Oct 25, 2026

Debug, build, and manage Power Automate cloud flows with AI agents

Overview

AI-generated overview

A remote MCP server that lets an AI assistant inspect, debug, build and govern Microsoft Power Automate cloud flows, including action-level run data.

What you can do
Search and browse the server's own tools and skill bundles, and file bug reports or capability requests back to the provider. List, read and update flows, environments, makers, Power Apps and connections from a cached Power Clarity snapshot (Pro+ plan). Fetch live flow definitions, run history, per-run errors and action inputs/outputs, including loop iterations. Trigger, cancel, resubmit, start or stop flows, and create or update flow definitions with dry-run and surgical edit options. Describe connectors, resolve connector action parameters, test or create connections, and add flows to solutions.
When to use it
Use it when an assistant needs to diagnose why a Power Automate flow failed, see action-level inputs and outputs that the Graph API does not expose, or build and edit flow definitions. Also useful for tenant-wide flow health, maker and connector inventory, and governance work without the CoE Starter Kit.
Requirements
A remote endpoint at mcp.flowstudio.app over streamable HTTP; no local runtime. A Flow Studio MCP API key sent in the x-api-key header, or Microsoft sign-in via the OAuth connector path. A paid Flow Studio MCP subscription for live tools, and a Teams or MCP Pro+ plan for the cached store tools. Network access to Power Automate.
Before you install
The API key is a secret and grants access to your Power Automate tenant data; keep it out of shared configs. Several tools write or act on live systems: update_live_flow creates or changes flows, trigger_live_flow runs them, cancel and resubmit affect runs, set_live_flow_state starts or stops flows, and create_live_connection creates connections. Flow definitions, run data and connection details are sent to the Flow Studio service. Bug reports should not contain passwords, tokens or full flow d

Installation

In SourceWeft

  1. Open Power Automate MCP Server by Flow Studio in the dashboard and add it to a workspace.
  2. Connect x-api-key credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.ninihen1%2Fflowstudio-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "power-automate-by-flow-studio": {
      "type": "http",
      "url": "https://mcp.flowstudio.app/mcp",
      "headers": {
        "x-api-key": "<YOUR_API_KEY>"
      }
    }
  }
}

README

FlowStudio MCP — Power Automate Skills for AI Agents

Give your AI agent the same visibility you have in the Power Automate portal — plus a bit more. The Graph API only returns top-level run status — agents can't see action inputs, loop iterations, or nested failures. FlowStudio MCP exposes all of it.

[Agent debugging a Power Automate flow via MCP]

You can click through the portal and find the root cause. Your agent can't — unless it has MCP.

[The portal shows everything to a human — but agents only see the top-level error via Graph API]

[With FlowStudio MCP, the agent sees what you see]

When you need this

  • Your agent can see that a flow failed, but not why — Graph API only returns status codes
  • You want your agent to see action-level inputs and outputs, like you can in the portal
  • A loop has hundreds of iterations and some produced bad output — in the portal you'd click through each one, but the agent can scan all iteration inputs and outputs at once
  • You want to check flow health, failure rates, and maker activity across your tenant without opening the admin center
  • You need to classify flows, detect orphaned resources, or audit connectors at scale — without installing the CoE Starter Kit
  • You're tired of being the middle-man between your agent and the portal

Graph API vs FlowStudio MCP

The core difference: Graph API gives your agent run status. MCP gives your agent the inputs and outputs of every action.

What the agent seesGraph APIFlowStudio MCP
Run passed or failedYesYes
Action inputs and outputsNoYes
Error details beyond status codeNoYes
Child flow run detailsNoYes
Loop iteration dataNoYes
Flow definition (read + write)LimitedFull JSON
Resubmit / cancel runsLimitedYes
Cached flow health & failure ratesNoYes
Maker / Power Apps / connection inventoryNoYes
Governance metadata (tags, impact, owner)NoYes

Skills

SkillDescription
power-automate-mcpConnect to and operate Power Automate cloud flows — list flows, read definitions, check runs, resubmit, cancel
power-automate-debugStep-by-step diagnostic process for investigating failing flows
power-automate-buildBuild, scaffold, and deploy Power Automate flow definitions from scratch
power-automate-monitoringFlow health, failure rates, maker inventory, Power Apps, environment and connection counts
power-automate-governanceClassify flows by impact, detect orphans, audit connectors, manage notifications, compute archive scores

The first three skills use live Power Automate API calls. The monitoring and governance skills use the cached store — a daily snapshot with aggregated stats, remediation hints, and governance metadata. Requires a FlowStudio for Teams or MCP Pro+ subscription for store tools.

Each skill follows the Agent Skills specification and works with any compatible agent.

Supported agents

Copilot, Claude Code, ChatGPT, Codex, OpenClaw, Gemini CLI, Cursor, Goose, Amp, OpenHands

Guides

Full walkthroughs on learn.flowstudio.app:

Quick Start

Connect from ChatGPT or claude.ai

Sign in with your Microsoft account instead of pasting a key. Add https://mcp.flowstudio.app/mcp/oauth as a connector in ChatGPT (Developer mode on) or at claude.ai, then follow the sign-in prompt. Walkthrough: ChatGPT for Power Automate.

Install as Claude Code plugin

Available through the Claude plugin marketplace after approval. To test locally:

bash
git clone https://github.com/ninihen1/power-automate-mcp-skills.gitclaude --plugin-dir ./power-automate-mcp-skills

Then connect the MCP server:

bash
claude mcp add --transport http flowstudio https://mcp.flowstudio.app/mcp \  --header "x-api-key: <YOUR_TOKEN>"

Get your token at mcp.flowstudio.app.

Install in Codex

Inside a Codex session, install skills directly:

$skill-installer install https://github.com/ninihen1/power-automate-mcp-skills/tree/main/skills/power-automate-mcp$skill-installer install https://github.com/ninihen1/power-automate-mcp-skills/tree/main/skills/power-automate-debug$skill-installer install https://github.com/ninihen1/power-automate-mcp-skills/tree/main/skills/power-automate-build$skill-installer install https://github.com/ninihen1/power-automate-mcp-skills/tree/main/skills/power-automate-monitoring$skill-installer install https://github.com/ninihen1/power-automate-mcp-skills/tree/main/skills/power-automate-governance

Then connect the MCP server in ~/.codex/config.toml:

toml
[mcp_servers.flowstudio]url = "https://mcp.flowstudio.app/mcp"
[mcp_servers.flowstudio.http_headers]x-api-key = "<YOUR_TOKEN>"

Install via skills.sh

Search for flowstudio on skills.sh, or:

bash
npx skills add github/awesome-copilot -s flowstudio-power-automate-mcpnpx skills add github/awesome-copilot -s flowstudio-power-automate-debugnpx skills add github/awesome-copilot -s flowstudio-power-automate-buildnpx skills add github/awesome-copilot -s flowstudio-power-automate-monitoringnpx skills add github/awesome-copilot -s flowstudio-power-automate-governance

Install via ClawHub

bash
npx clawhub@latest install power-automate-mcp

Install via Smithery

bash
npx smithery skill add flowstudio/power-automate-mcp

Manual install

Copy the skill folder(s) into your project's .github/skills/ directory (or wherever your agent discovers skills).

Connect the MCP server

Claude Code:

bash
claude mcp add --transport http flowstudio https://mcp.flowstudio.app/mcp \  --header "x-api-key: <YOUR_TOKEN>"

Codex (~/.codex/config.toml):

toml
[mcp_servers.flowstudio]url = "https://mcp.flowstudio.app/mcp"
[mcp_servers.flowstudio.http_headers]x-api-key = "<YOUR_TOKEN>"

Copilot / VS Code (.vscode/mcp.json):

json
{  "servers": {    "flowstudio": {      "type": "http",      "url": "https://mcp.flowstudio.app/mcp",      "headers": { "x-api-key": "<YOUR_TOKEN>" }    }  }}

Get your token at mcp.flowstudio.app.

Real debugging examples

These are from real production investigations, not demos.

  • Expression error in child flow — contains(string(...)) crashed on a nested property. Agent traced through parent flow, into child, through loop iterations, and found the failing input. Portal showed "ExpressionEvaluationFailed" with no context.

  • Data entry, not a flow bug — User reported two "bugs" back to back. Agent proved both were data entry errors (missing comma in email, single address in CC field). Flow was correct. Diagnosed in seconds.

  • Null value crashes child flow — split(Name, ', ') crashed when 38% of records had null Names. Agent traced parent to child to loop to action, found the root cause, and deployed a fix via update_live_flow.

Prerequisites

  • A FlowStudio MCP subscription (all live tools)
  • For store tools (monitoring, governance): FlowStudio for Teams or MCP Pro+
  • MCP endpoint: https://mcp.flowstudio.app/mcp
  • API key / JWT token (passed as x-api-key header)

Repository structure

skills/  power-automate-mcp/          core connection & operation skill  power-automate-debug/        debug workflow skill  power-automate-build/        build & deploy skill  power-automate-monitoring/   flow health & tenant inventory skill  power-automate-governance/   compliance & governance skillexamples/                      real debugging walkthroughsREADME.mdLICENSE                        MIT

Available on GitHub

Works with Copilot, Claude, ChatGPT, and any MCP-compatible agent.

Contributing

Contributions welcome. Each skill folder must contain a SKILL.md with the required frontmatter. See the existing skills for the format.

License

MIT


Keywords: Power Automate debugging, flow run history, expression evaluation failed, child flow failure, nested action errors, loop iteration output, agent automation MCP, Power Platform AI, flow definition deploy, resubmit failed run, flow monitoring, governance, CoE, orphan detection, connector audit, archive score, maker inventory

Source: README.md at commit fc316ef

Tools

30

list_skills

List skill bundles

Skill bundles: groups of the tools listed here that are used together for one task (diagnose-connection-references, build-flow, debug-flow, monitor-flow, discover, governance). Returns each bundle's name and one-line description. Use it when unsure which tools fit a request; tool_search "skill:<name>" returns the bundle's full guidance and definitions. Non-billable.

Takes no parameters.

report_bug

Report a bug

Report a Flow Studio MCP bug or missing capability, append text evidence, or check your reports. Free and available even after quota is reached. Do not include passwords, access tokens, secrets, or full flow definitions unless necessary.

Parameterschunkactionrequirednotifyticketcontentdetailssummarycategoryseverityfile_nameflow_nametool_name+6 more

list_store_flows

List cached flows

[Requires Pro+ plan] List Power Automate flows from the Power Clarity cache. Optionally filter by governance flags (monitor, notification rules). Returns key fields including trigger URL, state, and run failure rate. Data is from the stored snapshot — not live from the Power Automate API.

Parametersmonitorrule_notify_onfailrule_notify_onmissingdays

get_store_flow

Get cached flow

[Requires Pro+ plan] Get full details for a single Power Automate flow from the Power Clarity cache. Includes trigger URL, owners, state, run statistics, and governance metadata. Data is from the stored snapshot — not live from the Power Automate API.

ParametersflowNamerequiredenvironmentNamerequired

get_store_flow_runs

Get cached run history

[Requires Pro+ plan] Get cached run history for a flow from the Power Clarity store. Defaults to the last 7 days. Returns startTime, endTime, status, duration (seconds), failedActions, and remediation hint per run. Data is from the stored snapshot — not live from the Power Automate API.

ParameterstopstatusendTimeflowNamerequiredstartTimeenvironmentNamerequired

get_store_flow_summary

Get cached run summary

[Requires Pro+ plan] Get aggregated run statistics for a flow from the Power Clarity cache: total runs, success count, failure count, success rate, fail rate, and average/max duration over a time window. Data is from the stored snapshot — not live from the Power Automate API.

ParametersendTimeflowNamerequiredstartTimeenvironmentNamerequired

update_store_flow

Update flow governance fields

[Requires Pro+ plan] Update governance/metadata fields on a flow record in the Power Clarity store (description, business impact, owner team, tags, monitor flag, notification settings, etc.). Only fields provided are updated (merge semantics). Writes to the cache — does not call the Power Automate API.

ParameterstagstiermonitorcriticalflowNamerequiredsecurityownerTeamdescriptionsupportEmailsupportGroupbusinessValuebusinessImpact+6 more

list_store_environments

List cached environments

[Requires Pro+ plan] List all Power Platform environments from the Power Clarity cache.

Takes no parameters.

list_store_makers

List makers

[Requires Pro+ plan] List all makers (citizen developers / AAD users) from the Power Clarity cache.

Takes no parameters.

get_store_maker

Get maker

[Requires Pro+ plan] Get details for a single maker from the Power Clarity cache by their key (usually the AAD object ID). Includes flow/app counts and whether the account has been deleted.

ParametersmakerKeyrequired

list_store_power_apps

List cached apps

[Requires Pro+ plan] List all Power Apps canvas apps from the Power Clarity cache.

Takes no parameters.

list_store_connections

List cached connections

[Requires Pro+ plan] List all Power Platform connections from the Power Clarity cache.

Takes no parameters.

get_live_flow_runs

List flow runs

Fetch run history for a flow directly from Power Automate. Returns { runs, runCount, triggerChecks }: each run has name, status, startTime, endTime, trigger name/code, and any top-level error. IMPORTANT — no runs does NOT mean the flow is healthy. A trigger that fires and evaluates to nothing, or fails to evaluate, records a TRIGGER CHECK and never becomes a run. When there are no runs (or when includeTriggerChecks is set) this tool also reports the trigger check history, so "nothing ran" can be told apart from "the trigger has been failing". Read triggerChecks.byStatus before concluding a flow is fine.

ParameterstopstatusflowNamerequiredstartedAfterstartedBeforeenvironmentNamerequiredtriggerCheckStatusincludeTriggerChecks

get_live_flow_run_error

Get run error

Fetch error details for a specific flow run from the live Power Automate API. Lists every failed action with its error code and message to help diagnose what went wrong.

ParameterstoprunNamerequiredflowNamerequiredenvironmentNamerequired

get_live_flow_run_action_outputs

Get run action inputs and outputs

Read the recorded inputs and outputs of actions in one flow run. Without actionName: the top-level actions (optionally filtered by name). With actionName: every execution of that action across foreach iterations, each with repetitionIndexes, status, error, and resolved inputs/outputs. Use iterationIndex to pin one iteration; omit it for all. TRIGGER PAYLOADS: set trigger=true with a runName to get that run's trigger inputs and outputs. No Compose workaround is needed. TRIGGER CHECKS: pass checkId (from get_live_flow_runs -> triggerChecks.recent[].checkId) to read a trigger evaluation that never became a run — that is how you see WHY a trigger is failing. Do not supply runName with a checkId.

ParameterstopcheckIdrunNametriggerflowNamerequiredactionNameiterationIndexenvironmentNamerequired

trigger_live_flow

Run flow

Run a flow on demand — the same as the maker portal's "Run flow" button. Works with Request triggers (HTTP request, manual Button, PowerApps) and with scheduled RECURRENCE flows, which run immediately; a scheduled flow takes no inputs, so passing `body` to one is refused. Pass trigger inputs as `body`. Automated connector triggers only fire from their source event.

ParametersbodyflowNamerequiredconnectionsenvironmentNamerequired

cancel_live_flow_run

Cancel run

Cancel a currently running Power Automate flow run via the live PA API. Use after get_live_flow_runs to obtain the run name. Only runs with status "Running" can be cancelled.

ParametersrunNamerequiredflowNamerequiredenvironmentNamerequired

resubmit_live_flow_run

Resubmit run

Resubmit a failed or cancelled Power Automate flow run via the live PA API, re-using the original trigger payload. Discovers the trigger name from the flow definition automatically — no trigger name parameter needed.

ParametersrunNamerequiredflowNamerequiredenvironmentNamerequired

set_live_flow_state

Turn flow on or off

Start or stop the flow you name. Reads the current state first and only calls Power Automate if a change is actually needed.

ParametersstaterequiredflowNamerequiredenvironmentNamerequired

get_live_flow

Get flow definition

Fetch the full native Power Automate flow JSON from the PA API, including the complete flow definition (triggers, actions, parameters, outputs). Returns the raw properties object exactly as the PA API returns it. Use this to inspect the full definition before calling update_live_flow with a modified definition.

ParametersdepthactionsflowNamerequiredenvironmentNamerequiredincludeTriggerUrl

update_live_flow

Create or update flow

Update or create a flow. Use `dryRun: true` to preview any change without writing. Omit flowName to create: definition and displayName are required. Give flowName to update: displayName and/or definition and/or connectionReferences. SURGICAL EDIT: pass `operations` — an ordered list of set/add/remove/merge ops on array-of-keys paths — to change one action or parameter without resending the whole definition. Provide EITHER operations OR definition; connectionReferences may accompany either and lands in the same save. WHOLE definition: call get_live_flow, mutate properties.definition, pass it here. RENAME: pass displayName alone. Power Automate rejects a PATCH carrying no flow content, so this re-saves the unchanged definition — the maker portal does the same. definition.description is required, and must be brief — we append " #flowstudio-mcp" to it.

ParametersdryRunflowNamedefinitionoperationsdisplayNameenvironmentNamerequiredconnectionReferencesexpectedLastModifiedTime

list_live_environments

List environments

List all Power Platform environments you belong to, directly from Power Automate. Returns id, displayName, sku, location, and state for each environment. mode=all (default) and mode=member: every environment you are a member of. mode=admin: only those you administer; errors rather than guessing if admin access cannot be determined. isAdmin means you hold the ListAnyFlow permission there — the capability list_live_flows mode=admin needs. It is null, never false, when the platform did not tell us. isMember is true for every environment returned.

Parameterstopmode

list_live_flows

List flows

List Power Automate flows in an environment. Returns id, displayName, state, triggerType, and lastModifiedTime for each flow. mode=owner (default): flows you own plus flows shared with you (personal + team), with full definitions. mode=admin: all flows in the environment (requires an admin account). mode=admin with includeDeleted=true also returns soft-deleted flows (state=Deleted) — the only way to find a deleted flow. If search is provided, results are filtered to flows whose displayName contains the search text. For large environments pagination is time-bounded — if nextLink is returned, pass it as continuationUrl to retrieve the next batch.

ParameterstopmodesearchincludeDeletedtimeoutSecondscontinuationUrlenvironmentNamerequired

list_live_connections

List connections

List Power Platform connections in an environment directly from Power Automate. Returns id, displayName, connectorName, environment, createdBy (full object), authenticatedUser, statuses, overallStatus, createdTime, expirationTime, and connectionParameters for each connection. Pass search=<term> to narrow the list and receive a paste-ready connectionReferenceTemplate plus action-side hostTemplate per connection — drop these into update_live_flow's connectionReferences and inputs.host without further edits.

ParameterstopsearchenvironmentNamerequired

describe_live_connector

Describe connector

Describe a live Power Platform connector/API and its operations. Use mode=summary (default) to get a compact operation catalog. Use operationId to describe one operation, including inputs, outputs, dynamic parameter metadata, nextTool hints to call resolve_live_parameters, and an authored hint + canonical example shape (when one exists) to copy into update_live_flow. Use search without connectorName/apiName to search operations across connectors and get connection-aware suggestions. Use mode=full only when raw OpenAPI connector metadata is required.

ParameterstoptypedepthsearchapiNamevariantoperationIdconnectorNameenvironmentNamerequired

add_live_flow_to_solution

Add flow to solution

Move a flow into a solution. Refuses if the flow is already in one. solutionId is optional — omit for the default solution.

ParametersflowNamerequiredsolutionIdenvironmentNamerequired

resolve_live_parameters

Resolve action inputs

Resolve a connector action's inputs the way the flow designer does: dropdown options, list and table columns, folder and file pickers — every input in one call, or one with parameterName. Reads only: it runs the lookups the designer runs, never an action. Pass values you have in parameters; pass a display name in match to get back the value to write into the flow. An input whose parent is not known yet has status "needs". Inputs inside an object are addressed by key (body/recipient/groupId). Omit connectionName and one is chosen.

ParameterstopskipmatchbrowsedetailsearchapiNameincludeflowNameactionNameparametersoperationId+4 more

test_live_connection

Test connection

Test a connection, or run one operation on it. Without operationId it runs the connector's own connection test. With operationId it runs that operation and returns the raw reply: a GET operation, or a lookup the connector itself declares for a dropdown, list, schema or folder picker. Anything else is refused before a call is made. connectionName comes from list_live_connections; operation ids from describe_live_connector.

ParametersparametersoperationIdconnectorNamerequiredconnectionNamerequiredcontinuationUrlenvironmentNamerequired

create_live_connection

Create connection

Create a connection, or sign an existing one in again (pass connectionName). Shows a sign-in card where the person signs in; you never sign in for them. Without the card, give the person signInLink to open. Connectors that use a key or account details instead of a sign-in are refused: create those in Power Automate.

ParametersconnectorNamerequiredconnectionNameenvironmentNamerequired

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts