Serveur MCP
Le serveur Power Portals Pro MCP donne aux assistants de codage IA une connaissance directe de ce framework pendant la construction. C’est un serveur Model Context Protocol , il est livré avec le framework, et il n’y a pas de clé de licence ni de quoi s’inscrire.
Pourquoi il existe
Deux choses qu’un agent ne peut pas obtenir uniquement avec la documentation, et les deux provoquent un code cassé :
- La surface de l’API est trop grande pour s’en souvenir. Plusieurs centaines de composants répartis sur les deux piles, chacune avec des dizaines de paramètres. Un agent qui se souvient à moitié d’un nom de paramètre écrit quelque chose de plausible qui ne compile pas — ou pire, compile sans rien faire.
- Votre Dataverse n’est dans aucun document. Les noms logiques des tables et colonnes, les noms des schémas de relations, les valeurs d’ensemble d’options et — surtout — les GUID de vue sauvegardée existent uniquement dans votre environnement. Chaque exemple de code sur ce site écrit un identifiant de vue sous forme d’ellipsie, car il n’y a rien d’autre qu’il puisse écrire.
Ce qu’il répond
- Le framework — la référence complète des paramètres et des props pour chaque composant sur les deux piles avec types, valeurs par défaut et permis ; des échantillons complets prélevés mot pour mot sur ce site ; les guides ; les conventions de
AGENTS.md; et la matrice de parité Blazor-to-React. Il est adapté en version aux packages que vous avez installés. - Votre environnement, lecture seule — les tables et colonnes que vous avez réellement, à quel éditeur chaque colonne correspond, les noms de relations, les valeurs de l’ensemble d’options, et vos vues sauvegardées avec leurs vrais GUID.
Note
Tous les outils Dataverse lisent les métadonnées. Aucun d’eux ne lit, écrit ou supprime un enregistrement, donc pointer un agent vers un environnement de production lui permet d’apprendre la forme de vos données sans pouvoir y toucher.
L’ajouter à un projet
Deux endroits où il peut vivre
Il y a ici un jeu de la poule et de l’œuf qui mérite d’être explicite. Les modèles écrivent la configuration dans le projet qu’ils créent — mais le serveur est à son meilleur niveau avant que ce projet n’existe, lorsque vous choisissez un modèle et ses options. Installez-le donc une fois pour vous-même, et laissez le fichier par projet prendre le relais.
Une fois par machine, pour n’importe quel dossier
Cela rend le serveur accessible partout, y compris dans un dossier vide dans lequel vous allez vous installer. Il peut alors répondre à quel modèle utiliser, ce que signifient les options, et ce qu’il faut configurer ensuite. Délibérément déconnecté, pour suivre la dernière version :
claude mcp add --scope user powerportalspro -- dnx PowerPortalsPro.Mcp --yes
Visual Studio lit un fichier utilisateur .mcp.json depuis votre dossier de profil, Cursor utilise ~/.cursor/mcp.json, et VS Code a une configuration MCP au niveau utilisateur dans ses paramètres. Chacun prend le même servers bloc.
Par projet, épinglé à sa version
Les projets créés à partir des modèles Power Portals Pro sont déjà câblés : le modèle écrit a .mcp.json à la racine de la solution, épinglé à la version serveur correspondante. Il n’y a rien à faire.
Pour l’ajouter à un projet existant, créez vous-même ce fichier à la racine de votre solution :
{
"servers": {
"powerportalspro": {
"type": "stdio",
"command": "dnx",
"args": [ "PowerPortalsPro.Mcp", "--yes" ]
}
}
}
Quel fichier lit votre éditeur
Visual Studio 2022 17.14+ et Visual Studio 2026 lisent
.mcp.jsondepuis le dossier solution, tout comme Claude Code. VS Code lit.vscode/mcp.jsonet Cursor.cursor/mcp.jsonlit — les deux utilisent le mêmeserversbloc, donc copiez-le d’un côté à l’autre.
dnx est livré avec le SDK .NET 10, que vous avez déjà : chaque projet Power Portals Pro est hébergé par ASP.NET Core, React SPA inclus. La première exécution télécharge le paquet et le met en cache.
Avoir les deux est la configuration prévue. Les deux entrées utilisent le même nom de serveur, donc un client qui comprend les deux portées utilise celles du projet — ce qui signifie que vous obtenez les réponses correspondantes à la version à l’intérieur d’un projet, et les dernières réponses ailleurs.
Vérifier que ça fonctionne
Demandez à votre assistant quelque chose auquel seul le serveur peut répondre — par exemple « utilisez get_component_api pour m’afficher tous les paramètres sur MainGrid ». Si l’outil n’est pas disponible, le client n’a pas détecté le fichier de configuration ; la plupart ont besoin d’un redémarrage après son ajoute.
Connexion à Dataverse
Les outils de documentation n’ont besoin d’aucune configuration. Les outils de métadonnées ont besoin d’une connexion à votre environnement, et cette connexion appartient au dossier, pas à la machine. Exécutez ceci une fois dans le projet :
dnx PowerPortalsPro.Mcp login
Un environnement par dossier
Cela lie ce dossier à un seul environnement. Si vous travaillez avec plusieurs clients, chaque projet reste connecté à son propre environnement et les agents dans différents dossiers ne se recroisent jamais. C’est la seule chose pac auth select impossible — cela change un seul profil à l’échelle de la machine, donc changer de client en un seul endroit le modifie partout.
La connexion utilise par défaut le flux de code de l’appareil, donc ça fonctionne via SSH, à l’intérieur d’un conteneur et en WSL, et tu peux le finir sur un téléphone. Passe --browser si tu préfères en ouvrir un.
Où les objets sont stockés
- La liaison —
.ppp/mcp.jsondans le dossier. Elle nomme l’environnement et le compte, ne contient aucun secret, et est sûre à engager : un coéquipier qui clone le dépôt est dirigé vers le bon environnement sans qu’on le lui dise. - Votre jeton — conservé dans votre profil utilisateur et chiffré par le keystore du système d’exploitation (DPAPI sous Windows, Keychain sur macOS, libsecret sous Linux). Il n’est jamais écrit dans le dépôt. Si aucun keystore n’est disponible, la connexion refuse plutôt que de laisser un token de rafraîchissement sur le disque en clair.
Le cache de jetons est codé par environnement, donc un second clone du dépôt du même client ne vous demande pas de vous reconnecter, alors qu’un autre client le fait toujours.
Commandements
Tous ces éléments agissent sur le dossier courant sauf si vous réussissez --workspace.
login— se connecter et lier ce dossier à un environnement. Options :--environment <url>,--pac-profile <name>,--username <upn>,--tenant <id>,--browser.status— quel environnement utilise ce dossier, d’où il vient, quel compte est mis en cache, et si la connexion fonctionne.logout— délier le dossier. Ajouter--forgetpour supprimer la connexion sauvegardée également.environments— lister les profils CLI Power Platform disponibles en miroir.
Autres façons de se connecter
L’environnement et les identifiants sont réglés dans cet ordre, de sorte que la déclaration d’intention la plus explicite l’emporte :
- Variables d’environnement —
PPP_D365_URL,PPP_D365_CLIENT_IDetPPP_D365_CLIENT_SECRETdans le bloc du serveurenv. Un principal de service, et la façon de le câbler dans CI ou un conteneur partagé. - La connexion du dossier — écrite par
login. Le chemin normal. - Les paramètres propres au projet — les mêmes
D365:Url,D365:ClientIdetD365:ClientSecret(ouD365:Secret) le portail lui-même lit à partir des secrets utilisateur etappsettings. Un projet Power Portals Pro configuré n’a donc souvent besoin d’aucune connexion.
Profils CLI Power Platform
Si vous gardez déjà des environnements dans pac, vous pouvez partir d’un au lieu de chercher une URL :
dnx PowerPortalsPro.Mcp environments
dnx PowerPortalsPro.Mcp login --pac-profile "Acme Dev"
La CLI n’a pas de commande qui délivre un jeton d’accès, et elle conserve les identifiants dans son propre magasin, donc sa session ne peut pas être réutilisée directement. Ce qui --pac-profile le fait, c’est prendre l’environnement et le compte d’un profil et se connecter en tant que compte — généralement sans qu’on le demande, car vous avez déjà une session.
Note
Le profil actif propre de la CLI n’est jamais modifié.
pac auth selectest délibérément interdit : il déplacerait chaque projet en même temps.
Les outils
Il est rare de nommer un outil — les assistants les choisissent dans les descriptions — mais il est utile de savoir ce qui s’y trouve.
Documentation, toujours disponible
search_docs Open questions across the guides, API reference and samples
get_doc One documentation section in full
get_component_api Every parameter or prop, with types, defaults and permitted values
get_example A complete working sample, verbatim
get_page_recipe Guide, both stacks' samples and API links for one topic
list_components Browse what the framework ships
find_parity Whether a component exists on the other stack
get_conventions The golden rules from AGENTS.md
whats_new Release notes
Votre environnement, une fois connecté
list_tables Find a table's logical name
describe_table Columns, and the editor each one maps to
list_views Saved views with their real GUIDs
list_relationships Schema names for SubGrid and ManyToManyLookupEdit
list_choices Option-set values and labels
dataverse_status Which environment this folder uses, and whether it connects
Lancer un nouveau projet
get_setup_plan The steps to a running portal, and what each one needs
get_setup_script A reviewable script that performs them, with your values filled in
check_setup What this folder still needs before the portal will start
Travailler dans d’autres langues
La connaissance que le serveur retourne est en anglais, et c’est délibéré. C’est votre assistant qui la lit — vous ne voyez jamais une réponse d’outil directement — donc elle traduit pour vous : demandez dans votre propre langue, et elle répond dans votre propre langue. Ce qu’il ne doit pas traduire, c’est le code. Les noms des composants, paramètres et colonnes sont en anglais dans chaque projet, quelle que soit la langue de la conversation, donc garder la référence en anglais empêche un assistant d’inventer un nom de paramètre traduit qui n’existe pas.
Note
Les questions qui nomment quelque chose
“MainGrid Ansichten konfigurieren”— fonctionnent déjà dans n’importe quelle langue, car les noms des composants sont identiques partout. Les outils indiquent aussi à votre assistant de chercher en anglais, donc les questions qui ne nomment rien fonctionnent aussi.
Dépannage
- « Aucun environnement Dataverse n’est lié à ce dossier projet » — exécute
logindans ce dossier. Vérifie que tu es dans le dossier que tu penses être :statusimprime la racine de l’espace de travail qu’il a résolue. - « La connexion enregistrée n’est plus valide » — le jeton de rafraîchissement a expiré ou a été révoqué, ou le locataire nécessite désormais une nouvelle interaction. Relancez.
login - « Le magasin de clés du système d’exploitation n’est pas disponible » — courant sur un boîtier Linux sans interface sans démon libsecret. Utilisez un principal de service à cet endroit, via les variables d’environnement
PPP_D365_*. - Connecté, mais l’environnement rejette la connexion — le compte est authentifié mais n’a pas accès à cet environnement. Vérifie l’URL, ou connecte-toi en tant qu’utilisateur différent avec
--username.
