mirror of
https://github.com/github/awesome-copilot.git
synced 2026-05-15 11:11:48 +00:00
e67c66c441
* feat(flowstudio): align Power Automate skills with MCP server v1.1.6 Foundation skill (flowstudio-power-automate-mcp) rewritten to use the server's new tool_search and list_skills meta-tools (v1.1.5+) for discovery instead of cataloging every tool by hand. Cut from 519 to 295 lines. New "Which Skill to Use When" intent-keyed decision tree points at the four specialized skills. Build/debug/governance/monitoring updated for use-case framing. Tools that genuinely cross tiers (e.g. debug skill borrowing get_store_flow_summary) are correct when the workflow needs them — the split between skills is by use-case intent, not by tool partition. Build skill: new Step 3a Resolving Dynamic Connector Values covers get_live_dynamic_options outer-parameter auto-bridge (v1.1.6+) and the AadGraph user-picker fallback via shared_office365users.SearchUserV2 (replaces broken builtInOperation:AadGraph.GetUsers). Debug skill: Outlook user-picker failure note pointing at the fallback. Monitoring skill description disambiguates from the server's monitor-flow tool bundle (runtime control of a single flow) — this skill is tenant-wide health analytics over the cached store. All 5 skills validate via npm run skill:validate; line endings LF only; codespell clean; auto-regenerated docs/README.skills.md included. * fix(flowstudio): remove deprecated tool references The v1.1.5 MCP server release marked 5 tools [DEPRECATED] but the previous alignment commit missed them. Replacements per server source: - get_live_flow_http_schema → read trigger.inputs.schema from get_live_flow - get_live_flow_trigger_url → read trigger.metadata.callbackUrl from get_live_flow - get_store_flow_trigger_url → get_store_flow.triggerUrl field - get_store_flow_errors → get_store_flow_runs(status=["Failed"]) - set_store_flow_state → set_live_flow_state Touches build, debug, governance, monitoring SKILL.md and the foundation skill's tool-reference.md. Remaining mentions of the deprecated names are intentional — they live in deprecation notices naming the obsolete wrapper alongside its replacement. * Update FlowStudio Power Automate skills * Cover latest FlowStudio MCP actions * Trim FlowStudio Power Automate skills * Number FlowStudio build workflow steps
144 lines
4.9 KiB
Markdown
144 lines
4.9 KiB
Markdown
# FlowStudio MCP — Connection References
|
|
|
|
Connection references wire a flow's connector actions to real authenticated
|
|
connections in the Power Platform. They are required whenever you call
|
|
`update_live_flow` with a definition that uses connector actions.
|
|
|
|
---
|
|
|
|
## Structure in a Flow Definition
|
|
|
|
```json
|
|
{
|
|
"properties": {
|
|
"definition": { ... },
|
|
"connectionReferences": {
|
|
"shared_sharepointonline": {
|
|
"connectionName": "shared-sharepointonl-eeeeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee",
|
|
"id": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
|
|
"displayName": "SharePoint"
|
|
},
|
|
"shared_office365": {
|
|
"connectionName": "shared-office365-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
|
|
"id": "/providers/Microsoft.PowerApps/apis/shared_office365",
|
|
"displayName": "Office 365 Outlook"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Keys are **logical reference names** (e.g. `shared_sharepointonline`).
|
|
These match the `connectionName` field inside each action's `host` block.
|
|
|
|
---
|
|
|
|
## Finding Connection References
|
|
|
|
Preferred method: call `list_live_connections` in the target environment. Use
|
|
`search` to narrow results to the connector you need; newer MCP server versions
|
|
return paste-ready templates.
|
|
|
|
```python
|
|
matches = mcp("list_live_connections",
|
|
environmentName=ENV,
|
|
search="shared_sharepointonline")
|
|
|
|
conn = next(c for c in matches["connections"]
|
|
if c.get("overallStatus") == "Connected"
|
|
or c.get("statuses", [{}])[0].get("status") == "Connected")
|
|
|
|
conn_refs = {
|
|
"shared_sharepointonline": conn.get("connectionReferenceTemplate") or {
|
|
"connectionName": conn["id"],
|
|
"id": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
|
|
"source": "Invoker"
|
|
}
|
|
}
|
|
host = conn.get("hostTemplate") or {"connectionName": "shared_sharepointonline"}
|
|
```
|
|
|
|
Use `host` as the action-side `inputs.host`. Use `conn_refs` as
|
|
`update_live_flow(connectionReferences=conn_refs)`.
|
|
|
|
Fallback method: copy from an existing flow.
|
|
|
|
Call `get_live_flow` on **any existing flow** that uses the same connection
|
|
and copy the `connectionReferences` block. The GUID after the connector prefix is
|
|
the connection instance owned by the authenticating user.
|
|
|
|
```python
|
|
flow = mcp("get_live_flow", environmentName=ENV, flowName=EXISTING_FLOW_ID)
|
|
conn_refs = flow["properties"]["connectionReferences"]
|
|
# conn_refs["shared_sharepointonline"]["connectionName"]
|
|
# → "shared-sharepointonl-eeeeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee"
|
|
```
|
|
|
|
> ⚠️ Connection references are **user-scoped**. If a connection is owned
|
|
> by another account, `update_live_flow` will return 403
|
|
> `ConnectionAuthorizationFailed`. You must use a connection belonging to
|
|
> the account whose token is in the `x-api-key` header.
|
|
|
|
---
|
|
|
|
## Passing `connectionReferences` to `update_live_flow`
|
|
|
|
```python
|
|
result = mcp("update_live_flow",
|
|
environmentName=ENV,
|
|
flowName=FLOW_ID,
|
|
definition=modified_definition,
|
|
connectionReferences={
|
|
"shared_sharepointonline": {
|
|
"connectionName": "shared-sharepointonl-eeeeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee",
|
|
"id": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
|
|
}
|
|
}
|
|
)
|
|
```
|
|
|
|
Only include connections that the definition actually uses.
|
|
|
|
---
|
|
|
|
## Common Connector API IDs
|
|
|
|
| Service | API ID |
|
|
|---|---|
|
|
| SharePoint Online | `/providers/Microsoft.PowerApps/apis/shared_sharepointonline` |
|
|
| Office 365 Outlook | `/providers/Microsoft.PowerApps/apis/shared_office365` |
|
|
| Microsoft Teams | `/providers/Microsoft.PowerApps/apis/shared_teams` |
|
|
| OneDrive for Business | `/providers/Microsoft.PowerApps/apis/shared_onedriveforbusiness` |
|
|
| Azure AD | `/providers/Microsoft.PowerApps/apis/shared_azuread` |
|
|
| HTTP with Azure AD | `/providers/Microsoft.PowerApps/apis/shared_webcontents` |
|
|
| SQL Server | `/providers/Microsoft.PowerApps/apis/shared_sql` |
|
|
| Dataverse | `/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps` |
|
|
| Azure Blob Storage | `/providers/Microsoft.PowerApps/apis/shared_azureblob` |
|
|
| Approvals | `/providers/Microsoft.PowerApps/apis/shared_approvals` |
|
|
| Office 365 Users | `/providers/Microsoft.PowerApps/apis/shared_office365users` |
|
|
| Flow Management | `/providers/Microsoft.PowerApps/apis/shared_flowmanagement` |
|
|
|
|
---
|
|
|
|
## Teams Adaptive Card Dual-Connection Requirement
|
|
|
|
Flows that send adaptive cards **and** post follow-up messages require two
|
|
separate Teams connections:
|
|
|
|
```json
|
|
"connectionReferences": {
|
|
"shared_teams": {
|
|
"connectionName": "shared-teams-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
|
|
"id": "/providers/Microsoft.PowerApps/apis/shared_teams"
|
|
},
|
|
"shared_teams_1": {
|
|
"connectionName": "shared-teams-yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
|
|
"id": "/providers/Microsoft.PowerApps/apis/shared_teams"
|
|
}
|
|
}
|
|
```
|
|
|
|
Both can point to the **same underlying Teams account** but must be registered
|
|
as two distinct connection references. The webhook (`OpenApiConnectionWebhook`)
|
|
uses `shared_teams` and subsequent message actions use `shared_teams_1`.
|