configure-canvas-mcp
The configure-canvas-mcp skill sets up the Canvas Authoring MCP server to enable Power Apps canvas app development within a coauthoring session. Use this skill when the MCP server needs initialization, isn't responding, or requires connection to a specific app instance. The skill verifies .NET 10 SDK installation, extracts configuration parameters from the Power Apps studio URL, and establishes the server connection for subsequent canvas app compilation and synchronization operations.
git clone --depth 1 https://github.com/microsoft/power-platform-skills /tmp/configure-canvas-mcp && cp -r /tmp/configure-canvas-mcp/plugins/canvas-apps/skills/configure-canvas-mcp ~/.claude/skills/configure-canvas-mcpSKILL.md
# Configure the Canvas Authoring MCP Server This skill configures the Canvas Authoring MCP server for the user's current Power Apps coauthoring session. The MCP server is auto-registered by the plugin — this skill connects it to a specific app session. ## Instructions ### 1. Ask for the studio URL Ask the user: > What is the URL of your canvas app studio session? > > Copy the URL from the browser address bar while your app is open in Power Apps Designer (it should look like `https://make.powerapps.com/e/Default-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/canvas/?action=edit&app-id=...`). > > Make sure coauthoring is enabled in the app (Settings → Updates → Coauthoring). > > **Keep this browser tab open for the entire session.** The MCP server communicates with Power Apps through the coauthoring session tied to that tab. Closing the tab ends the coauthoring session, which prevents `compile_canvas` and `sync_canvas` from working and means you can't see or save generated changes. ### 2. Extract parameters from the URL Parse the following from the studio URL: - **ENV_ID**: the path segment between `/e/` and the next `/` (e.g. `Default-91bee3d9-0c15-4f17-8624-c92bb8b36ead`). - **APP_ID**: URL-decode the `app-id` query parameter value, then take the last segment after the final `/` (e.g. `6fc3e3d1-292b-4281-8826-577f78512e56`) - **MAKER_HOSTNAME**: the hostname of the URL (e.g. `make.powerapps.com`) - **ENVIRONMENT_CATEGORY**: determined from MAKER_HOSTNAME (see table below) **Determine ENVIRONMENT_CATEGORY from MAKER_HOSTNAME:** | MAKER_HOSTNAME | ENVIRONMENT_CATEGORY | | ---------------------------- | -------------------- | | `make.powerapps.com` | `prod` | | `make.preview.powerapps.com` | `prod` | | `make.preprod.powerapps.com` | `preprod` | | `make.gov.powerapps.us` | `gov` | | `make.high.powerapps.us` | `high` | | `make.apps.appsplatform.us` | `dod` | | `make.powerapps.cn` | `china` | | Any other hostname | `test` | **Example:** Example URL: `https://make.powerapps.com/e/Default-91bee3d9-0c15-4f17-8624-c92bb8b36ead/canvas/?action=edit&app-id=%2Fproviders%2FMicrosoft.PowerApps%2Fapps%2F6fc3e3d1-292b-4281-8826-577f78512e56` - ENV_ID → `Default-91bee3d9-0c15-4f17-8624-c92bb8b36ead` - APP_ID → `6fc3e3d1-292b-4281-8826-577f78512e56` - MAKER_HOSTNAME → `make.powerapps.com` - ENVIRONMENT_CATEGORY → `prod` ### 3. Configure the MCP server Call the `connect` MCP tool to connect the server to the user's coauthoring session: ``` mcp__canvas-authoring__connect( environment_id: ENV_ID, app_id: APP_ID, environment_category: ENVIRONMENT_CATEGORY, // Optional — include only if the user has expressed a preference or a prior sign-in failed (see below): auth_flow: "broker" | "browser" | "devicecode", login_hint: "user@contoso.com", tenant_id: "00000000-0000-0000-0000-000000000000", force_account_select: true ) ``` **Optional parameters — do NOT prompt the user for these.** Only include them if the user has already expressed a preference earlier in the conversation, or if a prior connect attempt failed: - `login_hint`: Pass the user's UPN or email **only if** they have indicated they want to connect as a specific/different user (e.g. "log in as alice@contoso.com"). These values cannot be derived from the maker portal URL — never guess. Omit otherwise to use the first signed-in user. When reconnecting to switch environment/app, reuse the same `login_hint` value as the previous successful connect (if known) so the same user is reused without re-prompting. - `auth_flow`: Pass `"browser"`, `"broker"`, or `"devicecode"` **only if** the user has explicitly stated a preferred auth flow (e.g. "use browser sign-in"). Use `"devicecode"` on headless/SSH hosts where neither broker nor browser flow can pop a UI — the verification URL and user code are surfaced via an MCP elicitation request and require a client that supports elicitation. Omit otherwise to use the default. - `tenant_id`: Pass a tenant GUID **only** for Entra B2B guest access — set it to the host/resource tenant where the user is a guest so the token is issued by that tenant rather than the user's home tenant. Combine with `login_hint` (the guest's home UPN) to pre-fill the account. Omit for normal same-tenant sign-in. - `force_account_select`: Pass `true` **only** to force the account picker instead of silently reusing a cached account — set this when a previous connect failed with a 401/403 and no `login_hint` was given, so the user can pick the correct account. Omit otherwise. If the `mcp__canvas-authoring__connect` tool is **not available** (the MCP server did not start), run the following command to check whether the server failed to launch due to a missing .NET 10 SDK: ```bash dotnet --list-sdks ``` If a version 10.x.y or higher is **not** listed, tell the user: > ⚠️ .NET 10 SDK is required to run the Canvas Authoring MCP server. It looks like you don't have it installed. Please install it from https://dotnet.microsoft.com/download/dotnet/10.0 and then try again. If the tool is available but the call returns an error, report the error and suggest checking that: 1. The studio URL is correct and the browser tab is still open 2. Coauthoring is enabled in the app settings 3. If sign-in failed, the user may need to specify `auth_flow` (`broker`, `browser`, or `devicecode`) or a `login_hint` (UPN/email) to authenticate as the correct account. On a headless/SSH host, use `auth_flow: "devicecode"`. If a cached account keeps getting picked, retry with `force_account_select: true`. For Entra B2B guest access, set `tenant_id` to the host tenant. ### 4. Confirm Tell the user: > ✅ Canvas Authoring MCP server configured for your coauthoring session. > > You can now use Canvas App skills like `/canvas-app` to create or edit your app. > > To verify the setup, try: "List av
Guide the user to add a data source, connection, or API connector to a Canvas App via Power Apps Studio, then verify and continue. USE WHEN the user asks to add a data source, add a connection, add an API, add a connector, connect to SharePoint / Dataverse / SQL / Excel / OneDrive / Teams / Office 365, or any similar request to make new data available to the app. DO NOT USE WHEN the user is asking to list or describe existing data sources — call list_data_sources or list_apis directly instead.
Creates or edits a Power Apps Canvas App through the Canvas Authoring MCP coauthoring session. Handles new app generation, direct targeted edits, complex multi-screen changes, responsive layout, per-screen self-QA, and compile-error convergence. Trigger on requests to create, build, generate, modify, update, change, fix, or edit a Canvas App or .pa.yaml files.
[DEPRECATED — use canvas-app instead] Generate a complete Power Apps canvas app.
>
Adds Azure DevOps connector to a Power Apps code app. Use when querying work items, creating bugs, managing pipelines, or making ADO API calls.
Use when adding a Power Platform connector to an Expo/React Native Power Apps mobile app and no dedicated mobile connector skill exists.
Use when adding an unspecified data source to an Expo/React Native Power Apps mobile app; routes to Dataverse, SharePoint, or another connector.
Use when the user wants to add Dataverse tables (existing or new) to a Power Apps mobile app, extend an existing Dataverse table with new columns, or apply an approved data model plan.