MCP-Server
Der Power Portals Pro MCP-Server gibt KI-Programmierassistenten beim Bau direktes Wissen über dieses Framework. Es handelt sich um einen Model Context Protocol-Server , der mit dem Framework ausgeliefert wird, und es gibt keinen Lizenzschlüssel und nichts, wofür man sich anmelden müsste.
Warum es existiert
Zwei Dinge, die ein Agent allein aus der Dokumentation nicht bekommen kann, und beide verursachen fehlerhaften Code:
- Die API-Oberfläche ist zu groß, um sie sich merken zu können. Mehrere hundert Komponenten über beide Stacks verteilt, jeder mit Dutzenden von Parametern. Ein Agent, der sich einen Parameternamen halb merkt, schreibt etwas Plausibles, das nicht kompiliert wird – oder schlimmer noch, kompiliert und nichts tut.
- Dein Dataverse befindet sich in keinem Dokument. Tabellen- und Spalten-logische Namen, Beziehungsschemanamen, Optionsset-Werte und – vor allem – gespeicherte View-GUIDs existieren nur in deiner Umgebung. Jedes Codebeispiel auf dieser Seite schreibt eine View-ID als Ellipse, weil es sonst nichts anderes schreiben könnte.
Was es beantwortet
- Das Framework – die vollständige Parameter- und Prop-Referenz für jede Komponente auf beiden Stacks mit Typen, Standardwerten und erlaubten Werten; vollständige Arbeitsproben, wortwörtlich von dieser Seite entnommen; die Guides; die Konventionen aus
AGENTS.md; und die Blazor-to-React-Paritätsmatrix. Sie ist versionsangepasst an die von Ihnen installierten Pakete. - Ihre Umgebung, schreibgeschützt – die Tabellen und Spalten, die Sie tatsächlich haben, welchen Editor jede Spalte zugeordnet ist, Beziehungsnamen, Optionsset-Werte und Ihre gespeicherten Ansichten mit ihren echten GUIDs.
Anmerkung
Jedes Dataverse-Tool liest Metadaten. Keines von ihnen liest, schreibt oder löscht einen Datensatz, daher ermöglicht es einem Agenten, einen Agenten auf eine Produktionsumgebung zu zeigen, die Form Ihrer Daten zu erkennen, ohne sie berühren zu können.
Hinzufügen zu einem Projekt
Zwei Orte, an denen es leben kann
Hier gibt es ein Henne-Ei-Problem, das es wert ist, explizit zu sein. Die Vorlagen schreiben die Konfiguration in das von ihnen erstellte Projekt ein – aber der Server ist am nützlichsten, bevor dieses Projekt existiert, wenn man eine Vorlage und ihre Optionen auswählt. Installiere sie also einmal für dich selbst und lass die jeweilige Projektdatei übernehmen.
Einmal pro Maschine, für jeden Ordner
Dadurch ist der Server überall verfügbar, auch in einem leeren Ordner, in den du gleich einbauen willst. Er kann dann antworten, welche Vorlage verwendet werden soll, welche Optionen es bedeuten und was danach konfiguriert werden soll. Absichtlich entpinnt, damit er die neueste Version verfolgt:
claude mcp add --scope user powerportalspro -- dnx PowerPortalsPro.Mcp --yes
Visual Studio liest eine Benutzerebene .mcp.json aus deinem Profilordner, Cursor verwendet ~/.cursor/mcp.json, und VS Code hat in seinen Einstellungen eine benutzerdefinierte MCP-Konfiguration. Jeder nimmt denselben servers Block.
Pro Projekt, an seine Version angepinnt
Projekte, die aus den Power Portals Pro-Vorlagen erstellt wurden, sind bereits verkabelt: Die Vorlage schreibt eine .mcp.json an der Lösungswurzel, die an die passende Serverversion gepinnt ist. Es gibt nichts zu tun.
Um sie zu einem bestehenden Projekt hinzuzufügen, erstelle diese Datei selbst am Kern deiner Lösung:
{
"servers": {
"powerportalspro": {
"type": "stdio",
"command": "dnx",
"args": [ "PowerPortalsPro.Mcp", "--yes" ]
}
}
}
Welche Datei dein Redakteur liest
Visual Studio 2022 17.14+ und Visual Studio 2026 lesen
.mcp.jsonaus dem Solution-Ordner, ebenso wie Claude Code. VS Code liest.vscode/mcp.jsonund Cursor liest.cursor/mcp.json– beide verwenden denselbenserversBlock, also kopieren Sie ihn quer.
dnx Wird mit dem .NET 10 SDK ausgeliefert, das Sie bereits besitzen: Jedes Power Portals Pro-Projekt wird von ASP.NET Core gehostet, inklusive React SPAs. Der erste Durchlauf lädt das Paket herunter und cacht.
Beide Einträge sind die vorgesehene Einrichtung. Die beiden Einträge verwenden denselben Servernamen, sodass ein Client, der beide Scopes versteht, die des Projekts verwendet – das heißt, du bekommst die versionsabgestimmten Antworten innerhalb eines Projekts und die neuesten überall sonst.
Ich prüfe, ob es funktioniert
Frag deinen Assistenten etwas, das nur der Server beantworten kann – zum Beispiel: "Benutze get_component_api, um mir alle Parameter auf MainGrid zu zeigen". Wenn das Tool nicht verfügbar ist, hat der Client die Konfigurationsdatei nicht übernommen; die meisten benötigen einen Neustart, nachdem sie hinzugefügt wurde.
Verbindung zu Dataverse
Die Dokumentationstools benötigen überhaupt keine Konfiguration. Die Metadaten-Tools benötigen eine Verbindung zu deiner Umgebung, und diese Verbindung gehört zum Ordner, nicht zur Maschine. Führe dies einmal im Projekt aus:
dnx PowerPortalsPro.Mcp login
Eine Umgebung pro Ordner
Das bindet diesen Ordner an eine Umgebung. Wenn Sie über mehrere Kunden hinweg arbeiten, bleibt jedes Projekt in seiner eigenen Umgebung angemeldet und Agenten in verschiedenen Ordnern wechseln sich nie. Das ist das Einzige, was pac auth select nicht möglich ist – es wechselt ein einziges, maschinenweites Profil, sodass ein Kundenwechsel an einem Ort das überall ändert.
Die Anmeldung verwendet standardmäßig den Gerätecode-Flow, also funktioniert es über SSH, innerhalb eines Containers und in WSL, und du kannst es auf einem Handy beenden. Lehn ab, --browser wenn du lieber einen öffnen möchtest.
Wo Dinge gelagert werden
- Die Bindung –
.ppp/mcp.jsonim Ordner. Sie benennen die Umgebung und das Konto, birgt keine Geheimnisse und ist sicher zu committen: Ein Teamkollege, der das Repository klont, wird unbemerkt auf die richtige Umgebung verwiesen. - Ihr Token — wird in Ihrem Benutzerprofil gespeichert und vom Betriebssystem-Keystore verschlüsselt (DPAPI unter Windows, Keychain auf macOS, libsecret unter Linux). Es wird niemals in das Repository geschrieben. Wenn kein Keystore verfügbar ist, weigert sich die Anmeldung, anstatt ein Aktualisierungstoken auf der Festplatte frei zu lassen.
Der Token-Cache wird von der Umgebung verschlüsselt, sodass ein zweiter Klon desselben Kunden-Repositorys Sie nicht erneut zur Anmeldung auffordert, während ein anderer Kunde dies immer tut.
Kommandos
All diese wirken auf dem aktuellen Ordner, es sei denn, du bestehst --workspace.
login— sich anmelden und diesen Ordner an eine Umgebung binden. Optionen:--environment <url>,--pac-profile <name>,--username <upn>,--tenant <id>,--browser.status– in welcher Umgebung dieser Ordner verwendet wird, woher er stammt, welches Konto zwischengespeichert ist und ob die Verbindung funktioniert.logout— den Ordner entbinden. Hinzufügen--forget, um die gespeicherte Anmeldung zu entfernen.environments— listen Sie die Power Platform CLI-Profile auf, die gespiegelt werden können.
Weitere Verbindungsmöglichkeiten
Die Umgebung und die Zugangsdaten werden in dieser Reihenfolge aufgelöst, sodass die expliziteste Absichtserklärung gewinnt:
- Umgebungsvariablen —
PPP_D365_URL,PPP_D365_CLIENT_IDundPPP_D365_CLIENT_SECRETim Serverblockenv. Ein Service Principal und die Möglichkeit, dies in CI oder einem gemeinsamen Container zu verdrahten. - Die Anmeldung des Ordners – geschrieben von
login. Der normale Pfad. - Die eigenen Einstellungen des Projekts – dieselben
D365:Url,D365:ClientIdundD365:ClientSecret(oderD365:Secret) das Portal selbst liest aus Benutzergeheimnissen undappsettings. Ein konfiguriertes Power Portals Pro-Projekt benötigt daher oft gar keine Anmeldung.
Power Platform CLI-Profile
Wenn du bereits Umgebungen in pacbehältst, kannst du von einer beginnen, anstatt nach einer URL zu suchen:
dnx PowerPortalsPro.Mcp environments
dnx PowerPortalsPro.Mcp login --pac-profile "Acme Dev"
Die CLI hat keinen Befehl, der ein Zugriffstoken ausgibt, und speichert Zugangsdaten in ihrem eigenen Store, sodass ihre Sitzung nicht direkt wiederverwendet werden kann. Was --pac-profile das tut, ist, die Umgebung und das Konto aus einem Profil zu nehmen und sich als dieses Konto anzumelden – meist ohne Aufforderung, weil du bereits eine Sitzung hast.
Anmerkung
Das eigene aktive Profil der CLI wird nie geändert.
pac auth selectwird absichtlich nicht verwendet: Es würde jedes Projekt gleichzeitig verschieben.
Die Werkzeuge
Man muss selten ein Werkzeug benennen – die Assistenten wählen es aus den Beschreibungen – aber es hilft zu wissen, was dort ist.
Dokumentation, immer verfügbar
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
Deine Umgebung, einmal verbunden
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
Ein neues Projekt zum Laufen bringen
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
Arbeit in anderen Sprachen
Das Wissen, das der Server zurückgibt, ist Englisch, und das ist absichtlich. Dein Assistent liest es – du siehst nie direkt eine Antwort des Tools – also übersetzt es für dich: Frag in deiner eigenen Sprache, und es antwortet in deiner eigenen Sprache. Was es nicht übersetzen darf, ist der Code. Komponenten-, Parameter- und Spaltennamen sind in jedem Projekt auf Englisch, egal in welcher Sprache das Gespräch stattfindet, daher verhindert das Beibehalten des Referenzenglischen dafür, dass ein Assistent einen übersetzten Parameternamen erfindet, der nicht existiert.
Anmerkung
Fragen, die etwas benennen —
“MainGrid Ansichten konfigurieren”— funktionieren bereits in jeder Sprache, weil Komponentennamen überall gleich sind. Die Tools sagen Ihrem Assistenten auch, er soll auf Englisch suchen, daher funktionieren auch Fragen, die nichts benennen.
Fehlerbehebung
- "Keine Dataverse-Umgebung ist an diesen Projektordner gebunden" – führe
loginin diesem Ordner aus. Überprüfe, dass du dich in dem Ordner befindest, von dem du glaubst, dass du dich befindest:statusDruckt die Wurzel des Arbeitsbereichs, es wurde gelöst. - "Die gespeicherte Anmeldung ist nicht mehr gültig" – das Aktualisierungstoken ist abgelaufen oder wurde widerrufen, oder der Tenant benötigt nun eine neue Interaktion. Führen Sie erneut aus
login. - "Der Betriebssystem-Schlüsselspeicher ist nicht verfügbar" – üblich auf einer headless Linux-Box ohne libsecret-Daemon. Verwenden Sie dort stattdessen einen Service Principal über die
PPP_D365_*Umgebungsvariablen. - Eingeloggt, aber die Umgebung lehnt die Verbindung ab – das Konto hat sich authentifiziert, hat aber keinen Zugriff auf diese Umgebung. Überprüfen Sie die URL oder melden Sie sich als anderer Benutzer mit
--usernamean.
