Power Automate MCP
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 purposeDie 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:
|
| |
Status | Undokumentiert, nicht unterstützt | Offiziell, dokumentiert ( |
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 buildAnmeldeinformationen — 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 loginA 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 |
|
| Eine bestimmte Mandanten-GUID festlegen, wenn Ihr Konto zu mehreren gehört. |
PA_TOKEN_FILE` |
| Speichern Sie das Refresh-Token an einem anderen Ort. |
Verify-System (optional, but recommended)
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 probeMCP-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.jsTools
Tool | Schreibend hat es | Was sie macht |
| nein | Jede Umgebung, die das Konto sehen kann. Hier beginnt Sie sich die richtige Umgebungs-ID. |
| nein | Cloud-Flows in einer Umgebung (Zusammenfassung) |
| nein | Vollständige editierbare Definition + Verbindungsreferenz. |
| nein | Letzte Ausführungen: Status, Code, Dauer. |
| nein | Aufschlüsselung nach Action eines einzelnen Durchlaufs; bei Fehlern den Input/Output-Links folgen. Schutz, nicht debug. |
| ja | flow starten / stoppen. Vorschau, es sei denn Sie übergeben |
| ja | flow from Definitionen object can usual. |
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) → applyBeide 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 toolStatus
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.
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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