Skip to main content
Glama
karenrebecag

Power Automate MCP

by karenrebecag

Power Automate MCP

Un servidor MCP local que permite a un agente de IA inspeccionar y editar tus flujos en la nube personales de Power Automate — autenticado con tu propia cuenta de Microsoft, sin consentimiento de administrador y sin suscripción de pago.

Existe porque las alternativas alojadas cobran una cuota mensual por envolver una API que Microsoft ya expone a tu cuenta de forma gratuita. Este repositorio es el análisis de ingeniería inversa de cómo funciona de verdad esa API, empaquetado como una herramienta funcional. Proyecto personal, proporcionado tal cual — lee la nota de fiabilidad antes de depender de él.


La parte interesante: cómo se autentica sin pedir permiso a TI

Todo tutorial de «gestiona Power Automate desde código» te dice que registres una aplicación en Entra ID y consigas que un administrador dé su consentimiento a Dynamics CRM user_impersonation o Flows.Manage.All. En un inquilino corporativo con restricciones, esa petición no tiene ninguna posibilidad: supone conceder una entidad de servicio permanente y los administradores (con razón) dicen que no.

Este proyecto lo evita por completo usando un ID de cliente de primera parte público que Microsoft incorpora para herramientas interactivas:

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

A través del flujo de código de dispositivo de OAuth 2.0, se trata de un inicio de sesión delegado: el token lleva tu identidad y tus permisos, no hay ninguna entidad de servicio que nadie deba aprobar y no aparece ninguna pantalla de consentimiento. Puedes hablar con Power Automate desde tu portátil exactamente con los derechos que ya tienes en el portal, nada más y nada menos.

El público del token tiene una peculiaridad poco evidente que merece la pena documentar:

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

El URI de recurso heredado termina en barra y la sintaxis de ámbito v2 añade /user_impersonation, lo que produce la doble barra. Algunos inquilinos rechazan la forma de una sola barra. Esa s sola cadena es la diferencia entre un inicio de sesión que funciona y un error AADSTS opaco.

La otra parte interesante: dos API que ven flujos distintos

Hay dos backends REST y no son intercambiables:

api.flow.microsoft.com

api.powerplatform.com

Estado

Sin documentar, sin soporte

Oficial, documentada (2024-10-01)

Ve flujos personales

No — 404 sin Dataverse

Ve flujos de solución

Para qué la usamos

Para todo (flujos personales)

Integrada, inactiva

La lección que más costó de investigar: la API compatible no puede ver en absoluto los flujos personales. Exige que el flujo viva en una solución de Dataverse. Wikipedia, es decir, cualquier herramienta que gestione los flujos que un usuario normal crea en el portal —incluidos todos los MCP de pago — no tiene más alternativa que usar la API de servicio no soportada. Este proyecto hace explícito ese intercambio en lugar de ocultarlo.

src/client/flow-api.ts mantiene ambas URLs base tras un único interruptor, de modo que un flujo que después pase a formar parte de una solución (o un futuro en el que la API de servicio diga hemos finished) se reduza a cambiar una constante, no a tant de todo.


Nota de fiabilidad (léelo)

api.flow.microsoft.com no está documentada ni recibe soporte de Microsoft. Puede cambiar su estructura o desaparecer sin previo aviso, y esta herramienta fallara , ? > when it happens. Ese riesgo es cía exactamente lo que los servicios de pago te cobran para absorber. Para una herramienta personal en la que tú misso mismo lo reparas, es un buen agreement. Para cualquier cosa la que esté seriedad, no lo es. Elige en consecuencia.

Todo se ejecuta como tú . Si pierdes el acceso a la cuenta, la herramienta deja de funcionar: detrás no hay ninguna identidad de servicio.


Instalación

Requisitos: Node 18+ (para el fetch) integrado) y pnpm. Una cuenta de Microsoft de trabajo o educativa que puede usar Power Automate — nada más.

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

Credenciales — inicia sesión una vez

No hay ningún archivo de configuración que editar ni ningún secreto que pegar. La autenticación es un inicio de sesión interactivo de código de dispositivo contra tu propia cuenta de Microsoft:

pnpm login

Se imprime una dirección URL y un código corto:

  Power Automate MCP — sign in

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

  Waiting for you to finish signing in...

Abre la URL, introduce el código de nuevo, inicia sesión con la cuenta cuyos flujos quieres gestionar y acepta. Si se completa correctamente, se escribe un token de actualización en .pa-token (permisos `0600», ignorado por git). El servidor accede automatic(al... M, caduca (~90 días de inactividad). Entra en otra cuenta o con un token caducado en la línea de comando, ac , simply re-run.

Variables de entorno opcionales

Variable

Valor por defecto

Cuándo configurarla

PA_TENANT_ID

organizaciones

Fijar a un tenant GUID concreto si tu cuenta belongs to varios.

PA_TOKEN_FILE

.pa-token junto al paquete

Guarda allí the token de renovación.

Verificación (opcional pero recomendada)

pnpm probe runs Phase 0: it tries all available read endpoints berlin, ya has ... against your tenant and dumps the real outputs to a template (ignored by git). If one route falls 404 in tu entorno, will be here, and not use it. Nothing that it does is written inter.

pnpm probe

Registro con tu cliente MCP

Añade el servidor a la configuración de ng your client. For Claude Code that's ~/.mcp.json:

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

Use una ruta absoluta a dist/index.js. The server finds .pa-token relative its own path, así no need to configurar working dirs nor environmental variables in your client. Restart the client (or the server returns) and the seven tools appear . For cheaper, run from terminal's help without a 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

Herramientas

Tool

Écrit?

What it does

list_environments

no

Todos los entornos que la cuenta ve. Empieza aquí para obtener el ID de un entorno.

list_flows

no

Flujos en la nube de un entorno (resumen).

get_flow

no

Definición más editable full + references of connection.

get_flow_runs

no

History of recent runs: status, code, timing.

get_run_actions

no

Detallea por acción for each run; sigue the links for inputs/outputs of fallback runs. Debugging view.

set_flow_state

Inicia / detiene el flujo. Also previews unless you have confirm: true.

create_or_update_flow

Cre or edit a flow from an object definition. dryRun is the default — match dryRun: false if you want to save.

Uso típico

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

Ambas herramientas de escritura no afectan to anything until a expressly active during download: dryRun: false / confirm: true. Consider this a better feature, nota annoyance — was one broken definition enough to make a hardaborte live accident.

Estructura del proyecto

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

Estado

Facebook needs this status: "Working." Seven tools (five read, two write), each typed against the real data of the answers captured by the read-only test in the real trademark. pnpm /domain (typecheck + lint + format + tests) has green words. la comunidad de las.

Licencia e intención

Personal, educational reverse-engineering project,.. sharing. San here para que aquellos learn cómo funciona this API and build realizate based on. No affiliation with Microsoft. Use within your own account and conform to your organization'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