Generieren von MCP-App-Widgets mit AI-Codegenerierungstools

[Dieses Thema ist Teil der Dokumentation zur Vorabversion und kann geändert werden.]

In diesem Artikel wird erläutert, wie Sie KI-Codegenerierungstools wie GitHub Copilot CLI oder Claude Code verwenden, um MCP-Apps (Interactive Model Context Protocol) für Ihre modellgesteuerten Power Apps MCP-Tools zu generieren. MCP-Apps sind eigenständige HTML-Dateien, die die JSON-Ausgabe eines Tools visuell als Karten, Diagramme, Dashboards oder Karten innerhalb eines mit MCP-Apps kompatiblen Hosts rendern, einschließlich Microsoft 365 Copilot, Claude und Visual Studio Code.

Wenn Sie über ein MCP-Tool verfügen, das JSON-Daten zurückgibt, kann die generate-mcp-app-ui Fähigkeit ein ansprechendes designfähiges Widget erzeugen, das diese Daten in einem kompakten visuellen Format direkt in einer Chatunterhaltung anzeigt.

Wichtig

  • Dies ist eine Vorschaufunktion.
  • Funktionen in der Vorschauversion sind nicht für den Produktionseinsatz gedacht und können eine eingeschränkte Funktionalität aufweisen. Diese Funktionen sind vor einer offiziellen Veröffentlichung verfügbar, sodass die Kundschaft frühzeitig Zugriff erhält und Feedback geben kann.
  • McP-Apps-Unterstützung in Microsoft 365 Copilot Chat ist ab März 2026 allgemein verfügbar. Die Power Apps-Unterstützung für MCP-Apps in deklarativen Agents befindet sich derzeit in der öffentlichen Vorschau. Die vollständige Ankündigung finden Sie unter MCP-Apps, die jetzt im Copilot-Chat verfügbar sind.

Welche Funktionen Sie mit der Fähigkeit „generate-mcp-app-ui“ nutzen können

  • Erstellen Sie visuelle Widgets für jedes MCP-Tool, indem Sie beschreiben, was Sie wünschen und die JSON-Ausgabe des Tools einfügen.
  • Wählen Sie das richtige Visuelle für Ihre Daten aus, z. B. Diagramme für numerische Trends, Karten für strukturierte Datensätze, Tabellen für Vergleiche, Karten für Koordinaten usw.
  • Unterstützen Sie helle und dunkle Designs automatisch über Fluent UI-Designtoken.
  • Fügen Sie Interaktivität hinzu, damit Widgets Ihr Tool zur Laufzeit erneut aufrufen können (z. B. eine Aktualisierungsschaltfläche).
  • Verfeinern Sie die UX iterativ, indem Sie Änderungen in natürlicher Sprache beschreiben. Beispiel: "Komprimieren des Katalogs", "Hinzufügen eines Diagramms" oder "Verwenden eines Kartenlayouts".

Voraussetzungen

Softwareanforderungen

Komponente Mindestversion Mehr erfahren
GitHub Copilot CLI, Claude Code oder ein anderes Codegenerierungstool Neueste Claude Code, GitHub Copilot CLI
Ein moderner Browser Any Für die lokale Vorschau generierter Widgets

Zusätzliche Anforderungen

  • Ein MCP-Tool, das die JSON-Ausgabe zurückgibt. Der Ausgabetyp Ihres Tools muss auf JSON festgelegt werden.
  • Eine funktionierende Internetverbindung. Widgets laden Fluent UI und andere Bibliotheken aus dem Content Delivery Network (CDN) zur Laufzeit.

Installieren des Plug-Ins

Führen Sie den folgenden Installer-Befehl von GitHub Copilot CLI oder Claude Code aus. Das Installationsprogramm erkennt automatisch verfügbare Tools und installiert alle Power Platform-Plug-Ins, einschließlich generate-mcp-app-ui.

/plugin marketplace add microsoft/power-platform-skills

Um nur das MCP-App-Widget-Skill zu installieren:

/plugin install mcp-apps@power-platform-skills

Tipp

Aktivieren Sie die automatische Aktualisierung, um automatisch Qualifikationsupdates zu erhalten. Verwenden Sie den /plugin Befehl, navigieren Sie zu Marketplaces, wählen Sie den Marketplace aus, und aktivieren Sie die automatische Aktualisierung.

Übersicht über Fähigkeiten

Qualifikation Befehl Beschreibung
MCP-Apps-Widget-Generator /generate-mcp-app-ui Generieren eines eigenständigen MCP-App-Widgets (HTML-Datei) für die JSON-Ausgabe eines MCP-Tools

Die Fähigkeit wird auch durch Natürliche Sprachausdrücke wie "Erstellen eines Widgets", "Erstellen eines Widgets für mein Tool" oder "Erstellen einer MCP-App" ausgelöst.

Generieren eines Widgets

