「あのフロー動かして」の一言で、Power Automate Desktopは動くのか? ―Claude×RPA連携をMCPでつないだ全手順
こんにちは!YaroTechです。
前回(構想編)で、「クロ助(Claude Desktop)にRPAを"自分の手"で動かしてもらう」ための設計図を広げました。Power Automate Desktop(以下PAD)のフローを、AIへの一言で起動する自作MCP「pad-mcp」の構想です。そして今回、いよいよ実機で作って、動かして、ストップウォッチで測りました。
先に、いちばん正直な結果からお伝えします。「起動の速さ」だけで勝負したら、手動のほうが速かったんです。それでも私は、AIにRPAを渡してよかったと思っています。この記事は、その負けを認めたうえで「じゃあ価値はどこにあったのか」を、実測とソースコードで確かめた記録です。
※見出し画像のプロンプトは一番下におまけで公開中!
🖥️ 実行環境
今回の検証は、すべて以下の実機(X1)で行いました。数値はこの環境での実測値です。
PC: ThinkPad X1 Carbon(非ARM)
OS: Windows 11 Home 25H2
メモリ: 32GB
RPA: Power Automate Desktop 11.2606.217.0(Microsoft Store版・無料プラン)
AI(司令塔): Claude Desktop(クロ助)
AI(実装担当): Claude Code(クロコ)
自作MCP: Python 3.12.10 / FastMCP 3.4.2(stdio接続)
実装のコードを書いたのは、今回もクロコ(Claude Code)です。私は「検証」と「計測」と「判断」に集中しました。「コードはクロコが書く」という前作からの構図を、今回も地で行っています。
🎯 この記事で得られること
この記事は有料記事ですが、「結果は無料、再現は有料」の方針で切り分けています。
無料で読めること
PAD三部作(書ける→覚える→動かす)の完結の物語
前回予告した「5つの壁」の勝敗表(実測ベース・全勝)
Before/Afterの実測値(手動 vs 一言)と、手動が勝った正直な話
クロ助がPAD画面を見ずにRPAを動かした瞬間の描写
有料で読めること
pad-mcpのソースコード全文(Python / FastMCP・コメント付き)
フロー台帳 `pad_flows.json` と `claude_desktop_config.json` の設定内容
URLプロトコルの正確な書式と、入力変数のエスケープの正解
つまずき実録の詳細(エラー原文つき・deserializeエラーの真犯人)
許可リスト方式のセキュリティ実装
📊 実際の成果
まず、前回予告した5つの壁の勝敗です。結論から言うと、全部越えられました。ただし壁②だけは一度負けて、二度目で勝っています(その顛末は後述)。
壁① URLプロトコル起動:〇 ― 無料版のまま起動成功。Premium要求は出ませんでした。
壁② 入力変数:〇 ― フローに日本語テキストを渡せました(※一度失敗→方式変更で成功)。
壁③ 完了検知:〇 ― マーカーファイル+実行ログ+トースト通知の三重で検知。
壁④ 一覧取得:〇 ― PADに一覧APIは無いので、台帳(許可リスト)方式で確定。
壁⑤ 許可リスト:〇 ― 台帳外のフローは、PADに触れる前に門前払い。
そして、いちばんお見せしたかったBefore/Afterです。正直に、計測条件も添えて書きます。
Before(手動起動):PADコンソールが閉じた状態から、コンソールを起動→フローを選択→実行ボタン→フローが動き出すまで。実測 8秒。
After(クロ助に一言):依頼を送り、PADの信頼確認ダイアログで「続行」を押し、フローが動き出すまで。実測 13秒〜。
そう、単発の起動レースは、手動の勝ちでした。理由もはっきりしています。無料版では「外部からフローを実行しますか?」という信頼確認ダイアログが必ず出るので、そのぶんクリックが1回増えるのです。さらにフロー本体の実行時間(今回のテストフローで約10秒)は、手動でもAI経由でもまったく同じでした。当たり前ですが、動かしているPADは同じ一つですから、経路を変えても実行そのものは速くなりません。

ここまで測って、私は「じゃあ意味がなかったのか?」と少し落ち込みました。でも、実際に何度も動かすうちに、価値は速さじゃないところにあったと気づきます。それが次の実践パートの主題です。
🚀 実践内容
まず「素の起動」から確かめた
いきなりMCPを作らず、MCPなしのURL単体で起動を確かめる、という順番にしました。トラブルが出たときに「PAD側の問題か、MCP側の問題か」を即座に切り分けるためです。
PADには、フローを外部から起動するための`ms-powerautomate:`というURLプロトコルが用意されています。ここで最初の山場が来ました。
山場①:公式ドキュメントすら、割れていた
事前調査で分かっていたのは、公式ドキュメント同士が矛盾しているという事実でした。URL起動の解説ページには「Premium(有償)プランが必要」と書いてある一方、リリースノートには「ショートカット/URL起動はもうPremium限定ではなく全ユーザーが使える」と書いてある。どちらが本当なのか、5つのAIに横断調査させても意見が割れました。
こういうときは、実機が最終審判です。X1の無料版PADで、テストフローの完成URLを叩いてみました。結果は――起動成功。出てきたのは「続行/キャンセル」の信頼確認ダイアログだけで、Premiumを要求する画面は一切出ませんでした。公式の矛盾は、「無償化された」側が正しかった、と自分の手で決着をつけられたわけです。
クロ助がPADを"見ずに"動かした瞬間
素の起動が確認できたので、クロコにpad-mcpを実装してもらい、Claude Desktopに登録しました。3つの道具(`list_flows`/`run_flow`/`get_run_status`)が認識されたのを確認して、いよいよ通し検証です。

