Skip to main content
Glama
karenrebecag

Power Automate MCP

by karenrebecag

Power Automate MCP

Ein lokaler MCP-Server, der es einem KI-Agenten ermöglicht, Ihre persönlichen Power Automate-Cloudflows zu prüfen und zu bearbeiten — authentifiziert mit Ihrem eigenen Microsoft-Konto, ohne Admin-Zustimmung und ohne kostenpflichtiges Abonnement.

Es existiert, weil die gehosteten Alternativen eine monatliche Gebühr verlangen, um eine API zu umhüllen, die Microsoft Ihrem Konto bereits kostenlos zur Verfügung stellt. Dieses Repo ist die Reverse-Engineering-Dokumentation darüber, wie diese API tatsächlich funktioniert, verpackt als funktionierendes Werkzeug. Persönliches Projekt, bereitgestellt wie besehen — lesen Sie den Hinweis zur Zuverlässigkeit, bevor Sie sich darauf verlassen.


Das Spannende daran: Authentifizierung, ohne die IT zu fragen

Jedes Tutorial, das die Verwaltung von Power Automate per Code erklärt, rät Ihnen, eine App in Entra ID zu registrieren und einen Administrator um die Zustimmung zu Dynamics CRM user_impersonation oder Flows.Manage.All zu bitten. In einem streng abgesicherten Unternehmens-Mandanten ist dieser Antrag von vornherein aussauschungslos — er gewährt einen dauerhaft bestehenden Dienstprinzipal, und Admins lehnen (zu Recht) ab.

Dieses Projekt umgeht das vollständig, indem es eine öffentliche First-Party-Client-ID verwendet, die Microsoft für interaktive Werkzeuge ausliefert:

51f81489-12ee-4a9e-aaae-a2591f45987d   ("Dynamics 365 Example Client", of XrmToolBox fame)

Abgewickelt über den OAuth-2.0-Device-Code-Grant, ist dies ein delegierter Login: Das Access Token trägt Ihre Identität und Ihre Berechtigungen, es gibt keinen Dienstprinzip, das jemand genehmigen müsste, und kein Zustimmungsbildschirm erscheint. Sie können von Ihrem Laptop aus sprechen Sie über Power Automate genau mit den Rechten, die Ihnen bereits im Portal zur Verfügung- Ihnen stehen — nicht nicht mehr, nicht weniger.

Die Audience des Tokens hat eine nicht auf der Hand liegende Besonderheit, die eine Untersuchung wert ist:

https://service.flow.microsoft.com//user_impersonation
                                  ^^ two slashes, on purpose

Die Legacy-URI of the resources ends with one slash and the v2 scope syntax appends /user_impersonation, so that a double slash. Manche Mandanten lehnen dissentieren Sie mit dem einfachen Slash ab. Exactly this one string the difference between a workable login and an opaque AADSTS error.

Eine andere interessantEinpunkt: Zwei APIs, die unterschiedliche Flows sehen

Es gibt zwei REST-Backends und sie sind nicht austauschbar:

api.flow.microsoft.com

api.powerplatform.com

Status

Undokumentiert, nicht unterstützt

Offiziell, dokumentiert (2024-10-01)

Sieht persönliche Flows

Ja

Nein — 404 ohne Dataverse

Sieht Solution-Flows

Ja

Ja

Wofür wir sie verwenden

Alles (persönliche Flows)

Integriert, aber inaktiv

Die Erkenntnis, die am meisten Recherche gekostet: Die unterstützte API kann persönliche Flows überhaupt nicht sehen. Sie setzt Flows, die in einer Lösung von Dataverse liegen, voraus. Also bleibt jedem Tool, das die Flows daran, wie sie ein Normales Benutzer im Portal Azure — einschließlich jedem bezahlten MCP — keine andere Wahl, als Sie die nicht unterstützte Service-API rüberzuspringen. Dieses Projekt macht diesen Trade-off explizit, statt ihn zu verstecken.

src/client/flow-api.ts hält beide Basis-URLs hinter einem einzigen Schalter, sodass ein Flow, der später in eine Solution verschoben wird (oder eine Zukunft, in der sich Service-API bricht), die Änderung einer einzigen Konstante ist — kein Umschreiben.


Hinweis zur Zuverlässigkeit (dies lesen)

api.flow.microsoft.com ist undokumentiert und von Microsoft nicht unterstützt. It does not matter what shape it changes or disappears without notice — and then the tool will break. That is exactly the risk behind duch. For which the paid service expenses be charged, it may not absorb on your behalf. You can also forge for yourself if you want to reproduce an item — for any "load-bearing" thing, but of no use to wechseln Sie accordingly accordingly.

Alles läuft als Sie. If you lose access to the account, the tool stops — direct is no service identity behind it.

Installation

Voraussetzungen: Node 18+ (for the built-in fetch) und pnpm. Ein Microsoft-Konto für Geschäft oder Schule, das Power Automate, verwenden kann — nothing mehr.

