
flowstudio-power-automate-mcp
Foundation skill for Power Automate via FlowStudio MCP — auth setup, the reusable MCP helper (Python + Node.js), tool discovery via listskills / toolsearch, and oversized-response handling. Load this skill first when connecting an agent to Power Automate. For specialized workflows, load flowstudio-power-automate-build, flowstudio-power-automate-debug, flowstudio-power-automate-monitoring (Pro+), or flowstudio-power-automate-governance (Pro+) — each contains the workflow narrative, this skill provides the plumbing they all rely on. Requires a FlowStudio MCP subscription or compatible server — see https://mcp.flowstudio.app
- Installs
- 4.2K
- Last 24h
- —
- Trending rank
- —
- Security
- Warn
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/github/awesome-copilot --skill flowstudio-power-automate-mcp- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads flowstudio-power-automate-mcp automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
Security audits
Independent scans of the skill's instructions and bundled files.
SKILL.md
The instructions your agent reads when the skill is triggered.
Power Automate via FlowStudio MCP — Foundation
This skill is the plumbing layer. It gives an AI agent a reliable way to talk to a FlowStudio MCP server, discover what tools are available, and handle the responses cleanly. The actual workflow narratives live in four specialized skills that all build on this one.
Real debugging examples: Expression error in child flow | Data entry, not a flow bug | Null value crashes child flow
Requires: A FlowStudio MCP subscription (or compatible Power Automate MCP server). You will need:
- MCP endpoint:
https://mcp.flowstudio.app/mcp(same for all subscribers)- API key / JWT token (
x-api-keyheader — NOT Bearer)- In ChatGPT or claude.ai there is no key: add
https://mcp.flowstudio.app/mcp/oauthas a connector and sign in with Microsoft — see the ChatGPT walkthrough- Power Platform environment name (e.g.
Default-<tenant-guid>)
Which Skill to Use When
Skills are organized by use-case intent, not by which tools they call. Multiple skills reuse the same underlying tools — pick by what the user is trying to accomplish.
| The user wants to… | Load this skill |
|---|---|
| Make or change a flow (build new, modify existing, fix a bug, deploy) | flowstudio-power-automate-build |
| Diagnose why a flow failed (root cause analysis on a failing run) | flowstudio-power-automate-debug |
| See tenant-wide flow health, failure rates, asset inventory | flowstudio-power-automate-monitoring (Pro+) |
| Tag, audit, classify, score, or offboard flows | flowstudio-power-automate-governance (Pro+) |
| Just connect, set up auth, write the helper, parse responses | this skill (foundation) |
Same tools, different lenses. flowstudio-power-automate-build and flowstudio-power-automate-debug
both call update_live_flow, get_live_flow, and the run-error tools — they
differ in direction (forward vs backward) and intent (compose vs diagnose).
flowstudio-power-automate-monitoring and flowstudio-power-automate-governance both call the Store
tools — they differ in audience (ops vs compliance) and outcome (read
health vs write metadata). Don't try to memorize "which tools belong to which
skill"; pick the skill by what the user is doing.
Source of Truth
| Priority | Source | Covers |
|---|---|---|
| 1 | Real API response | Always trust what the server actually returns |
| 2 | tool_search / list_skills | Authoritative tool schemas, parameter names, types, required flags |
| 3 | SKILL docs & reference files | Workflow narrative, response shapes, non-obvious behaviors |
If documentation disagrees with a real API response, the API wins. Tool schemas
in this skill (or any other) may lag the server — call tool_search to confirm
the current shape before invoking a tool you haven't used recently.
How Agents Discover Tools
The FlowStudio MCP server (v1.1.5+) exposes two non-billable meta-tools that
let an agent load only the tools relevant to the current task. Use these in
preference to tools/list (which loads all 30+ schemas at once) or guessing
tool names.
| Meta-tool | When to call |
|---|---|
list_skills | Cold start — see the available bundles (build-flow, create-flow, debug-flow, monitor-flow, discover, governance) and pick one |
tool_search with query: "skill:<name>" | Load the full schema set for one bundle (e.g. skill:debug-flow) |
tool_search with query: "select:tool1,tool2" | Load specific tools by name (e.g. when chaining across bundles) |
tool_search with query: "<keywords>" | Free-text search when the user request is ambiguous (e.g. "cancel run") |
The server's tool_search bundles are intentionally narrower than this
skill family — they're starter packs of the most-likely-needed tools per
intent. A workflow skill (e.g. flowstudio-power-automate-debug) may pull a bundle and
then call tool_search again for additional tools as the workflow progresses.
# Cold start — pick a bundle by intent
skills = mcp("list_skills", {})
# [{"name": "debug-flow", "description": "Investigate why a flow is failing...",
# "tools": ["get_live_flow_runs", "get_live_flow_run_error", ...]}, ...]
# Load schemas for the bundle
debug_tools = mcp("tool_search", {"query": "skill:debug-flow"})
Current common bundles:
| Bundle | Use when |
|---|---|
create-flow | Creating a brand-new flow; includes environment/connection discovery, connector description, dynamic options, and update_live_flow |
build-flow | Reading or modifying an existing flow definition |
debug-flow | Investigating failed runs and action-level inputs/outputs |
monitor-flow | Starting/stopping, triggering, cancelling, or resubmitting runs |
discover | Enumerating environments, flows, and connections |
governance | Pro+ cached-store tagging, maker audit, and metadata updates |
Recommended Language: Python or Node.js
All examples in this skill family use Python with urllib.request
(stdlib — no pip install needed). Node.js is an equally valid choice:
fetch is built-in from Node 18+, JSON handling is native, and async/await
maps cleanly onto the request-response pattern of MCP tool calls — making it
a natural fit for teams already working in a JavaScript/TypeScript stack.
| Language | Verdict | Notes |
|---|---|---|
| Python | Recommended | Clean JSON handling, no escaping issues, all skill examples use it |
| Node.js (≥ 18) | Recommended | Native fetch + JSON.stringify/JSON.parse; no extra packages |
| PowerShell | Avoid for flow operations | ConvertTo-Json -Depth silently truncates nested definitions; quoting and escaping break complex payloads. Acceptable for a quick connectivity smoke-test but not for building or updating flows. |
| cURL / Bash | Possible but fragile | Shell-escaping nested JSON is error-prone; no native JSON parser |
TL;DR — use the Core MCP Helper (Python or Node.js) below. Both handle JSON-RPC framing, auth, and response parsing in a single reusable function.
Core MCP Helper (Python)
Use this helper throughout all subsequent operations:
import json, urllib.request
TOKEN = "<YOUR_JWT_TOKEN>"
MCP = "https://mcp.flowstudio.app/mcp"
def mcp(tool, args, cid=1):
payload = {"jsonrpc": "2.0", "method": "tools/call", "id": cid,
"params": {"name": tool, "arguments": args}}
req = urllib.request.Request(MCP, data=json.dumps(payload).encode(),
headers={"x-api-key": TOKEN, "Content-Type": "application/json",
"User-Agent": "FlowStudio-MCP/1.0"})
try:
resp = urllib.request.urlopen(req, timeout=120)
except urllib.error.HTTPError as e:
body = e.read().decode("utf-8", errors="replace")
raise RuntimeError(f"MCP HTTP {e.code}: {body[:200]}") from e
raw = json.loads(resp.read())
if "error" in raw:
raise RuntimeError(f"MCP error: {json.dumps(raw['error'])}")
text = raw["result"]["content"][0]["text"]
return json.loads(text)
Common auth errors:
- HTTP 401/403 → token is missing, expired, or malformed. Get a fresh JWT from mcp.flowstudio.app.
- HTTP 400 → malformed JSON-RPC payload. Check
Content-Type: application/jsonand body structure.MCP error: {"code": -32602, ...}→ wrong or missing tool arguments. Calltool_searchwithselect:<toolname>to confirm the schema.
Core MCP Helper (Node.js)
Equivalent helper for Node.js 18+ (built-in fetch — no packages required):
const TOKEN = "<YOUR_JWT_TOKEN>";
const MCP = "https://mcp.flowstudio.app/mcp";
async function mcp(tool, args, cid = 1) {
const payload = {
jsonrpc: "2.0",
method: "tools/call",
id: cid,
params: { name: tool, arguments: args },
};
const res = await fetch(MCP, {
method: "POST",
headers: {
"x-api-key": TOKEN,
"Content-Type": "application/json",
"User-Agent": "FlowStudio-MCP/1.0",
},
body: JSON.stringify(payload),
});
if (!res.ok) {
const body = await res.text();
throw new Error(`MCP HTTP ${res.status}: ${body.slice(0, 200)}`);
}
const raw = await res.json();
if (raw.error) throw new Error(`MCP error: ${JSON.stringify(raw.error)}`);
return JSON.parse(raw.result.content[0].text);
}
Requires Node.js 18+. For older Node, replace
fetchwithhttps.requestfrom the stdlib or installnode-fetch.
Verify the Connection
A 3-line smoke test that confirms the token, endpoint, and helper all work:
skills = mcp("list_skills", {})
print(f"Connected — {len(skills)} skill bundles available:",
[s["name"] for s in skills])
Expected output:
Connected — 6 skill bundles available: ['build-flow', 'create-flow', 'debug-flow', 'monitor-flow', 'discover', 'governance']
If this fails, see the Common auth errors note above. If it succeeds, hand off to the workflow skill matching the user's intent.
Handling Oversized Responses
Some MCP tool responses are large enough to overflow the agent's context window:
| Tool | Typical size | Cause |
|---|---|---|
describe_live_connector | 100-600 KB | Full Swagger spec for a connector |
get_live_dynamic_properties | 50-500 KB | Dynamic connector field schemas such as SharePoint list columns |
get_live_flow_run_action_outputs (no actionName) | 50 KB – several MB | Top-level action outputs; with an action in a foreach, every repetition can be returned |
get_live_flow (large flows) | 50-500 KB | Deeply nested branches |
list_live_flows (large tenants) | 50-200 KB | Hundreds of flow records |
When the harness spills to a file
Agent harnesses (Claude Code, VS Code Copilot, etc.) save oversized responses
to a temp file (e.g. tool-results/mcp-flowstudio-describe_live_connector-NNNN.txt)
and return the path instead of the inline JSON. The file is double-wrapped —
the outer MCP envelope plus the inner JSON-escaped payload:
[{"type":"text","text":"<JSON-escaped payload>"}]
Two parses to reach a usable object:
import json
with open(path) as f:
raw = json.loads(f.read())
payload = json.loads(raw[0]["text"])
$payload = ((Get-Content $path -Raw | ConvertFrom-Json)[0].text) | ConvertFrom-Json
Rules of thumb
- Extract, don't echo. Pull the specific field(s) you need (one
operationId, one action's outputs) and discard the rest before reasoning about it. - Always pass
actionNametoget_live_flow_run_action_outputs. Omitting it fetches all top-level actions. For actions inside a foreach, passingactionNamewithoutiterationIndexcan return every repetition of that action. - Reuse the spill file within a session. Refetching the same connector swagger costs 30+ seconds and produces another spill — cache the path.
- Don't grep the spill file for JSON keys directly. Strings are JSON-escaped inside the file (
\"OperationId\":), so a plain grep for"OperationId":will not match. Parse first, then filter. - Summarize tool output to the user. Echo
name + state + triggerfor flow lists andactionName + status + codefor run errors — not raw JSON, unless asked.
# Good — drill into one operation in a connector swagger
conn = mcp("describe_live_connector", {"environmentName": ENV, "connectorName": "shared_sharepointonline"})
op = conn["properties"]["swagger"]["paths"]["/datasets/{dataset}/tables/{table}/items"]["get"]
print(op["operationId"], "—", op.get("summary"))
# Bad — keeping the whole 500 KB swagger in context
print(json.dumps(conn, indent=2)) # don't do this
Auth & Connection Notes
| Field | Value |
|---|---|
| Auth header | x-api-key: <JWT> — not Authorization: Bearer |
| Token format | Plain JWT — do not strip, alter, or prefix it |
| Timeout | Use ≥ 120 s for get_live_flow_run_action_outputs (large outputs) |
| Environment name | Default-<tenant-guid> (find it via list_live_environments or list_live_flows response) |
Reference Files
- MCP-BOOTSTRAP.md — endpoint, auth, request/response format (read this first)
- tool-reference.md — response shapes and behavioral notes (parameters are in
tool_search) - action-types.md — Power Automate action type patterns
- connection-references.md — connector reference guide
FAQ
What does the flowstudio-power-automate-mcp skill do?
Foundation skill for Power Automate via FlowStudio MCP — auth setup, the reusable MCP helper (Python + Node.js), tool discovery via listskills / toolsearch, and oversized-response handling. Load this skill first when connecting an agent to Power Automate. For specialized workflows, load flowstudio-power-automate-build, flowstudio-power-automate-debug, flowstudio-power-automate-monitoring (Pro+), or flowstudio-power-automate-governance (Pro+) — each contains the workflow narrative, this skill provides the plumbing they all rely on. Requires a FlowStudio MCP subscription or compatible server — see https://mcp.flowstudio.app
How do I install flowstudio-power-automate-mcp?
Run npx skills add https://github.com/github/awesome-copilot --skill flowstudio-power-automate-mcp in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/flowstudio-power-automate-mcp/ (personal) or .claude/skills/flowstudio-power-automate-mcp/ (project).
Which AI agents can use flowstudio-power-automate-mcp?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is flowstudio-power-automate-mcp safe to install?
Security partners have reviewed it: Gen Agent Trust Hub passed; Socket passed; Snyk flagged items to review; Runlayer flagged items to review; ZeroLeaks passed. As with any skill, read the SKILL.md and bundled scripts before installing.
Who maintains flowstudio-power-automate-mcp?
It is published by github in github/awesome-copilot, and it is an official skill from the maker of the technology it covers. It has 4,242 recorded installs.
More from github/awesome-copilot
git-commit
github/awesome-copilot
Use this skill when the user wants to make a Git commit or split changes into more than one commit. Also use it when the user types "/commit" or asks for a conventional commit. The skill examines the diff, stages the related files, writes a Conventional Commits message, and runs git commit. Do not use it when the user wants only a commit message and no commit. Do not use it to push, open a pull request, rebase, or change the commit history.
excalidraw-diagram-generator
github/awesome-copilot
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
multi-stage-dockerfile
github/awesome-copilot
Create optimized multi-stage Dockerfiles for any language or framework
documentation-writer
github/awesome-copilot
Diátaxis Documentation Expert. An expert technical writer specializing in creating high-quality software documentation, guided by the principles and structure of the Diátaxis technical documentation authoring framework.
prd
github/awesome-copilot
Generate high-quality Product Requirements Documents (PRDs) for software systems and AI-powered features. Includes executive summaries, user stories, technical specifications, and risk analysis.
refactor
github/awesome-copilot
Surgical code refactoring to improve maintainability without changing behavior. Covers extracting functions, renaming variables, breaking down god functions, improving type safety, eliminating code smells, and applying design patterns. Less drastic than repo-rebuilder; use for gradual improvements.
Popular productivity & automation skills
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
lark-doc
open.feishu.cn
飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由;/page/ 是妙搭应用,非飞书云文档。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。
lark-base
open.feishu.cn
飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。
lark-drive
open.feishu.cn
飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。
lark-shared
open.feishu.cn
Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling notice JSON.
lark-im
open.feishu.cn
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。