Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[Cette rubrique fait partie de la documentation en version préliminaire et peut faire l’objet de modifications.]
Cet article explique comment utiliser des outils de génération de code IA tels que GitHub Copilot CLI ou Claude Code pour générer des applications MCP (Interactive Model Context Protocol) pour vos outils POWERP pilotés par modèle. Les applications MCP sont des fichiers HTML autonomes qui affichent visuellement la sortie JSON d’un outil sous forme de cartes, de graphiques, de tableaux de bord ou de cartes à l’intérieur d’un hôte compatible MCP Apps, y compris Microsoft 365 Copilot, Claude et Visual Studio Code.
Si vous disposez d’un outil MCP qui retourne des données JSON, la generate-mcp-app-ui compétence peut produire un widget à thème poli qui affiche ces données dans un format visuel compact directement à l’intérieur d’une conversation de conversation.
Important
- Cette fonctionnalité est en version préliminaire.
- Les fonctionnalités en version préliminaire ne sont pas destinées à une utilisation en production et peuvent être restreintes. Ces fonctionnalités sont disponibles avant une version officielle afin que les clients puissent obtenir un accès anticipé et fournir des commentaires.
- La prise en charge des applications MCP dans Microsoft 365 Copilot Chat est généralement disponible à compter de mars 2026. La prise en charge des applications MCP dans les assistants déclaratifs par Power Apps est actuellement en version préliminaire publique. Pour obtenir l’annonce complète, consultez les applications MCP désormais disponibles dans Copilot Chat.
Ce que vous pouvez faire avec la compétence generate-mcp-app-ui
- Créez des widgets visuels pour n’importe quel outil MCP en décrivant ce que vous souhaitez et collez la sortie JSON de l’outil.
- Choisissez le visuel approprié pour vos données, tels que les graphiques pour les tendances numériques, les cartes pour les enregistrements structurés, les tables pour les comparaisons, les mappages pour les coordonnées, etc.
- Prise en charge automatique des thèmes clairs et sombres par le biais de jetons de conception Fluent UI.
- Ajoutez une interactivité pour que les widgets puissent appeler à nouveau votre outil au moment de l’exécution (par exemple, un bouton d’actualisation).
- Affinez l’expérience utilisateur de manière itérative en décrivant les changements en langage naturel. Par exemple, « rendre la galerie compacte », « ajouter un graphique » ou « utiliser une disposition de carte ».
Prerequisites
Configuration logicielle requise
| Composant | Version minimale | Plus d’informations |
|---|---|---|
| GitHub Copilot CLI, Claude Code ou un autre outil de génération de code | Latest | Claude Code, GitHub Copilot CLI |
| Un navigateur moderne | N’importe lequel | Pour afficher un aperçu local des widgets générés |
Autres conditions requises
- Outil MCP qui retourne la sortie JSON. Le type de sortie de votre outil doit être défini sur JSON.
- Connexion Internet opérationnelle. Les widgets chargent l’interface utilisateur Fluent et d’autres bibliothèques à partir du réseau de distribution de contenu (CDN) au moment de l’exécution.
Installer le plug-in
Exécutez la commande d’installation suivante à partir de GitHub Copilot CLI ou de Claude Code. Le programme d’installation détecte automatiquement les outils disponibles et installe tous les plug-ins Power Platform, notamment generate-mcp-app-ui.
/plugin marketplace add microsoft/power-platform-skills
Pour installer uniquement la fonctionnalité de widget de l'application MCP :
/plugin install mcp-apps@power-platform-skills
Conseil / Astuce
Activez la mise à jour automatique pour recevoir automatiquement les mises à jour des compétences. Utilisez la /plugin commande, accédez aux Marketplaces, choisissez la Place de marché et activez la mise à jour automatique.
Vue d’ensemble des compétences
| Qualification | Commande | Description |
|---|---|---|
| Générateur de widgets MCP Apps | /generate-mcp-app-ui |
Générer un widget d’application MCP autonome (fichier HTML) pour la sortie JSON d’un outil MCP |
La compétence est également déclenchée par des expressions en langage naturel telles que « créer un widget », « créer un widget pour mon outil » ou « créer une application MCP ».
Générer un widget
Suivez ces étapes pour créer un widget pour un outil MCP.
Créez et testez un outil personnalisé à partir de concepteurs d’applications basés sur des modèles et copiez la sortie JSON complète. Vérifiez que le type de sortie de l’outil est défini sur JSON. Plus d’informations : Créer des outils personnalisés
Appelez la compétence et décrivez ce que vous souhaitez afficher, en collant la sortie JSON dans la conversation :
/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"}]}Passez en revue le fichier HTML généré. La compétence écrit un fichier HTML autonome, par exemple,
flight-map.htmldans votre répertoire de travail.Aperçu dans un navigateur. Ouvrez le fichier HTML localement, car le widget a une option de secours pour les tests. Vous pouvez demander à l’agent de conversation d’ajouter une préversion HTML autonome si elle est manquante.
Itérer. Décrire les modifications directement dans la conversation :
- « Rendre la carte plus grande »
- « Ajouter des info-bulles sur le graphique »
- Réduire la hauteur pour s’adapter à 250 pixels avec une disposition réactive et sans barres de défilement.
Note
La compétence nécessite un JSON réel à partir de votre outil, pas d’exemples ou de données fictifs. La forme de données pilote la génération du widget. Si vous collez des données fictives, le widget généré peut ne pas fonctionner correctement lors de la connexion à l’outil réel.
Déployer votre widget
Une fois que votre widget est prêt, copiez le fichier HTML vers l'entrée UX prévue pour l'outil concerné et il sera restitué comme la réponse de l'interface utilisateur de l'outil. Pour plus d’informations, reportez-vous à la documentation de création d’outils personnalisés .
Ajouter une interactivité avec callServerTool
Si vous fournissez également le nom de votre outil lors de l’appel de la compétence, le widget généré peut inclure l’intégration interactive des appels d’outils. Cela permet au widget d’appeler à nouveau votre outil au moment de l’exécution. Par exemple, un bouton d’actualisation dans l’interface utilisateur de l’outil peut s’invoquer lui-même.
/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":[...]}
La fonctionnalité intègre le app.callServerTool dans le widget afin que lorsque les utilisateurs sélectionnent Actualiser, le widget récupère les données mises à jour directement depuis votre outil.
Si vous ne fournissez pas de nom d’outil, le widget est en lecture seule et affiche uniquement les données fournies via le ontoolresult rappel.
- Chat Microsoft 365 Copilot : consultez les applications MCP dans Copilot Chat pour explorer les chemins de déploiement, notamment le chargement latéral pour les tests, le déploiement via le centre d'administration Microsoft 365 pour une utilisation organisationnelle et la publication dans le magasin d'agents Microsoft 365.
- Agents déclaratifs Power Apps : consultez la documentation de l’agent déclaratif Power Apps MCP pour savoir comment connecter des outils MCP avec des applications basées sur des modèles.
- Autres hôtes MCP : consultez la documentation de votre hôte pour connaître le processus d’inscription du widget d’applications MCP.
Détails techniques du widget
Protocole d’applications MCP
Les widgets communiquent avec l’hôte de conversation à l’aide de la App classe à partir du @modelcontextprotocol/ext-apps package. Le protocole gère ces rappels et méthodes.
| Rappel/méthode | Description |
|---|---|
app.ontoolresult |
Se déclenche lorsque l’hôte fournit des données d’outil.
Vos données sont toujours à l’adresse result.structuredContent— pas result.data ou result lui-même. |
app.onhostcontextchanged |
Se déclenche lorsque le contexte de l’hôte change, y compris le thème (ctx.theme est 'light' ou 'dark'). |
app.onteardown |
Se déclenche lorsque le widget est supprimé de la conversation. |
app.connect() |
Établit la communication avec l’hôte. Tous les gestionnaires d’événements doivent être inscrits avant d’appeler connect(). |
app.getHostContext() |
Retourne le contexte hôte actuel (y compris le thème initial) une fois connect() terminé. |
app.callServerTool({ name, arguments }) |
Appelle un outil de manière interactive. Renvoie result.isError et result.structuredContent. |
Importations de CDN
Les widgets chargent toutes les dépendances à partir du CDN. Aucune étape de génération ou installation locale n’est requise. Les dépendances existent en deux formats :
Modules ECMAScript (ESM) : importés à l’intérieur à l’aide
<script type="module">d’une URL se terminant par/+esmUniversal Module Definition (UMD) : chargé via une balise simple
<script src>; s’inscrit globalement en tant qu’effet secondaireBibliothèque Formats URL Objectif @modelcontextprotocol/ext-appsESM cdn.jsdelivr.net/npm/@modelcontextprotocol/ext-apps/+esmClasse d’applications MCP App@fluentui/tokensESM cdn.jsdelivr.net/npm/@fluentui/tokens/+esmJeux de jetons webLightTheme/webDarkTheme@fluentui/web-components@betaUMD unpkg.com/@fluentui/web-components@beta/dist/web-components.min.jsÉléments personnalisés Fluent UI
États visuels
Chaque widget gère trois états :
| État | Conseils |
|---|---|
| Chargement en cours | Afficher un message contextuel <fluent-spinner> (« Recherche d’attractions... », et pas seulement « Chargement... »). |
| Chargé | Affichez le contenu de manière compacte. Utilisez la largeur disponible complète. |
| Erreur | Affichez un message convivial et un bouton « Réessayer ». Si le widget utilise callServerTool, le bouton appelle à nouveau l’outil. |
Composants Fluent UI
Les composants web Fluent UI suivants sont disponibles dans les 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>
Prise en charge du thème
Les widgets prennent en charge les thèmes clairs et sombres par le biais de jetons de conception Fluent UI. Le widget applique les valeurs de jeton correctes lorsque le thème de l’hôte change via onhostcontextchanged. Utilisez toujours des variables de jeton, par exemple, var(--colorNeutralForeground1)plutôt que des valeurs de couleur codées en dur pour garantir un rendu correct dans les deux thèmes.
Jetons de couleur
| Utiliser | Jeton |
|---|---|
| Texte principal | var(--colorNeutralForeground1) |
| Texte secondaire | var(--colorNeutralForeground2) |
| Arrière-plan principal | var(--colorNeutralBackground1) |
| Arrière-plan de la carte (au survol) | var(--colorNeutralBackground2) |
| Marque/couleurs d’accent | var(--colorBrandBackground) |
| Texte sur la surface de marque | var(--colorNeutralForegroundOnBrand) |
| Bordures | var(--colorNeutralStroke1) |
| Texte d’erreur | var(--colorStatusDangerForeground1) |
| Texte de réussite | var(--colorStatusSuccessForeground1) |
N’utilisez jamais de valeurs hexidecimal ou RVB codées en dur. N’inventez pas de noms de jetons non répertoriés ici.
Meilleures pratiques
- Fournissez des données de test réelles. La compétence analyse la structure JSON réelle pour sélectionner le visuel approprié. Les données fictives produisent des widgets qui s’arrêtent lorsqu’ils sont connectés à l’outil réel.
- Soyez précis concernant le visuel. Décrivez le format souhaité, tel que la carte, le graphique, la table ou la disposition de carte. Les descriptions vagues mènent à des résultats génériques.
- Commencez par une vue. Les widgets sont des cartes de conversation compactes, pas des applications complètes. Aucun onglet, navigation sur la page ou barre de recherche qui dupliquent le champ de saisie.
- Testez avec les deux thèmes. Aperçu en mode clair et sombre pour vérifier le contraste et la lisibilité.
- Mettre en correspondance le visuel aux données. Cartes pour les coordonnées, les graphiques pour les données numériques ou de tendance, les cartes pour les enregistrements structurés, les tables pour les comparaisons.
Limites
- Les widgets doivent charger toutes les bibliothèques externes à partir du CDN. Une connexion Internet est requise au moment de l’exécution.
- Le mode d’affichage plein écran nécessite une implémentation supplémentaire au-delà de ce que la compétence génère.
- La compétence ne gère pas l’inscription ou le déploiement du serveur MCP dans le Centre d’administration Microsoft 365. Vous devez effectuer ces étapes séparément.
- L’authentification (OAuth 2.1, Microsoft Entra SSO) est gérée par l’environnement hôte MCP, et non par le code HTML du widget lui-même.
Documentation connexe
Documentation du développeur Microsoft 365
Documentation de Power Platform
- Créer et modifier des pages génératives avec des outils de génération de code IA
- Référence CLI de Power Platform