Skip to content

用 AI Agent 幫客戶寫 Power Automate Flow, 從 80 個 Action 到 17 個

分享這兩天用 AI Agent + MCP 幫客戶開發 Power Automate 的經驗。

客戶需求

客戶��一個文件處�的自動化 - 有人上傳 Word 報告到 SharePoint list,Power Automate 自動把它轉 PDF�存到�應的 document library�發 Teams message�寄 email。��的文件類型�存到��的地方�發到��的 channel。

客戶本來有一套在用的,3 種文件類型,用 Switch 分�。我�幫他們�一個新的給�一個團隊用,這次有 6 種文件類型。

我就想,���直接� AI agent 幫我�。

讓 Agent 讀�有的 Flow

我用的是 Claude(在 VS Code 裡�跑),�� Flow Studio MCP 連到客戶的 Power Automate 環境。MCP 讓 agent �以直接讀 flow definition�deploy 修改�trigger 測試�看 run history, �用開 Power Automate designer。

第一步是讓 agent 讀�有的 flow:

agent → list_live_flows → 找到�有的 flow
agent → get_live_flow → 讀完整的 flow definition

Agent 看完之後馬上�解整個�構:trigger 是 SharePoint list item created,Apply to Each 跑 attachments,裡�兩個 Switch block 分文件類型, 一個處� PDF 轉檔跟存檔,一個處� Teams message 跟 email。

第一版:直接照抄

Agent 直接照抄�輯,把 3 種改� 6 種 => 6 個 case 的 Switch,�個 case 裡�一整組�複的 action。deploy 上去,80 幾個 action。

其實也�是�行,畢竟舊的那一套也是我�的,�構一樣。�是改 bug 的時候在 Switch 裡�改有點麻煩, 6 種文件類型就�改 6 次,很容易�。

舊版 Switch 長這樣:
Screenshot 2026-03-16 215712

3 個 case 展開,�個 case 裡�一整組�複的 action, Compose�HTTP Graph�Send email�Post Teams message。新版� 6 個 case,改一個 bug �改 6 次。

第二版:Dictionary Lookup

然後我丟了我�公 John Liu 的一篇 blog 給 agent 看, split twice pattern,用 config �代 Switch 的寫法。

Agent 看完之後建議用 dictionary lookup。�法是:

  1. 一個 Compose action 放 JSON config,6 種文件類型當 key,value 放 library IDã€?Teams channel IDã€?mailing list 欄ä½?å??稱
  2. 後�所有 action 都用 outputs('Compose_Config')?[triggerBody()?['Type/Value']] 去查表
  3. 兩個 Switch �掉

80 幾個 action 變 17 個。

Power Automate flow with dictionary config lookup pattern - clean single set of actions

左邊是 Compose Config 的 JSON, 6 種文件類型當 key,�個 key 放�應的 library ID�channel ID�mailing list 欄�。�邊是乾淨的 Apply to Each,一組共用的 action 處�所有文件類型。加新的類型��在 config 加一筆。

Deploy 之後�是真正踩�的開始

新版 deploy 上去之後跑了第一次, 壞了。

SharePoint connector 有些�制是文件上寫�清楚的�path 格�跟你想的�一樣�JSON 字串組出來多了一個 single quote 就壞掉�欄�更新�輯沒寫好會互相蓋掉。

�次都是這個 loop:

agent → update_live_flow(deploy 修改)
agent → trigger_live_flow(跑一次)
agent → get_live_flow_runs(看 run history)
agent → get_live_flow_run_error(找到哪個 action 壞掉)
agent → get_live_flow_run_action_outputs(看 input/output 確��題)
→ 改 code → � deploy

來回了大概 7 次。中間還 cancel 了 11 個壞掉的 run。

�點是這 7 次我都沒有打開 Power Automate designer。

全部都是 agent 自己 deployã€?自己跑ã€?自己看錯在哪裡ã€?自己改。我å?ªæ˜¯åœ¨æ—?邊看它跑,å?¶çˆ¾æ??示一下方å?‘(åƒ?是丟 John çš„ blog 給它看)。

為什麼 MCP 是關�

如果 agent 沒有 MCP,它還是�以 deploy flow。但 flow 壞掉的時候,它看�到 run history 裡�的 error detail 跟 action input/output。你就�自己去 Power Automate designer 看錯在哪,然後把 error message 跟 input/output 貼回去給 agent。

有了 MCP,agent �以直接:

  • 讀ç?¾æœ‰çš„ flow(get_live_flow)
  • Deploy 修改(update_live_flow)
  • Trigger 測試(trigger_live_flow)
  • 看 run history è·Ÿ action-level çš„ error(get_live_flow_runsã€?get_live_flow_run_error)
  • 看æ¯?個 action çš„ input/output(get_live_flow_run_action_outputs)

差別就是 agent 能�能自己跑完 deploy → test → debug 的 loop。能跑的話,一個下��定。�能的話,你就是那個 loop 裡�的人肉 middleware。


想試試看的話:Flow Studio MCP �費方案有 100 次 API call,��信用�。

�用 VS Copilot, Claude 跟�種 MCP-compatible agent.

John 的 split twice pattern 原文:johnliu.net


Catherine Han, Flow Studio