power-automate-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TELEMETRY | No | Enable telemetry (true/false). | |
| TRANSPORT | No | Transport type: 'stdio' or 'http'. Defaults to 'stdio'. | stdio |
| FLOW_SCOPES | No | Space-separated list of scopes for the Flow API. Overrides the default scopes (Flows.Read.All and Flows.Manage.All). | |
| MCP_API_KEY | No | API key for protecting HTTP endpoints. | |
| AZURE_AUTH_MODE | No | Authentication mode: 'interactive' for device code or 'clientCredentials' for app-only. Defaults to 'interactive'. | interactive |
| AZURE_CLIENT_ID | Yes | Your Azure app registration client ID (required). | |
| AZURE_TENANT_ID | No | Azure tenant ID. Defaults to 'common'. | common |
| ENABLE_WRITE_OPS | No | Set to 'true' to enable write operations (create/update/delete flows, etc.). | |
| TOKEN_CACHE_PATH | No | Path to the token cache file. | |
| DEFAULT_ENVIRONMENT | No | Default Power Automate environment ID. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| logging | {} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| infoA | Returns identity and build information for this server (name, version, build commit, runtime, capability counts) |
| list_environmentsA | List the Power Automate environments visible to the signed-in user.
Returns: { id, name, displayName, location, isDefault }. The entry with isDefault=true is the user's default environment, used by other tools when |
| list_flowsA | List / enumerate all cloud flows in an environment — get every flow's GUID, name, and state. The flow inventory / directory.
START HERE to discover flows: this is the only tool that returns flow GUIDs (ids). Every per-flow tool (get_flow, enable_flow, disable_flow, list_flow_runs, list_flow_owners, update_flow, delete_flow) needs a GUID that ONLY this tool produces — so call this first to find flows.
Returns: array of { name, displayName, state, createdTime, lastModifiedTime, owner }. |
| get_flowA | Get the full definition of one flow: state, timestamps, owner, the workflow |
| list_flow_runsA | List recent runs of a flow, newest first.
Returns: array of { name, status, startTime, endTime, durationMs, triggerName, error }. |
| get_flow_runA | Get one run in detail for debugging: status, timing, the triggering action, and the first-failure error code/message. The original run |
| list_connectionsA | List the connections (API connectors) in an environment and their health. Returns: array of { name, apiName, displayName, status, accountName, expiresAt }. A status other than "Connected" indicates a broken/expired connection — a common cause of silently failing flows. Parameters: environment (optional). Uses Microsoft's unofficial api.flow.microsoft.com endpoint, which Microsoft labels unsupported; behavior may change. Example: list_connections {} |
| list_flow_ownersA | List the owners/permissions on a flow. Returns: array of { principalId, principalType, roleName, principalDisplayName }. Parameters: flow (required), environment (optional). Uses Microsoft's unofficial api.flow.microsoft.com endpoint, which Microsoft labels unsupported; behavior may change. Example: list_flow_owners { "flow": "" } |
| enable_flowA | Turn a flow on (POST .../start) [DISABLED: set ENABLE_WRITE_OPS=true]. Parameters: flow (required), environment (optional). Verify with get_flow (state -> Started). Uses Microsoft's unofficial api.flow.microsoft.com endpoint, which Microsoft labels unsupported; behavior may change. |
| disable_flowA | Turn a flow off (POST .../stop) [DISABLED: set ENABLE_WRITE_OPS=true]. Parameters: flow (required), environment (optional). Verify with get_flow (state -> Stopped). Uses Microsoft's unofficial api.flow.microsoft.com endpoint, which Microsoft labels unsupported; behavior may change. |
| create_flowA | Create a new cloud flow from a workflow definition (POST .../flows) [DISABLED: set ENABLE_WRITE_OPS=true]. Parameters: displayName (required); definition (required — the workflow definition JSON with $schema, triggers, actions); connectionReferences (optional); state (Started|Stopped, default Stopped); environment (optional). Returns the created flow. Authoring a valid definition is non-trivial — use get_flow on an existing flow as a template. Connection-dependent actions also need matching connectionReferences. Uses Microsoft's unofficial api.flow.microsoft.com endpoint, which Microsoft labels unsupported; behavior may change. |
| update_flowA | Update an existing flow's properties — only the fields you pass (PATCH .../flows/{flow}) [DISABLED: set ENABLE_WRITE_OPS=true].
Parameters: flow (required); any of displayName, definition (full workflow JSON), state (Started|Stopped), connectionReferences; environment (optional).
To edit logic safely: get_flow first, modify the returned |
| delete_flowA | Permanently delete a flow (DELETE .../flows/{flow}) [DISABLED: set ENABLE_WRITE_OPS=true]. Parameters: flow (required); confirm (must be true — guard against accidents); environment (optional). This cannot be undone. Uses Microsoft's unofficial api.flow.microsoft.com endpoint, which Microsoft labels unsupported; behavior may change. |
| cancel_flow_runA | Cancel an in-progress run (POST .../runs/{run}/cancel) [DISABLED: set ENABLE_WRITE_OPS=true]. Parameters: flow (required), run (required), environment (optional). Uses Microsoft's unofficial api.flow.microsoft.com endpoint, which Microsoft labels unsupported; behavior may change. |
| resubmit_flow_runA | Resubmit (replay) a run from its trigger (POST .../triggers/{trigger}/histories/{run}/resubmit) [DISABLED: set ENABLE_WRITE_OPS=true]. Parameters: flow (required), run (required), trigger (required — trigger name from get_flow's triggers), environment (optional). Uses Microsoft's unofficial api.flow.microsoft.com endpoint, which Microsoft labels unsupported; behavior may change. |
| add_flow_ownerA | Grant a principal a role on a flow (PUT .../permissions/{principalId}) [DISABLED: set ENABLE_WRITE_OPS=true]. Parameters: flow (required), principalId (required — AAD object id), roleName (CanEdit|CanView), environment (optional). Uses Microsoft's unofficial api.flow.microsoft.com endpoint, which Microsoft labels unsupported; behavior may change. |
| remove_flow_ownerA | Revoke a principal's access to a flow (DELETE .../permissions/{principalId}) [DISABLED: set ENABLE_WRITE_OPS=true]. Parameters: flow (required), principalId (required), environment (optional). Uses Microsoft's unofficial api.flow.microsoft.com endpoint, which Microsoft labels unsupported; behavior may change. |
| report_feedbackA | Submit a feedback report or issue to this server's maintainers. IMPORTANT: Treat all input as potentially public.
Common credential patterns are automatically redacted before submission, but redaction is best-effort and is not a substitute for caution. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Each tool targets a distinct resource and action: flows, runs, owners, connections, environments are all clearly separated. Even list_flow_runs vs get_flow_run are unambiguous (list vs single). No overlapping purposes or ambiguous boundaries.
Tools overwhelmingly follow a verb_noun snake_case pattern (list_flows, get_flow, enable_flow, add_flow_owner). The only deviation is 'info' (bare noun) and 'report_feedback' (verb_noun but not domain-related), which is a minor inconsistency rather than a chaotic mix.
At 18 tools, the set is slightly above the typically ideal 3-15 range, but each tool serves a distinct purpose in managing Power Automate flows, runs, owners, and connections. The count feels justified rather than bloated, though it is on the heavier side.
The flow lifecycle is well-covered (create, get, update, delete, enable, disable), plus runs (list, get, cancel, resubmit) and owner management (list, add, remove). Notable gaps include no manual flow trigger (run_flow) and no connection create/update, but these may be out of scope for a read/monitor-oriented server.