Führen Sie die folgenden Schritte aus, um ein neues Widget für ein MCP-Tool zu erstellen.

  1. Erstellen und testen Sie ein benutzerdefiniertes Tool mithilfe der modellgesteuerten App-Designer und kopieren Sie die vollständige JSON-Ausgabe. Stellen Sie sicher, dass der Ausgabetyp des Tools auf JSON festgelegt ist. Weitere Informationen: Erstellen von benutzerdefinierten Tools

  2. Rufen Sie die Fähigkeit auf, und beschreiben Sie, was Angezeigt werden soll, und fügen Sie die JSON-Ausgabe in die Unterhaltung ein:

    /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"}]}
    
  3. Überprüfen Sie die generierte HTML-Datei. Das Programm erstellt eine eigenständige HTML-Datei, zum Beispiel flight-map.html, in Ihrem Arbeitsverzeichnis.

  4. Vorschau in einem Browser. Öffnen Sie die HTML-Datei lokal, da das Widget die Fallbackoption zum Testen hat. Sie können den Chat-Agent bitten, eine eigenständige HTML-Vorschau hinzuzufügen, falls diese fehlt.

  5. Iterieren Beschreiben Sie alle Änderungen direkt im Chat:

    • "Vergrößern der Karte"
    • Tooltips zum Diagramm hinzufügen.
    • „Verringern der Höhe und Anpassen auf 250 Pixel mit responsivem Layout ohne Bildlaufleisten.“

Hinweis

Die Funktion erfordert tatsächliches JSON von Ihrem Tool – keine Beispiel- oder simulierte Daten. Die Datenstruktur steuert die Erstellung von Widgets. Wenn Sie simulierte Daten einfügen, funktioniert das generierte Widget möglicherweise nicht ordnungsgemäß, wenn es mit dem echten Tool verbunden ist.

Bereitstellen Ihres Widgets

Nachdem Ihr Widget fertig ist, kopieren Sie die HTML-Datei in die UX-Eingabe für das entsprechende Tool, und sie wird als UI-Antwort des Tools zurückgegeben. Ausführliche Informationen finden Sie in der Dokumentation zum Erstellen von benutzerdefinierten Tools .

Hinzufügen von Interaktivität mit callServerTool

Wenn Sie auch den Namen Ihres Tools angeben, wenn Sie die Fähigkeit aufrufen, kann das generierte Widget die interaktive Integration von Toolanrufen umfassen. Dadurch kann das Widget Ihr Tool zur Laufzeit erneut aufrufen. Beispielsweise kann eine Aktualisierungsschaltfläche im Tool UX sich selbst aufrufen.

/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":[...]}

Die Funktion wird im Widget unter app.callServerTool eingerichtet, sodass das Widget, wenn Benutzer Aktualisieren auswählen, die aktualisierten Daten direkt aus Ihrem Tool abruft. Wenn Sie keinen Tool-Namen angeben, ist das Widget schreibgeschützt und zeigt nur die Daten an, die über den ontoolresult-Rückruf übermittelt werden.

  • Microsoft 365 Copilot-Chat: Siehe MCP-Apps im Copilot-Chat für Bereitstellungspfade, einschließlich Querladen zum Testen, Bereitstellen über das Microsoft 365 Admin Center für die Organisationsverwendung und Veröffentlichung im Microsoft 365-Agent-Store.
  • Deklarative Agenten in Power Apps: Informationen dazu, wie Sie MCP-Tools mit modellgesteuerten Apps verbinden, finden Sie in der Dokumentation zu deklarativen Agenten in Power Apps MCP.
  • Weitere MCP-Hosts: Lesen Sie die Dokumentation Ihres Hosts für den MCP-App-Widget-Registrierungsprozess.

Technische Details des Widgets

MCP-Apps-Protokoll

Widgets kommunizieren mit dem Chathost mithilfe der App Klasse aus dem @modelcontextprotocol/ext-apps Paket. Das Protokoll verwaltet diese Rückrufe und Methoden.

Rückruf/Methode Beschreibung
app.ontoolresult Wird ausgelöst, wenn der Host Tooldaten liefert. Ihre Daten befinden sich immer bei result.structuredContent—nicht bei oder result.data selbst.
app.onhostcontextchanged Wird ausgelöst, wenn sich der Host-Kontext ändert, einschließlich des Themas (ctx.theme ist 'light' oder 'dark').
app.onteardown Wird ausgelöst, wenn das Widget aus der Unterhaltung entfernt wird.
app.connect() Richtet die Kommunikation mit dem Host ein. Alle Ereignishandler müssen vor dem Aufrufen connect()registriert werden.
app.getHostContext() Gibt den aktuellen Hostkontext (einschließlich des anfänglichen Designs) zurück, nachdem connect() abgeschlossen ist.
app.callServerTool({ name, arguments }) Ruft ein Tool interaktiv auf. Gibt zurück result.isError und result.structuredContent.