山場②:三部作の完結
私はクロ助にこう頼みました。「使えるフロー教えて」。クロ助は台帳どおり2件を返します。続けて「TestFlow01を動かして」。ここから起きたことを、実際のツールの動きで書くと
――クロ助は`run_flow`を呼び、実行を追跡するための固有IDを発行し、PADにURLを送りました。
私が信頼ダイアログで「続行」を押すと、クロ助は`get_run_status`で状態を確認し、最初は「実行中(起動から13秒)」、少し待ってから「success(正常に完了しました)」と報告してきたのです。
このとき、クロ助はPADの画面を一度も見ていません。それでも「起動した」「まだ動いている」「終わった」を、自分で判断して私に報告しました。前作で"書ける"ようになり、その前で"覚える"ようになったRPAが、ついに"動かす"に到達した瞬間でした。
PAD三部作、これで完結です。

価値は「速さ」ではなく、この4つだった
起動レースには負けました。でも何度も使ううちに、AIにRPAを渡す本当の価値は、次の4つだと分かってきました。
① 文脈を離れなくていい。 手動なら、今やっている作業を中断してPADコンソールを探しに行きます。AI経由なら、クロ助と話している流れのまま「ついでにあれ動かして」で済む。8秒 vs 13秒の差より、"作業を中断して別アプリを探しに行かない"ことのほうが、体感ではずっと効きます。
② 完了検知と成否報告まで自動。 手動起動は「押して終わり」。本当に成功したかは自分で結果ファイルを開いて確かめます。pad-mcpは、成功/失敗を検知して言葉で報告してくれる。この「終わったか、成功したか」を人間が見張らなくていいのは、地味ですが大きい。
③ 探さない・間違えない。 どのフローがあったか思い出す必要も、似た名前のフローを誤爆する心配もありません。台帳に載ったフローだけが、名前で正確に呼ばれます。
④ ワークフローを"部品"にできる。 前作のスキルでRPAフローを作り、今回のMCPでそれを動かす。「スキルで作る × MCPで動かす」が一本の線でつながりました。フローが、AIから呼べる部品になったのです。
(ここまでが無料パートです。ここから先は、
pad-mcpのソースコード全文・設定ファイル・URLとエスケープの正確な書式・つまずき実録の詳細を、そのまま再現できる形でお見せします。
「自分のPADでも、AIの一言で動かしたい」という方は、ここからが本編です。)
「関連記事」の次から有料部分です。
🔗 関連記事
今回の内容に関連する過去記事もぜひご覧ください:
クロ助がRPAを"自分の手"で動かす日 ― PAD操作MCP、誰も作っていなかった空白地帯(前回・構想編。本記事の直接の前提)
毎回くり返してた"4つの説明"が、ゼロになった ― RPAのノウハウを、AIの"スキル"に畳んだ記録(三部作・第2作="覚える"。フローを作る側の相棒スキル)
AIでRPAフローを自動生成する方法|コピペで動くPower Automate Desktop活用術(三部作・第1作="書ける"。Robin言語の作り方)
全体像:3つの道具と、1冊の台帳
pad-mcpは、Python製の小さなMCPサーバーです。提供する道具は3つ。
`list_flows()` … 台帳に載っているフロー一覧を返す
`run_flow(flow_name, input_text=None)` … 台帳のフローを起動する
`get_run_status(flow_name)` … 直近に起動したフローの成否を返す
そして中心にあるのが、フロー台帳 `pad_flows.json`。これが「許可リスト」そのものです。PADには「フロー一覧を列挙する公式API」が存在しないので、手で台帳を書く方式が現実解になります。台帳に無いフローは、一切実行できません。
URLプロトコルの正確な書式
PADのフローは、次の形のURLで起動します。実際に使ったのは、PADのフロープロパティにある「URLを実行」からコピーできる完成URL(`environmentid`+`workflowid`+`source=Other`付き)でした。
ここから先は
記事がお役に立てたなら嬉しいです! いただいたチップは、新しいMCPツールの検証や、より深い実践実験の資金として大切に使わせていただきます。 あなたの応援が次の「AI活用の感動」を生み出す原動力になります✨ 一緒に羽ばたき続けましょう!
