Skip to main content
Glama
karenrebecag

Power Automate MCP

by karenrebecag

Power Automate MCP

ローカルで動作するMCPサーバーで、AIエージェントが個人用Power Automateクラウドフローの閲覧・編集を、自分のMicrosoftアカウントで認証して行えるようにします。管理者の承認も有料サブスクリプションも不要です。

このプロジェクトが存在する理由は、ホスト型の代替サービスが、Microsoftがすでにあなたのアカウントに無料で公開しているAPIをラップするだけで月額料金を請求しているからです。このリポジトリは、そのAPIが実際にどう動作するかをリバースエンジニアリングした解説を、動作するツールとしてパッケージ化したものです。個人プロジェクトであり、現状のまま提供されます — 依存する前に信頼性に関する注意事項をお読みください。


興味深い点:IT部門に頼らずに認証する仕組み

「Power Automateをコードから管理する」チュートリアルはどれも、Entra IDにアプリを登録して、管理者にDynamics CRM user_impersonationまたはFlows.Manage.Allへの同意をもらうよう指示します。ロックダウンされた企業テナントでは、その依頼は最初から無理な話です — 常設のサービスプリンシパルを付与することになり、管理者は(当然ながら)拒否します。

このプロジェクトは、Microsoftが対話型ツール用に提供しているパブリックなファーストパーティクライアントIDを使用することで、その問題を完全に回避します:

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

OAuth 2.0デバイスコードグラントを通じて駆動されるこれは委任型ログインです。トークンはあなたのIDと権限を保持し、承認を求めるサービスプリンシパルは存在せず、同意画面も表示されません。ポータルで既に持っている権限とまったく同じ権限で、ラップトップからPower Automateにアクセスできます — それ以上でもそれ以下でもありません。

トークンのオーディエンスには、文書化する価値のある直感的でない癖が1つあります:

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

レガシーなリソースURIはスラッシュで終わり、v2スコープ構文は/user_impersonationを追加するため、二重スラッシュが生成されます。一部のテナントは単一スラッシュ形式を拒否します。この1つの文字列が、正常なログインと不可解なAADSTSエラーの違いを生みます。

もう1つの興味深い点:異なるフローを参照する2つのAPI

2つのRESTバックエンドがあり、それらは互換性がありません:

api.flow.microsoft.com

api.powerplatform.com

ステータス

非公開・非サポート

公式・文書化済み(2024-10-01)

個人用フローを参照

はい

いいえ — Dataverseなしでは404

ソリューションフローを参照

はい

はい

使用目的

すべて(個人用フロー)

配線済み・休止中

最も調査コストがかかった教訓: サポートされているAPIは個人用フローをまったく参照できません。フローがDataverseソリューション内に存在する必要があります。そのため、通常のユーザーがポータルで作成するフローを管理するツール(有料のMCPを含む)はすべて、非サポートのサービスAPIに依存せざるを得ません。このプロジェクトは、そのトレードオフを隠すのではなく、明確にしています。

src/client/flow-api.tsは両方のベースURLを1つのスイッチの背後に保持しているため、後でソリューションに移行するフロー(またはサービスAPIがついに壊れる未来)は、書き直しではなく1つの定数の変更で対応できます。


信頼性に関する注意事項(お読みください)

api.flow.microsoft.comMicrosoftによって非公開かつ非サポートです。予告なく形が変わったり消えたりする可能性があり、その際はこのツールも壊れます。そのリスクこそが、有料サービスが代わりに吸収するために請求しているものです。自分で修正できる個人用ツールとしては、妥当なトレードオフです。重要な用途には適していません。適切に判断してください。

すべてはあなたとして実行されます。アカウントへのアクセスを失うと、ツールは動作を停止します — 背後にサービスIDはありません。


インストール

要件:Node 18+(組み込みのfetch用)とpnpm。Power Automateを使用できるMicrosoftの職場/学校アカウント — それだけです。

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

資格情報 — 一度だけサインイン

編集する設定ファイルも、貼り付けるシークレットもありません。認証は、自分のMicrosoftアカウントに対する対話型のデバイスコードログインです:

pnpm login

URLと短いコードが表示されます:

  Power Automate MCP — sign in

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

  Waiting for you to finish signing in...

URLを開き、コードを入力し、管理したいフローのアカウントでサインインして承認します。成功するとリフレッシュトークン.pa-token(権限0600、gitignore対象)に書き込まれます。サーバーはそこから短期間のアクセストークンを自動的に生成するため、有効期限が切れるまで(約90日間の非アクティブ)再確認を求められることはありません。アカウントを切り替えたり、期限切れのトークンから回復したりするには、pnpm loginを再実行するだけです。

オプションの環境変数

変数

デフォルト

設定するタイミング

PA_TENANT_ID

organizations

アカウントが複数のテナントに属する場合、特定のテナントGUIDを固定します。

PA_TOKEN_FILE

パッケージの隣の.pa-token

リフレッシュトークンを別の場所に保存します。

検証(任意ですが推奨)

pnpm probeはフェーズ0を実行します — あなたのテナントに対してすべての読み取りエンドポイントを呼び出し、実際のレスポンスをscratch/(gitignore対象)にダンプします。ルートがお使いの環境で404になる場合、使用中ではなくここで確認できます。書き込み操作は一切行いません。

pnpm probe

MCPクライアントに登録

サーバーをクライアントの設定に追加します。Claude Codeの場合は~/.mcp.jsonです:

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

dist/index.jsへの絶対パスを使用してください。サーバーは自身の場所を基準に.pa-tokenを探すため、クライアントで作業ディレクトリや環境変数を設定する必要はありません。クライアントを再起動(またはサーバーに再接続)すると、7つのツールが表示されます。クライアントなしでターミナルから簡単に確認する方法:

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

ツール

ツール

書き込み?

機能

list_environments

いいえ

アカウントが参照できるすべての環境。環境IDを確認するにはここから始めます。

list_flows

いいえ

環境内のクラウドフロー(概要フィールド)。

get_flow

いいえ

編集可能な完全な定義+接続参照。

get_flow_runs

いいえ

最近の実行履歴:ステータス、コード、タイミング。

get_run_actions

いいえ

1回の実行のアクション別内訳。失敗したアクションのinputs/outputsリンクも追跡します。デバッグ用ビューです。

set_flow_state

はい

フローの開始/停止。confirm: trueを渡さない限りプレビューします。

create_or_update_flow

はい

定義オブジェクトからフローを作成または編集します。dryRunがデフォルト — 実際に書き込むにはdryRun: falseを渡します。

一般的なフロー

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

両方の書き込みツールは、明示的にオプトインするまで(dryRun: false / confirm: true)何も変更しません。それを煩わしさではなく機能として扱ってください — 1つの不適切な定義で本番の自動化が壊れる可能性があります。

プロジェクト構成

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

ステータス

動作中。7つのツール(読み取り5つ、書き込み2つ)は、それぞれ実在のテナントに対するフェーズ0プローブで取得した実際のレスポンス形式に基づいて型付けされています。pnpm verify(型チェック+lint+フォーマット+テスト)はグリーンです。list_connectionsはv1から意図的に除外されています — そのルートは別のプロバイダーパスに存在するため、推測で出荷するのではなく削除されました。接続参照はget_flow内で確認できます。

ライセンスと意図

個人向け・教育目的のリバースエンジニアリングプロジェクトです。他の人がこのAPIの仕組みを学び、その上に独自の個人ツールを構築できるように共有されています。Microsoftとは提携しておらず、承認も受けていません。自分のアカウントと組織のポリシーの範囲内で使用してください。

-
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