[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-configure-canvas-mcp":3,"mdc--oaaosi-key":43,"related-org-microsoft-configure-canvas-mcp":898,"related-repo-microsoft-configure-canvas-mcp":1093},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":38,"sourceUrl":41,"mdContent":42},"configure-canvas-mcp","configure Canvas Authoring MCP server","Configure the Canvas Authoring MCP server for the current coauthoring session. USE WHEN \"configure MCP\", \"set up MCP server\", \"MCP not working\", \"connect Canvas Apps MCP\", \"canvas-authoring not available\", \"MCP not configured\", \"set up canvas apps\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,20,23],{"name":13,"slug":14,"type":15},"Copilot","copilot","tag",{"name":17,"slug":18,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"MCP","mcp",{"name":24,"slug":25,"type":15},"Power Platform","power-platform",564,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fpower-platform-skills","2026-07-31T05:54:42.028133",null,114,[32,33,34,35,36,37,25],"claude-code-plugin","claude-code-skills","code-apps","github-copilot-plugin","power-apps","power-pages",{"repoUrl":27,"stars":26,"forks":30,"topics":39,"description":40},[32,33,34,35,36,37,25],"A plugin marketplace for Claude Code\u002FGitHub Copilot that provides Power Platform development plugins, including reusable skills, agents, and commands for building and deploying solutions.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fpower-platform-skills\u002Ftree\u002FHEAD\u002Fplugins\u002Fcanvas-apps\u002Fskills\u002Fconfigure-canvas-mcp","---\nname: configure-canvas-mcp\nversion: 2.1.0\ndescription: Configure the Canvas Authoring MCP server for the current coauthoring session. USE WHEN \"configure MCP\", \"set up MCP server\", \"MCP not working\", \"connect Canvas Apps MCP\", \"canvas-authoring not available\", \"MCP not configured\", \"set up canvas apps\".\nauthor: Microsoft Corporation\nuser-invocable: true\nallowed-tools: Bash, AskUserQuestion, mcp__canvas-authoring__connect\n---\n\n# Configure the Canvas Authoring MCP Server\n\nThis 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.\n\n## Instructions\n\n### 1. Ask for the studio URL\n\nAsk the user:\n\n> What is the URL of your canvas app studio session?\n>\n> Copy the URL from the browser address bar while your app is open in Power Apps Designer (it should look like `https:\u002F\u002Fmake.powerapps.com\u002Fe\u002FDefault-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\u002Fcanvas\u002F?action=edit&app-id=...`).\n>\n> Make sure coauthoring is enabled in the app (Settings → Updates → Coauthoring).\n>\n> **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.\n\n### 2. Extract parameters from the URL\n\nParse the following from the studio URL:\n\n- **ENV_ID**: the path segment between `\u002Fe\u002F` and the next `\u002F` (e.g. `Default-91bee3d9-0c15-4f17-8624-c92bb8b36ead`).\n- **APP_ID**: URL-decode the `app-id` query parameter value, then take the last segment after the final `\u002F` (e.g. `6fc3e3d1-292b-4281-8826-577f78512e56`)\n- **MAKER_HOSTNAME**: the hostname of the URL (e.g. `make.powerapps.com`)\n- **ENVIRONMENT_CATEGORY**: determined from MAKER_HOSTNAME (see table below)\n\n**Determine ENVIRONMENT_CATEGORY from MAKER_HOSTNAME:**\n\n| MAKER_HOSTNAME               | ENVIRONMENT_CATEGORY |\n| ---------------------------- | -------------------- |\n| `make.powerapps.com`         | `prod`               |\n| `make.preview.powerapps.com` | `prod`               |\n| `make.preprod.powerapps.com` | `preprod`            |\n| `make.gov.powerapps.us`      | `gov`                |\n| `make.high.powerapps.us`     | `high`               |\n| `make.apps.appsplatform.us`  | `dod`                |\n| `make.powerapps.cn`          | `china`              |\n| Any other hostname           | `test`               |\n\n**Example:**\n\nExample URL: `https:\u002F\u002Fmake.powerapps.com\u002Fe\u002FDefault-91bee3d9-0c15-4f17-8624-c92bb8b36ead\u002Fcanvas\u002F?action=edit&app-id=%2Fproviders%2FMicrosoft.PowerApps%2Fapps%2F6fc3e3d1-292b-4281-8826-577f78512e56`\n\n- ENV_ID → `Default-91bee3d9-0c15-4f17-8624-c92bb8b36ead`\n- APP_ID → `6fc3e3d1-292b-4281-8826-577f78512e56`\n- MAKER_HOSTNAME → `make.powerapps.com`\n- ENVIRONMENT_CATEGORY → `prod`\n\n### 3. Configure the MCP server\n\nCall the `connect` MCP tool to connect the server to the user's coauthoring session:\n\n```\nmcp__canvas-authoring__connect(\n  environment_id: ENV_ID,\n  app_id: APP_ID,\n  environment_category: ENVIRONMENT_CATEGORY,\n  \u002F\u002F Optional — include only if the user has expressed a preference or a prior sign-in failed (see below):\n  auth_flow: \"broker\" | \"browser\" | \"devicecode\",\n  login_hint: \"user@contoso.com\",\n  tenant_id: \"00000000-0000-0000-0000-000000000000\",\n  force_account_select: true\n)\n```\n\n**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:\n\n- `login_hint`: Pass the user's UPN or email **only if** they have indicated they want to connect as a specific\u002Fdifferent 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\u002Fapp, reuse the same `login_hint` value as the previous successful connect (if known) so the same user is reused without re-prompting.\n- `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\u002FSSH 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.\n- `tenant_id`: Pass a tenant GUID **only** for Entra B2B guest access — set it to the host\u002Fresource 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.\n- `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\u002F403 and no `login_hint` was given, so the user can pick the correct account. Omit otherwise.\n\nIf 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:\n\n```bash\ndotnet --list-sdks\n```\n\nIf a version 10.x.y or higher is **not** listed, tell the user:\n\n> ⚠️ .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:\u002F\u002Fdotnet.microsoft.com\u002Fdownload\u002Fdotnet\u002F10.0 and then try again.\n\nIf the tool is available but the call returns an error, report the error and suggest checking that:\n\n1. The studio URL is correct and the browser tab is still open\n2. Coauthoring is enabled in the app settings\n3. If sign-in failed, the user may need to specify `auth_flow` (`broker`, `browser`, or `devicecode`) or a `login_hint` (UPN\u002Femail) to authenticate as the correct account. On a headless\u002FSSH 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.\n\n### 4. Confirm\n\nTell the user:\n\n> ✅ Canvas Authoring MCP server configured for your coauthoring session.\n>\n> You can now use Canvas App skills like `\u002Fcanvas-app` to create or edit your app.\n>\n> To verify the setup, try: \"List available Canvas App controls\" — this should invoke `list_controls`.\n",{"data":44,"body":49},{"name":4,"version":45,"description":6,"author":46,"user-invocable":47,"allowed-tools":48},"2.1.0","Microsoft Corporation",true,"Bash, AskUserQuestion, mcp__canvas-authoring__connect",{"type":50,"children":51},"root",[52,61,67,74,81,86,141,147,152,249,257,445,453,464,507,513,526,538,548,688,708,735,747,764,769,847,853,858,892],{"type":53,"tag":54,"props":55,"children":57},"element","h1",{"id":56},"configure-the-canvas-authoring-mcp-server",[58],{"type":59,"value":60},"text","Configure the Canvas Authoring MCP Server",{"type":53,"tag":62,"props":63,"children":64},"p",{},[65],{"type":59,"value":66},"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.",{"type":53,"tag":68,"props":69,"children":71},"h2",{"id":70},"instructions",[72],{"type":59,"value":73},"Instructions",{"type":53,"tag":75,"props":76,"children":78},"h3",{"id":77},"_1-ask-for-the-studio-url",[79],{"type":59,"value":80},"1. Ask for the studio URL",{"type":53,"tag":62,"props":82,"children":83},{},[84],{"type":59,"value":85},"Ask the user:",{"type":53,"tag":87,"props":88,"children":89},"blockquote",{},[90,95,109,114],{"type":53,"tag":62,"props":91,"children":92},{},[93],{"type":59,"value":94},"What is the URL of your canvas app studio session?",{"type":53,"tag":62,"props":96,"children":97},{},[98,100,107],{"type":59,"value":99},"Copy the URL from the browser address bar while your app is open in Power Apps Designer (it should look like ",{"type":53,"tag":101,"props":102,"children":104},"code",{"className":103},[],[105],{"type":59,"value":106},"https:\u002F\u002Fmake.powerapps.com\u002Fe\u002FDefault-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\u002Fcanvas\u002F?action=edit&app-id=...",{"type":59,"value":108},").",{"type":53,"tag":62,"props":110,"children":111},{},[112],{"type":59,"value":113},"Make sure coauthoring is enabled in the app (Settings → Updates → Coauthoring).",{"type":53,"tag":62,"props":115,"children":116},{},[117,123,125,131,133,139],{"type":53,"tag":118,"props":119,"children":120},"strong",{},[121],{"type":59,"value":122},"Keep this browser tab open for the entire session.",{"type":59,"value":124}," The MCP server communicates with Power Apps through the coauthoring session tied to that tab. Closing the tab ends the coauthoring session, which prevents ",{"type":53,"tag":101,"props":126,"children":128},{"className":127},[],[129],{"type":59,"value":130},"compile_canvas",{"type":59,"value":132}," and ",{"type":53,"tag":101,"props":134,"children":136},{"className":135},[],[137],{"type":59,"value":138},"sync_canvas",{"type":59,"value":140}," from working and means you can't see or save generated changes.",{"type":53,"tag":75,"props":142,"children":144},{"id":143},"_2-extract-parameters-from-the-url",[145],{"type":59,"value":146},"2. Extract parameters from the URL",{"type":53,"tag":62,"props":148,"children":149},{},[150],{"type":59,"value":151},"Parse the following from the studio URL:",{"type":53,"tag":153,"props":154,"children":155},"ul",{},[156,190,222,239],{"type":53,"tag":157,"props":158,"children":159},"li",{},[160,165,167,173,175,181,183,189],{"type":53,"tag":118,"props":161,"children":162},{},[163],{"type":59,"value":164},"ENV_ID",{"type":59,"value":166},": the path segment between ",{"type":53,"tag":101,"props":168,"children":170},{"className":169},[],[171],{"type":59,"value":172},"\u002Fe\u002F",{"type":59,"value":174}," and the next ",{"type":53,"tag":101,"props":176,"children":178},{"className":177},[],[179],{"type":59,"value":180},"\u002F",{"type":59,"value":182}," (e.g. ",{"type":53,"tag":101,"props":184,"children":186},{"className":185},[],[187],{"type":59,"value":188},"Default-91bee3d9-0c15-4f17-8624-c92bb8b36ead",{"type":59,"value":108},{"type":53,"tag":157,"props":191,"children":192},{},[193,198,200,206,208,213,214,220],{"type":53,"tag":118,"props":194,"children":195},{},[196],{"type":59,"value":197},"APP_ID",{"type":59,"value":199},": URL-decode the ",{"type":53,"tag":101,"props":201,"children":203},{"className":202},[],[204],{"type":59,"value":205},"app-id",{"type":59,"value":207}," query parameter value, then take the last segment after the final ",{"type":53,"tag":101,"props":209,"children":211},{"className":210},[],[212],{"type":59,"value":180},{"type":59,"value":182},{"type":53,"tag":101,"props":215,"children":217},{"className":216},[],[218],{"type":59,"value":219},"6fc3e3d1-292b-4281-8826-577f78512e56",{"type":59,"value":221},")",{"type":53,"tag":157,"props":223,"children":224},{},[225,230,232,238],{"type":53,"tag":118,"props":226,"children":227},{},[228],{"type":59,"value":229},"MAKER_HOSTNAME",{"type":59,"value":231},": the hostname of the URL (e.g. ",{"type":53,"tag":101,"props":233,"children":235},{"className":234},[],[236],{"type":59,"value":237},"make.powerapps.com",{"type":59,"value":221},{"type":53,"tag":157,"props":240,"children":241},{},[242,247],{"type":53,"tag":118,"props":243,"children":244},{},[245],{"type":59,"value":246},"ENVIRONMENT_CATEGORY",{"type":59,"value":248},": determined from MAKER_HOSTNAME (see table below)",{"type":53,"tag":62,"props":250,"children":251},{},[252],{"type":53,"tag":118,"props":253,"children":254},{},[255],{"type":59,"value":256},"Determine ENVIRONMENT_CATEGORY from MAKER_HOSTNAME:",{"type":53,"tag":258,"props":259,"children":260},"table",{},[261,278],{"type":53,"tag":262,"props":263,"children":264},"thead",{},[265],{"type":53,"tag":266,"props":267,"children":268},"tr",{},[269,274],{"type":53,"tag":270,"props":271,"children":272},"th",{},[273],{"type":59,"value":229},{"type":53,"tag":270,"props":275,"children":276},{},[277],{"type":59,"value":246},{"type":53,"tag":279,"props":280,"children":281},"tbody",{},[282,303,323,344,365,386,407,428],{"type":53,"tag":266,"props":283,"children":284},{},[285,294],{"type":53,"tag":286,"props":287,"children":288},"td",{},[289],{"type":53,"tag":101,"props":290,"children":292},{"className":291},[],[293],{"type":59,"value":237},{"type":53,"tag":286,"props":295,"children":296},{},[297],{"type":53,"tag":101,"props":298,"children":300},{"className":299},[],[301],{"type":59,"value":302},"prod",{"type":53,"tag":266,"props":304,"children":305},{},[306,315],{"type":53,"tag":286,"props":307,"children":308},{},[309],{"type":53,"tag":101,"props":310,"children":312},{"className":311},[],[313],{"type":59,"value":314},"make.preview.powerapps.com",{"type":53,"tag":286,"props":316,"children":317},{},[318],{"type":53,"tag":101,"props":319,"children":321},{"className":320},[],[322],{"type":59,"value":302},{"type":53,"tag":266,"props":324,"children":325},{},[326,335],{"type":53,"tag":286,"props":327,"children":328},{},[329],{"type":53,"tag":101,"props":330,"children":332},{"className":331},[],[333],{"type":59,"value":334},"make.preprod.powerapps.com",{"type":53,"tag":286,"props":336,"children":337},{},[338],{"type":53,"tag":101,"props":339,"children":341},{"className":340},[],[342],{"type":59,"value":343},"preprod",{"type":53,"tag":266,"props":345,"children":346},{},[347,356],{"type":53,"tag":286,"props":348,"children":349},{},[350],{"type":53,"tag":101,"props":351,"children":353},{"className":352},[],[354],{"type":59,"value":355},"make.gov.powerapps.us",{"type":53,"tag":286,"props":357,"children":358},{},[359],{"type":53,"tag":101,"props":360,"children":362},{"className":361},[],[363],{"type":59,"value":364},"gov",{"type":53,"tag":266,"props":366,"children":367},{},[368,377],{"type":53,"tag":286,"props":369,"children":370},{},[371],{"type":53,"tag":101,"props":372,"children":374},{"className":373},[],[375],{"type":59,"value":376},"make.high.powerapps.us",{"type":53,"tag":286,"props":378,"children":379},{},[380],{"type":53,"tag":101,"props":381,"children":383},{"className":382},[],[384],{"type":59,"value":385},"high",{"type":53,"tag":266,"props":387,"children":388},{},[389,398],{"type":53,"tag":286,"props":390,"children":391},{},[392],{"type":53,"tag":101,"props":393,"children":395},{"className":394},[],[396],{"type":59,"value":397},"make.apps.appsplatform.us",{"type":53,"tag":286,"props":399,"children":400},{},[401],{"type":53,"tag":101,"props":402,"children":404},{"className":403},[],[405],{"type":59,"value":406},"dod",{"type":53,"tag":266,"props":408,"children":409},{},[410,419],{"type":53,"tag":286,"props":411,"children":412},{},[413],{"type":53,"tag":101,"props":414,"children":416},{"className":415},[],[417],{"type":59,"value":418},"make.powerapps.cn",{"type":53,"tag":286,"props":420,"children":421},{},[422],{"type":53,"tag":101,"props":423,"children":425},{"className":424},[],[426],{"type":59,"value":427},"china",{"type":53,"tag":266,"props":429,"children":430},{},[431,436],{"type":53,"tag":286,"props":432,"children":433},{},[434],{"type":59,"value":435},"Any other hostname",{"type":53,"tag":286,"props":437,"children":438},{},[439],{"type":53,"tag":101,"props":440,"children":442},{"className":441},[],[443],{"type":59,"value":444},"test",{"type":53,"tag":62,"props":446,"children":447},{},[448],{"type":53,"tag":118,"props":449,"children":450},{},[451],{"type":59,"value":452},"Example:",{"type":53,"tag":62,"props":454,"children":455},{},[456,458],{"type":59,"value":457},"Example URL: ",{"type":53,"tag":101,"props":459,"children":461},{"className":460},[],[462],{"type":59,"value":463},"https:\u002F\u002Fmake.powerapps.com\u002Fe\u002FDefault-91bee3d9-0c15-4f17-8624-c92bb8b36ead\u002Fcanvas\u002F?action=edit&app-id=%2Fproviders%2FMicrosoft.PowerApps%2Fapps%2F6fc3e3d1-292b-4281-8826-577f78512e56",{"type":53,"tag":153,"props":465,"children":466},{},[467,477,487,497],{"type":53,"tag":157,"props":468,"children":469},{},[470,472],{"type":59,"value":471},"ENV_ID → ",{"type":53,"tag":101,"props":473,"children":475},{"className":474},[],[476],{"type":59,"value":188},{"type":53,"tag":157,"props":478,"children":479},{},[480,482],{"type":59,"value":481},"APP_ID → ",{"type":53,"tag":101,"props":483,"children":485},{"className":484},[],[486],{"type":59,"value":219},{"type":53,"tag":157,"props":488,"children":489},{},[490,492],{"type":59,"value":491},"MAKER_HOSTNAME → ",{"type":53,"tag":101,"props":493,"children":495},{"className":494},[],[496],{"type":59,"value":237},{"type":53,"tag":157,"props":498,"children":499},{},[500,502],{"type":59,"value":501},"ENVIRONMENT_CATEGORY → ",{"type":53,"tag":101,"props":503,"children":505},{"className":504},[],[506],{"type":59,"value":302},{"type":53,"tag":75,"props":508,"children":510},{"id":509},"_3-configure-the-mcp-server",[511],{"type":59,"value":512},"3. Configure the MCP server",{"type":53,"tag":62,"props":514,"children":515},{},[516,518,524],{"type":59,"value":517},"Call the ",{"type":53,"tag":101,"props":519,"children":521},{"className":520},[],[522],{"type":59,"value":523},"connect",{"type":59,"value":525}," MCP tool to connect the server to the user's coauthoring session:",{"type":53,"tag":527,"props":528,"children":532},"pre",{"className":529,"code":531,"language":59},[530],"language-text","mcp__canvas-authoring__connect(\n  environment_id: ENV_ID,\n  app_id: APP_ID,\n  environment_category: ENVIRONMENT_CATEGORY,\n  \u002F\u002F Optional — include only if the user has expressed a preference or a prior sign-in failed (see below):\n  auth_flow: \"broker\" | \"browser\" | \"devicecode\",\n  login_hint: \"user@contoso.com\",\n  tenant_id: \"00000000-0000-0000-0000-000000000000\",\n  force_account_select: true\n)\n",[533],{"type":53,"tag":101,"props":534,"children":536},{"__ignoreMap":535},"",[537],{"type":59,"value":531},{"type":53,"tag":62,"props":539,"children":540},{},[541,546],{"type":53,"tag":118,"props":542,"children":543},{},[544],{"type":59,"value":545},"Optional parameters — do NOT prompt the user for these.",{"type":59,"value":547}," Only include them if the user has already expressed a preference earlier in the conversation, or if a prior connect attempt failed:",{"type":53,"tag":153,"props":549,"children":550},{},[551,585,633,658],{"type":53,"tag":157,"props":552,"children":553},{},[554,560,562,567,569,576,578,583],{"type":53,"tag":101,"props":555,"children":557},{"className":556},[],[558],{"type":59,"value":559},"login_hint",{"type":59,"value":561},": Pass the user's UPN or email ",{"type":53,"tag":118,"props":563,"children":564},{},[565],{"type":59,"value":566},"only if",{"type":59,"value":568}," they have indicated they want to connect as a specific\u002Fdifferent user (e.g. \"log in as ",{"type":53,"tag":570,"props":571,"children":573},"a",{"href":572},"mailto:alice@contoso.com",[574],{"type":59,"value":575},"alice@contoso.com",{"type":59,"value":577},"\"). 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\u002Fapp, reuse the same ",{"type":53,"tag":101,"props":579,"children":581},{"className":580},[],[582],{"type":59,"value":559},{"type":59,"value":584}," value as the previous successful connect (if known) so the same user is reused without re-prompting.",{"type":53,"tag":157,"props":586,"children":587},{},[588,594,596,602,604,610,612,618,620,624,626,631],{"type":53,"tag":101,"props":589,"children":591},{"className":590},[],[592],{"type":59,"value":593},"auth_flow",{"type":59,"value":595},": Pass ",{"type":53,"tag":101,"props":597,"children":599},{"className":598},[],[600],{"type":59,"value":601},"\"browser\"",{"type":59,"value":603},", ",{"type":53,"tag":101,"props":605,"children":607},{"className":606},[],[608],{"type":59,"value":609},"\"broker\"",{"type":59,"value":611},", or ",{"type":53,"tag":101,"props":613,"children":615},{"className":614},[],[616],{"type":59,"value":617},"\"devicecode\"",{"type":59,"value":619}," ",{"type":53,"tag":118,"props":621,"children":622},{},[623],{"type":59,"value":566},{"type":59,"value":625}," the user has explicitly stated a preferred auth flow (e.g. \"use browser sign-in\"). Use ",{"type":53,"tag":101,"props":627,"children":629},{"className":628},[],[630],{"type":59,"value":617},{"type":59,"value":632}," on headless\u002FSSH 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.",{"type":53,"tag":157,"props":634,"children":635},{},[636,642,644,649,651,656],{"type":53,"tag":101,"props":637,"children":639},{"className":638},[],[640],{"type":59,"value":641},"tenant_id",{"type":59,"value":643},": Pass a tenant GUID ",{"type":53,"tag":118,"props":645,"children":646},{},[647],{"type":59,"value":648},"only",{"type":59,"value":650}," for Entra B2B guest access — set it to the host\u002Fresource tenant where the user is a guest so the token is issued by that tenant rather than the user's home tenant. Combine with ",{"type":53,"tag":101,"props":652,"children":654},{"className":653},[],[655],{"type":59,"value":559},{"type":59,"value":657}," (the guest's home UPN) to pre-fill the account. Omit for normal same-tenant sign-in.",{"type":53,"tag":157,"props":659,"children":660},{},[661,667,668,674,675,679,681,686],{"type":53,"tag":101,"props":662,"children":664},{"className":663},[],[665],{"type":59,"value":666},"force_account_select",{"type":59,"value":595},{"type":53,"tag":101,"props":669,"children":671},{"className":670},[],[672],{"type":59,"value":673},"true",{"type":59,"value":619},{"type":53,"tag":118,"props":676,"children":677},{},[678],{"type":59,"value":648},{"type":59,"value":680}," to force the account picker instead of silently reusing a cached account — set this when a previous connect failed with a 401\u002F403 and no ",{"type":53,"tag":101,"props":682,"children":684},{"className":683},[],[685],{"type":59,"value":559},{"type":59,"value":687}," was given, so the user can pick the correct account. Omit otherwise.",{"type":53,"tag":62,"props":689,"children":690},{},[691,693,699,701,706],{"type":59,"value":692},"If the ",{"type":53,"tag":101,"props":694,"children":696},{"className":695},[],[697],{"type":59,"value":698},"mcp__canvas-authoring__connect",{"type":59,"value":700}," tool is ",{"type":53,"tag":118,"props":702,"children":703},{},[704],{"type":59,"value":705},"not available",{"type":59,"value":707}," (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:",{"type":53,"tag":527,"props":709,"children":713},{"className":710,"code":711,"language":712,"meta":535,"style":535},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","dotnet --list-sdks\n","bash",[714],{"type":53,"tag":101,"props":715,"children":716},{"__ignoreMap":535},[717],{"type":53,"tag":718,"props":719,"children":722},"span",{"class":720,"line":721},"line",1,[723,729],{"type":53,"tag":718,"props":724,"children":726},{"style":725},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[727],{"type":59,"value":728},"dotnet",{"type":53,"tag":718,"props":730,"children":732},{"style":731},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[733],{"type":59,"value":734}," --list-sdks\n",{"type":53,"tag":62,"props":736,"children":737},{},[738,740,745],{"type":59,"value":739},"If a version 10.x.y or higher is ",{"type":53,"tag":118,"props":741,"children":742},{},[743],{"type":59,"value":744},"not",{"type":59,"value":746}," listed, tell the user:",{"type":53,"tag":87,"props":748,"children":749},{},[750],{"type":53,"tag":62,"props":751,"children":752},{},[753,755,762],{"type":59,"value":754},"⚠️ .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 ",{"type":53,"tag":570,"props":756,"children":760},{"href":757,"rel":758},"https:\u002F\u002Fdotnet.microsoft.com\u002Fdownload\u002Fdotnet\u002F10.0",[759],"nofollow",[761],{"type":59,"value":757},{"type":59,"value":763}," and then try again.",{"type":53,"tag":62,"props":765,"children":766},{},[767],{"type":59,"value":768},"If the tool is available but the call returns an error, report the error and suggest checking that:",{"type":53,"tag":770,"props":771,"children":772},"ol",{},[773,778,783],{"type":53,"tag":157,"props":774,"children":775},{},[776],{"type":59,"value":777},"The studio URL is correct and the browser tab is still open",{"type":53,"tag":157,"props":779,"children":780},{},[781],{"type":59,"value":782},"Coauthoring is enabled in the app settings",{"type":53,"tag":157,"props":784,"children":785},{},[786,788,793,795,801,802,808,809,815,817,822,824,830,832,838,840,845],{"type":59,"value":787},"If sign-in failed, the user may need to specify ",{"type":53,"tag":101,"props":789,"children":791},{"className":790},[],[792],{"type":59,"value":593},{"type":59,"value":794}," (",{"type":53,"tag":101,"props":796,"children":798},{"className":797},[],[799],{"type":59,"value":800},"broker",{"type":59,"value":603},{"type":53,"tag":101,"props":803,"children":805},{"className":804},[],[806],{"type":59,"value":807},"browser",{"type":59,"value":611},{"type":53,"tag":101,"props":810,"children":812},{"className":811},[],[813],{"type":59,"value":814},"devicecode",{"type":59,"value":816},") or a ",{"type":53,"tag":101,"props":818,"children":820},{"className":819},[],[821],{"type":59,"value":559},{"type":59,"value":823}," (UPN\u002Femail) to authenticate as the correct account. On a headless\u002FSSH host, use ",{"type":53,"tag":101,"props":825,"children":827},{"className":826},[],[828],{"type":59,"value":829},"auth_flow: \"devicecode\"",{"type":59,"value":831},". If a cached account keeps getting picked, retry with ",{"type":53,"tag":101,"props":833,"children":835},{"className":834},[],[836],{"type":59,"value":837},"force_account_select: true",{"type":59,"value":839},". For Entra B2B guest access, set ",{"type":53,"tag":101,"props":841,"children":843},{"className":842},[],[844],{"type":59,"value":641},{"type":59,"value":846}," to the host tenant.",{"type":53,"tag":75,"props":848,"children":850},{"id":849},"_4-confirm",[851],{"type":59,"value":852},"4. Confirm",{"type":53,"tag":62,"props":854,"children":855},{},[856],{"type":59,"value":857},"Tell the user:",{"type":53,"tag":87,"props":859,"children":860},{},[861,866,879],{"type":53,"tag":62,"props":862,"children":863},{},[864],{"type":59,"value":865},"✅ Canvas Authoring MCP server configured for your coauthoring session.",{"type":53,"tag":62,"props":867,"children":868},{},[869,871,877],{"type":59,"value":870},"You can now use Canvas App skills like ",{"type":53,"tag":101,"props":872,"children":874},{"className":873},[],[875],{"type":59,"value":876},"\u002Fcanvas-app",{"type":59,"value":878}," to create or edit your app.",{"type":53,"tag":62,"props":880,"children":881},{},[882,884,890],{"type":59,"value":883},"To verify the setup, try: \"List available Canvas App controls\" — this should invoke ",{"type":53,"tag":101,"props":885,"children":887},{"className":886},[],[888],{"type":59,"value":889},"list_controls",{"type":59,"value":891},".",{"type":53,"tag":893,"props":894,"children":895},"style",{},[896],{"type":59,"value":897},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":899,"total":1092},[900,920,941,962,977,994,1005,1018,1033,1048,1067,1080],{"slug":901,"name":901,"fn":902,"description":903,"org":904,"tags":905,"stars":917,"repoUrl":918,"updatedAt":919},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[906,909,910,911,914],{"name":907,"slug":908,"type":15},"Engineering","engineering",{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":912,"slug":913,"type":15},"Project Management","project-management",{"name":915,"slug":916,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":921,"name":921,"fn":922,"description":923,"org":924,"tags":925,"stars":938,"repoUrl":939,"updatedAt":940},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[926,929,932,935],{"name":927,"slug":928,"type":15},".NET","net",{"name":930,"slug":931,"type":15},"Agents","agents",{"name":933,"slug":934,"type":15},"Azure","azure",{"name":936,"slug":937,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":942,"name":942,"fn":943,"description":944,"org":945,"tags":946,"stars":938,"repoUrl":939,"updatedAt":961},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[947,950,951,954,957,958],{"name":948,"slug":949,"type":15},"Analytics","analytics",{"name":933,"slug":934,"type":15},{"name":952,"slug":953,"type":15},"Data Analysis","data-analysis",{"name":955,"slug":956,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":959,"slug":960,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":963,"name":963,"fn":964,"description":965,"org":966,"tags":967,"stars":938,"repoUrl":939,"updatedAt":976},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[968,971,972,973],{"name":969,"slug":970,"type":15},"AI Infrastructure","ai-infrastructure",{"name":933,"slug":934,"type":15},{"name":955,"slug":956,"type":15},{"name":974,"slug":975,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":978,"name":978,"fn":979,"description":980,"org":981,"tags":982,"stars":938,"repoUrl":939,"updatedAt":993},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[983,984,987,988,989,992],{"name":933,"slug":934,"type":15},{"name":985,"slug":986,"type":15},"Compliance","compliance",{"name":936,"slug":937,"type":15},{"name":9,"slug":8,"type":15},{"name":990,"slug":991,"type":15},"Python","python",{"name":974,"slug":975,"type":15},"2026-07-18T05:14:23.017504",{"slug":995,"name":995,"fn":996,"description":997,"org":998,"tags":999,"stars":938,"repoUrl":939,"updatedAt":1004},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1000,1001,1002,1003],{"name":948,"slug":949,"type":15},{"name":933,"slug":934,"type":15},{"name":936,"slug":937,"type":15},{"name":990,"slug":991,"type":15},"2026-07-31T05:54:29.068751",{"slug":1006,"name":1006,"fn":1007,"description":1008,"org":1009,"tags":1010,"stars":938,"repoUrl":939,"updatedAt":1017},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1011,1014,1015,1016],{"name":1012,"slug":1013,"type":15},"API Development","api-development",{"name":933,"slug":934,"type":15},{"name":9,"slug":8,"type":15},{"name":990,"slug":991,"type":15},"2026-07-18T05:14:16.988376",{"slug":1019,"name":1019,"fn":1020,"description":1021,"org":1022,"tags":1023,"stars":938,"repoUrl":939,"updatedAt":1032},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1024,1025,1028,1031],{"name":933,"slug":934,"type":15},{"name":1026,"slug":1027,"type":15},"Computer Vision","computer-vision",{"name":1029,"slug":1030,"type":15},"Images","images",{"name":990,"slug":991,"type":15},"2026-07-18T05:14:18.007737",{"slug":1034,"name":1034,"fn":1035,"description":1036,"org":1037,"tags":1038,"stars":938,"repoUrl":939,"updatedAt":1047},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1039,1040,1043,1046],{"name":933,"slug":934,"type":15},{"name":1041,"slug":1042,"type":15},"Configuration","configuration",{"name":1044,"slug":1045,"type":15},"Feature Flags","feature-flags",{"name":955,"slug":956,"type":15},"2026-07-03T16:32:01.278468",{"slug":1049,"name":1049,"fn":1050,"description":1051,"org":1052,"tags":1053,"stars":938,"repoUrl":939,"updatedAt":1066},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1054,1057,1060,1063],{"name":1055,"slug":1056,"type":15},"Cosmos DB","cosmos-db",{"name":1058,"slug":1059,"type":15},"Database","database",{"name":1061,"slug":1062,"type":15},"NoSQL","nosql",{"name":1064,"slug":1065,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":1068,"name":1068,"fn":1050,"description":1069,"org":1070,"tags":1071,"stars":938,"repoUrl":939,"updatedAt":1079},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1072,1073,1074,1075,1076],{"name":1055,"slug":1056,"type":15},{"name":1058,"slug":1059,"type":15},{"name":9,"slug":8,"type":15},{"name":1061,"slug":1062,"type":15},{"name":1077,"slug":1078,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":1081,"name":1081,"fn":1082,"description":1083,"org":1084,"tags":1085,"stars":938,"repoUrl":939,"updatedAt":1091},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1086,1087,1088,1089,1090],{"name":933,"slug":934,"type":15},{"name":1055,"slug":1056,"type":15},{"name":1058,"slug":1059,"type":15},{"name":955,"slug":956,"type":15},{"name":1061,"slug":1062,"type":15},"2026-05-13T06:14:17.582229",267,{"items":1094,"total":1187},[1095,1108,1121,1131,1146,1159,1173],{"slug":1096,"name":1096,"fn":1097,"description":1098,"org":1099,"tags":1100,"stars":26,"repoUrl":27,"updatedAt":1107},"activate-site","provision and activate Power Pages sites","Activates and provisions a Power Pages website in a Power Platform environment via the Power Platform REST API. Use when the user wants to activate, provision, turn on, or enable a Power Pages website or portal.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1101,1104,1105],{"name":1102,"slug":1103,"type":15},"Deployment","deployment",{"name":9,"slug":8,"type":15},{"name":1106,"slug":37,"type":15},"Power Pages","2026-04-06T18:34:34.732549",{"slug":1109,"name":1109,"fn":1110,"description":1111,"org":1112,"tags":1113,"stars":26,"repoUrl":27,"updatedAt":1120},"add-connector","add Power Platform connectors to apps","Adds any Power Platform connector to a Power Apps code app. Generic fallback for connectors not covered by a specific skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1114,1117,1119],{"name":1115,"slug":1116,"type":15},"Integrations","integrations",{"name":1118,"slug":36,"type":15},"Power Apps",{"name":24,"slug":25,"type":15},"2026-07-31T05:54:47.042251",{"slug":1122,"name":1122,"fn":1123,"description":1124,"org":1125,"tags":1126,"stars":26,"repoUrl":27,"updatedAt":1130},"add-datasource","add data sources to Power Apps","Adds a data source or connector to a Power Apps code app. Asks what the user wants to accomplish and routes to the appropriate specialized skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1127,1128,1129],{"name":1115,"slug":1116,"type":15},{"name":9,"slug":8,"type":15},{"name":1118,"slug":36,"type":15},"2026-07-03T16:31:47.822186",{"slug":1132,"name":1132,"fn":1133,"description":1134,"org":1135,"tags":1136,"stars":26,"repoUrl":27,"updatedAt":1145},"add-dataverse","add Dataverse tables to Power Apps","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.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1137,1140,1143,1144],{"name":1138,"slug":1139,"type":15},"Data Modeling","data-modeling",{"name":1141,"slug":1142,"type":15},"Dataverse","dataverse",{"name":9,"slug":8,"type":15},{"name":1118,"slug":36,"type":15},"2026-07-31T05:54:46.078014",{"slug":1147,"name":1147,"fn":1148,"description":1149,"org":1150,"tags":1151,"stars":26,"repoUrl":27,"updatedAt":1158},"add-excel","integrate Excel Online into Power Apps","Adds Excel Online (Business) connector to a Power Apps code app. Use when reading or writing Excel workbook data from OneDrive or SharePoint.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1152,1155,1156,1157],{"name":1153,"slug":1154,"type":15},"Excel","excel",{"name":1115,"slug":1116,"type":15},{"name":9,"slug":8,"type":15},{"name":1118,"slug":36,"type":15},"2026-07-31T05:54:44.030943",{"slug":1160,"name":1160,"fn":1161,"description":1162,"org":1163,"tags":1164,"stars":26,"repoUrl":27,"updatedAt":1172},"add-mcscopilot","add Copilot Studio connectors to Power Apps","Adds Microsoft Copilot Studio connector to a Power Apps code app. Use when invoking Copilot Studio agents, sending prompts to agents, or integrating agent responses.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1165,1166,1169,1170,1171],{"name":930,"slug":931,"type":15},{"name":1167,"slug":1168,"type":15},"Copilot Studio","copilot-studio",{"name":1115,"slug":1116,"type":15},{"name":9,"slug":8,"type":15},{"name":1118,"slug":36,"type":15},"2026-07-31T05:54:39.025597",{"slug":1174,"name":1174,"fn":1175,"description":1176,"org":1177,"tags":1178,"stars":26,"repoUrl":27,"updatedAt":1186},"add-sample-data","populate Power Pages tables with sample data","Populates Dataverse tables with sample records for testing and demoing a Power Pages site. Use when the user wants to add sample data, seed data, generate test records, or insert demo data into their tables.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1179,1180,1181,1182,1183],{"name":1058,"slug":1059,"type":15},{"name":1141,"slug":1142,"type":15},{"name":9,"slug":8,"type":15},{"name":1106,"slug":37,"type":15},{"name":1184,"slug":1185,"type":15},"Testing","testing","2026-04-06T18:34:41.141155",26]