git clone https://github.com/karenrebecag/PowerAutomate_MCP.git
cd PowerAutomate_MCP
pnpm install
pnpm build

Anmeldeinformationen — einmalig Anmelden

Es gibt keine Konfigurationsdatei zum Bearbeiten und kein Geheimnis zum Einfügen. Die Authentifizierung ist eine interactive Device-Code-Anmeldung gegen Ihr eigenes Microsoft-Konto:

pnpm login

A URL with a short code is output:

  Power Automate MCP — sign in

  1. Open:  https://microsoft.com/devicelogin
  2. Code:  ABCD-EFGH

  Waiting for you to finish signing in...

Öffnen Sie die URL, geben Sie den Code ein, melden Sie sich mit dem Konto an, dessen Flows Sie verwalten möchten, und bestätigen Sie. At Erfolg wird ein Refresh-Token nach .pa-token geschrieben (Rechte 0600, gitignored). The server automatically creates short-lived access tokens from it — you will not be asked again until it expires (about ~90 days of inactivity). To switch accounts or after expired route, just run pnpm login again.

Optionale Umgebungsvariablen

Variable

Standard

Wann man sie unterstützt

PA_TENANT_ID

organizations

Eine bestimmte Mandanten-GUID festlegen, wenn Ihr Konto zu mehreren gehört.

PA_TOKEN_FILE`

.pa-token neben der package

Speichern Sie das Refresh-Token an einem anderen Ort.

pnpm probe runs the Phase 0 — it calls all lesen Endpunkte against your tenant and writes the real answers to scratch/ (gitignored). If a route in Ihre environment 404 zurücklegt, sehen you're it here instead of during use. It does not write anything.

pnpm probe

MCP-Client registrieren

Fügen Sie den Server der Konfiguration Ihrer Clients hinzu. For Claude Code, that is ~/.mcp.json:

{
  "mcpServers": {
    "power-automate": {
      "command": "node",
      "args": ["/absolute/path/to/PowerAutomate_MCP/dist/index.js"]
    }
  }
}

Verwenden Sie einen absoluten Pfad zu dist/index.js. The server finds .pa-token relative to its own location, so that only at the client workr working directory / environment variables have to be set. Starten Sie den Client neu (oder verbinden Sie den Server neu) und die sieben Tools to geschehen. A quick test from the terminal without Client:

printf '%s\n%s\n%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"c","version":"1"}}}' \
  '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
  | node dist/index.js

Tools

Tool

Schreibend hat es

Was sie macht

list_environments

nein

Jede Umgebung, die das Konto sehen kann. Hier beginnt Sie sich die richtige Umgebungs-ID.

list_flows

nein

Cloud-Flows in einer Umgebung (Zusammenfassung)

get_flow

nein

Vollständige editierbare Definition + Verbindungsreferenz.

get_flow_runs

nein

Letzte Ausführungen: Status, Code, Dauer.

get_run_actions

nein

Aufschlüsselung nach Action eines einzelnen Durchlaufs; bei Fehlern den Input/Output-Links folgen. Schutz, nicht debug.

set_flow_state

ja

flow starten / stoppen. Vorschau, es sei denn Sie übergeben confirm: true.

create_or_update_flow

ja

flow from Definitionen object can usual. dryRun ist der DefaultdryRun: false übergeben, um wirklich zu schreiben.

Typical Flow

list_environments            → grab the environment ID
list_flows(environmentId)     → find the flow you want, grab its ID
get_flow(env, flowId)         → read the definition
… edit the definition object …
create_or_update_flow(env, flowId, definition)          → preview (dryRun on)
create_or_update_flow(env, flowId, definition, dryRun:false)  → apply

Beide Schreib-Tools verweigern jede Änderung bis zu einer ausdrücklichen Freigabe (dryRun: false / confirm: true). Betrachten Sie das als Vorteil, not as hindrance — one single bad definition can break a live automation.

Projektstruktur

src/
  auth/       device-code login + silent refresh (the interesting bit)
  client/     thin HTTP wrapper over the two REST backends
  tools/      one file per MCP tool (added after Phase 0 confirms shapes)
  server.ts   MCP server wiring
  index.ts    stdio transport entry point
scripts/
  probe-endpoints.ts   Phase 0 reconnaissance — run before trusting any tool

Status

Funktioniert. Sieben Tools (fünf lesend, zwei schreiben), alle mit den echten Antwortstrukturen des Phase-0-Probers gegen a live tenant ty. pnpm verify (typecheck + lint + format + tests) grün. list_connections in v1 veröft absent — haben route lives rather than other provider. Pfad oder aother missing path, would have been shipped as vermutet; connection references are visibly inside get_flow anyway.

Lizenz & Zweck

Persönliches, pädagogisches Projekt zum Reverse Engineering. Geteilt, damit andere to learn, wie die API funktioniert und sich eigene Tooling bauen. Nicht mit Microsoft verbunden/förthem. Use you in your own account and in the bounds of your org's policies.

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.

  • Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/karenrebecag/PowerAutomate_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server