CDN-Importe

Widgets laden alle Abhängigkeiten von CDN. Es ist kein Buildschritt oder keine lokale Installation erforderlich. Abhängigkeiten liegen in zwei Formaten vor.

  • ECMAScript-Module (ESM) – importiert innerhalb <script type="module"> mit einer URL, die auf /+esm endet

  • Universal Module Definition (UMD) – über ein einfaches <script src>-Tag geladen; registriert sich als Nebeneffekt global

    Bibliothek Format URL Zweck
    @modelcontextprotocol/ext-apps ESM cdn.jsdelivr.net/npm/@modelcontextprotocol/ext-apps/+esm MCP-Apps-Klasse App
    @fluentui/tokens ESM cdn.jsdelivr.net/npm/@fluentui/tokens/+esm webLightTheme / webDarkTheme Tokensätze
    @fluentui/web-components@beta UMD unpkg.com/@fluentui/web-components@beta/dist/web-components.min.js Benutzerdefinierte Fluent UI-Elemente

Visueller Zustand

Jedes Widget behandelt drei Zustände:

Zustand Leitfaden
Wird geladen Zeigen Sie ein <fluent-spinner> mit einer kontextbezogenen Nachricht an ("Suche nach Sehenswürdigkeiten..." und nicht nur "Wird geladen...").
Geladen Rendern Sie den Inhalt kompakt. Verwenden Sie die vollständige verfügbare Breite.
Fehler Anzeigen einer freundlichen Nachricht und einer Schaltfläche "Erneut versuchen". Wenn das Widget callServerTool verwendet wird, ruft die Schaltfläche das Tool erneut auf.

Fluent UI-Komponenten

Die folgenden Fluent UI-Webkomponenten sind in Widgets verfügbar:

<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>

Theme-Unterstützung

Widgets unterstützen helle und dunkle Designs über Fluent UI-Designtoken. Das Widget wendet die richtigen Tokenwerte an, wenn sich das Design des Hosts über onhostcontextchangedändert. Verwenden Sie immer Tokenvariablen, var(--colorNeutralForeground1)z. B. anstelle hartcodierter Farbwerte, um das korrekte Rendering in beiden Designs sicherzustellen.

Farbtoken

Verwenden Token
Haupttext var(--colorNeutralForeground1)
Sekundärer Text var(--colorNeutralForeground2)
Primärer Hintergrund var(--colorNeutralBackground1)
Karten-/Hoverhintergrund var(--colorNeutralBackground2)
Marke/Akzent var(--colorBrandBackground)
Text auf der Markenoberfläche var(--colorNeutralForegroundOnBrand)
Ränder var(--colorNeutralStroke1)
Fehlertext var(--colorStatusDangerForeground1)
Erfolgstext var(--colorStatusSuccessForeground1)

Verwenden Sie niemals hartcodierte Hexadezimal- oder RGB-Werte. Erfinden Sie keine Tokennamen, die hier nicht aufgeführt sind.

Optimale Verfahren

  • Stellen Sie echte Testdaten bereit. Die Skill analysiert die tatsächliche JSON-Struktur, um das richtige Visual auszuwählen. Simulierte Daten erzeugen Widgets, die beim Herstellen einer Verbindung mit dem realen Tool brechen.
  • Seien Sie spezifisch beim Visuellen. Beschreiben Sie das gewünschte Format, z. B. Karte, Diagramm, Tabelle oder Kartenlayout. Vage Beschreibungen führen zu generischen Ergebnissen.
  • Beginnen Sie mit einer Ansicht. Widgets sind kompakte Unterhaltungskarten, nicht vollständige Anwendungen. Keine Registerkarten, Seitennavigation oder Suchleisten, die die Chateingabe duplizieren.
  • Testen Sie beide Themen. Zeigen Sie eine Vorschau im hellen und dunklen Modus an, um den Kontrast und die Lesbarkeit zu überprüfen.
  • Ordnen Sie das visuelle Element den Daten zu. Karten für Koordinaten, Diagramme für numerische oder Trenddaten, Karten für strukturierte Datensätze, Tabellen für Vergleiche.

Einschränkungen

  • Widgets müssen alle externen Bibliotheken aus CDN laden. Zur Laufzeit ist eine Internetverbindung erforderlich.
  • Der Vollbildanzeigemodus erfordert eine zusätzliche Implementierung, die über das hinausgeht, was die Fähigkeit generiert.
  • Die Fähigkeit behandelt keine MCP-Serverregistrierung oder -bereitstellung im Microsoft 365 Admin Center. Sie müssen diese Schritte separat ausführen.
  • Die Authentifizierung (OAuth 2.1, Microsoft Entra SSO) wird von der MCP-Hostumgebung behandelt, nicht von der Widget-HTML selbst.

Microsoft 365-Entwicklerdokumentation

Dokumentation zu Power Platform

Externe Referenzen