Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
[Dit onderwerp maakt deel uit van de voorlopige documentatie en kan nog veranderen.]
In dit artikel wordt uitgelegd hoe u hulpprogramma's voor het genereren van AI-code, zoals GitHub Copilot CLI of Claude Code, kunt gebruiken om interactieve MCP-apps (Model Context Protocol) te genereren voor uw modelgestuurde Power Apps MCP-hulpprogramma's. MCP-apps zijn zelfstandige HTML-bestanden die de JSON-uitvoer van een hulpprogramma visueel weergeven als kaarten, grafieken, dashboards of kaarten in een host die compatibel is met MCP-apps, waaronder Microsoft 365 Copilot, Claude en Visual Studio Code.
Als u een MCP-hulpprogramma hebt dat JSON-gegevens retourneert, kan de generate-mcp-app-ui vaardigheid een professioneel, themabewuste widget produceren waarmee die gegevens in een compacte visuele indeling rechtstreeks in een chatgesprek worden weergegeven.
Belangrijk
- Dit is een preview-functie.
- Preview-functies zijn niet bedoeld voor productiegebruik en bieden mogelijk beperkte functionaliteit. Deze functies zijn beschikbaar vóór een officiële release zodat klanten vroeg toegang kunnen krijgen en feedback kunnen geven.
- Ondersteuning voor MCP-apps in Microsoft 365 Copilot Chat is algemeen beschikbaar vanaf maart 2026. Power Apps-ondersteuning voor MCP-apps in declaratieve agents is momenteel beschikbaar als openbare preview. Zie MCP-apps nu beschikbaar in Copilot Chat voor de volledige aankondiging.
Mogelijkheden met de generate-mcp-app-ui skill
- Maak visuele widgets voor elk MCP-hulpprogramma door te beschrijven wat u wilt en de JSON-uitvoer van het hulpprogramma te plakken.
- Kies de juiste visual voor uw gegevens, zoals grafieken voor numerieke trends, kaarten voor gestructureerde records, tabellen voor vergelijkingen, kaarten voor coördinaten enzovoort.
- Ondersteuning voor lichte en donkere thema's automatisch via Fluent UI-ontwerptokens.
- Voeg interactiviteit toe zodat widgets uw hulpprogramma tijdens runtime opnieuw kunnen aanroepen (bijvoorbeeld een vernieuwingsknop).
- Verfijn de UX iteratief door wijzigingen in natuurlijke taal te beschrijven. Bijvoorbeeld 'maak de galerie compact', 'voeg een grafiek toe' of 'gebruik een kaartindeling'.
Vereiste voorwaarden
Softwarevereisten
| Component | Minimumversie | Meer informatie |
|---|---|---|
| GitHub Copilot CLI, Claude Code of een ander hulpprogramma voor het genereren van code | Latest | Claude Code, GitHub Copilot CLI |
| Een moderne browser | Elke | Voor het lokaal bekijken van gegenereerde widgets |
Aanvullende vereisten
- Een MCP-hulpprogramma dat JSON-uitvoer retourneert. Het uitvoertype van het hulpprogramma moet zijn ingesteld op JSON.
- Een werkende internetverbinding. Widgets laden Fluent UI en andere bibliotheken van het CDN (Content Delivery Network) tijdens runtime.
De invoegtoepassing installeren
Voer de volgende installatieopdracht uit vanuit GitHub Copilot CLI of Claude Code. Het installatieprogramma detecteert automatisch beschikbare hulpprogramma's en installeert alle Power Platform-invoegtoepassingen, waaronder generate-mcp-app-ui.
/plugin marketplace add microsoft/power-platform-skills
Alleen de vaardigheid voor de MCP App-widget installeren:
/plugin install mcp-apps@power-platform-skills
Tip
Schakel automatisch bijwerken in om automatisch vaardigheidsupdates te ontvangen. Gebruik de /plugin opdracht, navigeer naar Marketplaces, kies de marketplace en schakel automatisch bijwerken in.
Overzicht van vaardigheden
| Vaardigheid | Command | Beschrijving |
|---|---|---|
| MCP Apps widget-generator | /generate-mcp-app-ui |
Een zelf-ingesloten MCP-appwidget (HTML-bestand) genereren voor de JSON-uitvoer van een MCP-hulpprogramma |
De vaardigheid wordt ook geactiveerd door woordgroepen in natuurlijke taal, zoals 'een widget maken', 'een widget maken voor mijn hulpprogramma' of 'een MCP-app maken'.
Een widget genereren
Volg deze stappen om een nieuwe widget te maken voor een MCP-hulpprogramma.
Maak en test een aangepast hulpprogramma van modelgestuurde app-ontwerpers en kopieer de volledige JSON-uitvoer. Zorg ervoor dat het uitvoertype van het hulpprogramma is ingesteld op JSON. Meer informatie: Aangepaste hulpprogramma's maken
Roep de vaardigheid aan en beschrijf wat u wilt weergeven en plak de JSON-uitvoer in het gesprek:
/generate-mcp-app-ui Visualizes flights using an animated arc map for routes and a synchronized Gantt timeline for departure and arrival schedules, enabling quick understanding of flight coverage, timing, and overlaps. Here's an example of the tool's output: {"flight_records":[{"Departure Time":"2024-07-02T05:00:00Z","Arrival Time":"2024-07-02T07:30:00Z","Flight Name":"Zava 1001","Status":"Active","Airport":"Seattle-Tacoma","Airport1":"Los Angeles Intl"},{"Departure Time":"2024-07-02T03:00:00Z","Arrival Time":"2024-07-02T10:00:00Z","Flight Name":"Zava 103","Status":"Active","Airport":"Seattle-Tacoma","Airport1":"Hartsfield-Jackson"}]}Controleer het gegenereerde HTML-bestand. De vaardigheid schrijft bijvoorbeeld een zelfstandig HTML-bestand
flight-map.htmlnaar uw werkmap.Bekijken in een browser. Open het HTML-bestand lokaal, aangezien de widget een terugvaloptie voor testen heeft. U kunt chatagent vragen om zelfstandige HTML-preview toe te voegen als deze ontbreekt.
Herhaal dit. Beschrijf eventuele wijzigingen rechtstreeks in de chat:
- "De kaart groter maken"
- Hulpmiddelentips toevoegen aan de grafiek
- Verklein de hoogte en pas deze aan naar 250 pixels in een responsieve indeling zonder schuifbalken.
Opmerking
De vaardigheid vereist werkelijke JSON van uw hulpprogramma, geen voorbeeld- of mockgegevens. De gegevensstructuur stuurt de generatie van de widget aan. Als u gesimuleerde gegevens plakt, werkt de gegenereerde widget mogelijk niet correct wanneer deze is verbonden met het echte hulpprogramma.
Uw widget implementeren
Wanneer uw widget klaar is, kopieert u het HTML-bestand naar de UX-invoer voor het bijbehorende hulpprogramma en wordt het geretourneerd als het UI-antwoord van het hulpprogramma. Raadpleeg de documentatie voor het maken van aangepaste hulpprogramma's voor meer informatie.
Interactiviteit toevoegen met callServerTool
Als u ook de naam van uw hulpprogramma opgeeft bij het aanroepen van de vaardigheid, kan de gegenereerde widget interactieve integratie van hulpprogramma-aanroepen bevatten. Hierdoor kan de widget uw hulpprogramma tijdens runtime opnieuw aanroepen. Een vernieuwingsknop in de UX van het hulpprogramma kan zichzelf bijvoorbeeld aanroepen.
/generate-mcp-app-ui Show the current weather conditions with a refresh button. Tool name: get_weather. Tool output: {"city":"Seattle","temp_f":54,"condition":"Overcast","humidity":78,"forecast":[...]}
De vaardigheid wordt in de widget opgeslagen app.callServerTool , zodat wanneer gebruikers Vernieuwen selecteren, de widget bijgewerkte gegevens rechtstreeks uit uw hulpprogramma ophaalt.
Als u geen toolnaam opgeeft, is de widget alleen voor lezen en worden alleen de gegevens weergegeven die via de ontoolresult callback worden geleverd.
- Microsoft 365 Copilot-chat: Zie MCP-apps in Copilot Chat voor implementatiepaden, waaronder sideloaden voor testen, implementeren via het Microsoft 365-beheercentrum voor organisatiegebruik en publiceren naar de Microsoft 365-agentopslag.
- Power Apps-declaratieve agents: Zie de Power Apps MCP-declaratieve agents-documentatie voor hoe MCP-hulpprogramma's met modelgestuurde apps te verbinden.
- Andere MCP-hosts: raadpleeg de documentatie van uw host voor het registratieproces van de MCP-appswidget.
Technische details widget
Protocol voor MCP-apps
Widgets communiceren met de chathost met behulp van de App klasse van het @modelcontextprotocol/ext-apps pakket. Het protocol beheert deze callbacks en methoden.
| Callback/methode | Beschrijving |
|---|---|
app.ontoolresult |
Wordt geactiveerd wanneer de host hulpprogrammagegevens levert.
Uw gegevens zijn altijd op result.structuredContent— niet result.data of result zelf. |
app.onhostcontextchanged |
Wordt geactiveerd wanneer de hostcontext wordt gewijzigd, inclusief het thema (ctx.theme is 'light' of 'dark'). |
app.onteardown |
Wordt geactiveerd wanneer de widget uit het gesprek wordt verwijderd. |
app.connect() |
Hiermee wordt communicatie met de host tot stand gebracht. Alle gebeurtenis-handlers moeten worden geregistreerd voordat er een aanroep plaatsvindt connect(). |
app.getHostContext() |
Retourneert de huidige hostcontext (inclusief het eerste thema) nadat connect() deze is voltooid. |
app.callServerTool({ name, arguments }) |
Roept interactief een hulpprogramma aan. Retourneert result.isError en result.structuredContent. |
CDN-importen
Widgets laden alle afhankelijkheden van CDN. Er is geen buildstap of lokale installatie vereist. Afhankelijkheden hebben twee indelingen:
ECMAScript Modules (ESM) - geïmporteerd met
<script type="module">behulp van een URL die eindigt op/+esmUniversal Module Definition (UMD) - geladen via een gewone
<script src>tag; registreert zichzelf globaal als neveneffectBibliotheek Indeling URL Doel @modelcontextprotocol/ext-appsESM cdn.jsdelivr.net/npm/@modelcontextprotocol/ext-apps/+esmMCP-appsklasse App@fluentui/tokensESM cdn.jsdelivr.net/npm/@fluentui/tokens/+esmwebLightTheme/webDarkThemetokensets@fluentui/web-components@betaUMD unpkg.com/@fluentui/web-components@beta/dist/web-components.min.jsAangepaste elementen van Fluent UI
Visuele statussen
Elke widget verwerkt drie statussen:
| Provincie | Richtlijnen |
|---|---|
| Aan het laden | Een <fluent-spinner> met een contextueel bericht weergeven ('Attracties zoeken...' niet alleen 'Laden...'). |
| Geladen | De inhoud compact weergeven. Gebruik de volledige beschikbare breedte. |
| Fout | Een vriendelijk bericht weergeven en een knop "Opnieuw proberen". Als de widget callServerTool gebruikt, roept de knop het hulpprogramma opnieuw aan. |
Fluent UI-onderdelen
De volgende Fluent UI-webonderdelen zijn beschikbaar in widgets:
<fluent-card>, <fluent-button>, <fluent-text-input>, <fluent-textarea>, <fluent-dropdown>, <fluent-listbox>, <fluent-option>, <fluent-checkbox>, <fluent-spinner>, <fluent-divider>, <fluent-badge>, <fluent-switch>, <fluent-tooltip>
Ondersteuning voor thema's
Widgets ondersteunen lichte en donkere thema's via Fluent UI-ontwerptokens. De widget past de juiste tokenwaarden toe wanneer het thema van de host verandert via onhostcontextchanged. Gebruik altijd tokenvariabelen, bijvoorbeeld var(--colorNeutralForeground1), in plaats van vastgelegde kleurwaarden om ervoor te zorgen dat beide thema's correct worden weergegeven.
Kleurtokens
| Gebruiken | Token |
|---|---|
| Primaire tekst | var(--colorNeutralForeground1) |
| Secundaire tekst | var(--colorNeutralForeground2) |
| Primaire achtergrond | var(--colorNeutralBackground1) |
| Achtergrond van kaart/aanwijzer | var(--colorNeutralBackground2) |
| Merk/accent | var(--colorBrandBackground) |
| Tekst op merkoppervlak | var(--colorNeutralForegroundOnBrand) |
| Grenzen | var(--colorNeutralStroke1) |
| Fouttekst | var(--colorStatusDangerForeground1) |
| Succesbericht | var(--colorStatusSuccessForeground1) |
Gebruik nooit in code vastgelegde hexidecimale of RGB-waarden. Bedenk geen tokennamen die hier niet worden vermeld.
Aanbevolen procedures
- Geef echte testgegevens op. De vaardigheid analyseert de werkelijke JSON-structuur om de juiste visual te selecteren. Mockgegevens produceren widgets die breken wanneer ze zijn verbonden met de werkelijke tool.
- Wees specifiek over de visualisatie. Beschrijf de gewenste indeling, zoals kaart, grafiek, tabel of kaartindeling. Vage beschrijvingen leiden tot algemene resultaten.
- Begin met één weergave. Widgets zijn compacte gesprekskaarten, niet volledige toepassingen. Geen tabbladen, paginanavigatie of zoekbalken die de chatinvoer dupliceren.
- Test met beide thema's. Bekijk in de lichte en donkere modus om het contrast en de leesbaarheid te verifiëren.
- Koppel de visual aan de gegevens. Kaarten voor coördinaten, grafieken voor numerieke of trendgegevens, kaarten voor gestructureerde records, tabellen voor vergelijkingen.
Beperkingen
- Widgets moeten alle externe bibliotheken van CDN laden. Er is een internetverbinding vereist tijdens runtime.
- Voor de weergavemodus volledig scherm is extra implementatie vereist die verder gaat dan wat de vaardigheid genereert.
- De vaardigheid verwerkt geen MCP-serverregistratie of -implementatie in het Microsoft 365-beheercentrum. U moet deze stappen afzonderlijk uitvoeren.
- Verificatie (OAuth 2.1, Microsoft Entra SSO) wordt verwerkt door de MCP-hostomgeving, niet de widget HTML zelf.
Verwante documentatie
Documentatie voor Microsoft 365-ontwikkelaars
Documentatie voor Power Platform
- Generatieve pagina's maken en bewerken met hulpprogramma's voor het genereren van AI-code
- Power Platform CLI-verwijzing