Power Automate MCP
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バックエンドがあり、それらは互換性がありません:
|
| |
ステータス | 非公開・非サポート | 公式・文書化済み( |
個人用フローを参照 | はい | いいえ — Dataverseなしでは404 |
ソリューションフローを参照 | はい | はい |
使用目的 | すべて(個人用フロー) | 配線済み・休止中 |
最も調査コストがかかった教訓: サポートされているAPIは個人用フローをまったく参照できません。フローがDataverseソリューション内に存在する必要があります。そのため、通常のユーザーがポータルで作成するフローを管理するツール(有料のMCPを含む)はすべて、非サポートのサービスAPIに依存せざるを得ません。このプロジェクトは、そのトレードオフを隠すのではなく、明確にしています。
src/client/flow-api.tsは両方のベースURLを1つのスイッチの背後に保持しているため、後でソリューションに移行するフロー(またはサービスAPIがついに壊れる未来)は、書き直しではなく1つの定数の変更で対応できます。
信頼性に関する注意事項(お読みください)
api.flow.microsoft.comはMicrosoftによって非公開かつ非サポートです。予告なく形が変わったり消えたりする可能性があり、その際はこのツールも壊れます。そのリスクこそが、有料サービスが代わりに吸収するために請求しているものです。自分で修正できる個人用ツールとしては、妥当なトレードオフです。重要な用途には適していません。適切に判断してください。
すべてはあなたとして実行されます。アカウントへのアクセスを失うと、ツールは動作を停止します — 背後にサービス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 loginURLと短いコードが表示されます:
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を再実行するだけです。
オプションの環境変数
変数 | デフォルト | 設定するタイミング |
|
| アカウントが複数のテナントに属する場合、特定のテナントGUIDを固定します。 |
| パッケージの隣の | リフレッシュトークンを別の場所に保存します。 |
検証(任意ですが推奨)
pnpm probeはフェーズ0を実行します — あなたのテナントに対してすべての読み取りエンドポイントを呼び出し、実際のレスポンスをscratch/(gitignore対象)にダンプします。ルートがお使いの環境で404になる場合、使用中ではなくここで確認できます。書き込み操作は一切行いません。
pnpm probeMCPクライアントに登録
サーバーをクライアントの設定に追加します。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ツール
ツール | 書き込み? | 機能 |
| いいえ | アカウントが参照できるすべての環境。環境IDを確認するにはここから始めます。 |
| いいえ | 環境内のクラウドフロー(概要フィールド)。 |
| いいえ | 編集可能な完全な定義+接続参照。 |
| いいえ | 最近の実行履歴:ステータス、コード、タイミング。 |
| いいえ | 1回の実行のアクション別内訳。失敗したアクションのinputs/outputsリンクも追跡します。デバッグ用ビューです。 |
| はい | フローの開始/停止。 |
| はい | 定義オブジェクトからフローを作成または編集します。 |
一般的なフロー
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とは提携しておらず、承認も受けていません。自分のアカウントと組織のポリシーの範囲内で使用してください。
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