Servidor MCP
El servidor Power Portals Pro MCP proporciona a los asistentes de programación de IA conocimiento directo de este framework mientras construyes. Es un servidor Model Context Protocol , viene con el framework y no hay clave de licencia ni nada a lo que suscribirse.
Por qué existe
Dos cosas que un agente no puede obtener solo con la documentación, y ambas causan código roto:
- La superficie de la API es demasiado grande para recordarla. Varios cientos de componentes en ambas pilas, cada uno con decenas de parámetros. Un agente que recuerda a medias un nombre de parámetro escribe algo plausible que no compila — o peor aún, compila y no hace nada.
- Tu Dataverse no está en ningún documento. Nombres lógicos de tablas y columnas, nombres de esquemas de relaciones, valores de conjunto de opciones y — sobre todo — GUIDs de vista guardadas existen solo en tu entorno. Cada ejemplo de código en este sitio escribe un id de vista como una elipsis, porque no hay nada más que pueda escribir.
Lo que responde
- El framework — el parámetro completo y la referencia de prop para cada componente en ambas pilas con tipos, valores por defecto y permitidos; muestras completas de trabajo tomadas literalmente de este sitio; las guías; las convenciones de
AGENTS.md; y la matriz de paridad Blazor-a-React. Está adaptada a los paquetes que tienes instalados. - Tu entorno, solo lectura — las tablas y columnas que realmente tienes, a qué editor se asigna cada columna, nombres de relaciones, valores del conjunto de opciones y tus vistas guardadas con sus GUIDs reales.
Nota
Todas las herramientas de Dataverse leen metadatos. Ninguna lee, escribe o borra un registro, así que apuntar a un agente a un entorno de producción le permite aprender la forma de tus datos sin poder tocarlos.
Añadirlo a un proyecto
Dos lugares donde puede vivir
Aquí hay un huevo y la gallina que merece la pena ser explícito. Las plantillas escriben la configuración en el proyecto que crean, pero el servidor es más útil antes de que ese proyecto exista, cuando eliges una plantilla y sus opciones. Así que instálala una vez para ti y deja que el archivo por proyecto tome el control a partir de ahí.
Una vez por máquina, para cualquier carpeta
Esto hace que el servidor esté disponible en todas partes, incluyendo una carpeta vacía en la que vas a andamiar. Luego puede responder qué plantilla usar, qué significan las opciones y qué configurar después. Deliberadamente desfijado, para que registre la última versión:
claude mcp add --scope user powerportalspro -- dnx PowerPortalsPro.Mcp --yes
Visual Studio lee un nivel .mcp.json de usuario desde tu carpeta de perfil, Cursor usa ~/.cursor/mcp.json, y VS Code tiene una configuración MCP a nivel de usuario en sus configuraciones. Cada uno ocupa el mismo servers bloque.
Por proyecto, fijado a su versión
Los proyectos creados a partir de las plantillas Power Portals Pro ya están conectados por cable: la plantilla escribe a .mcp.json en la raíz de la solución, fijada a la versión correspondiente del servidor. No hay nada que hacer.
Para añadirlo a un proyecto existente, crea ese archivo tú mismo en la raíz de tu solución:
{
"servers": {
"powerportalspro": {
"type": "stdio",
"command": "dnx",
"args": [ "PowerPortalsPro.Mcp", "--yes" ]
}
}
}
¿Qué archivo lee tu editor?
Visual Studio 2022 17.14+ y Visual Studio 2026 leen
.mcp.jsondesde la carpeta de la solución, y Claude Code también. VS Code lee.vscode/mcp.jsony Cursor.cursor/mcp.jsonlee — ambos usan el mismoserversbloque, así que cópialo a otro.
dnx viene con el SDK .NET 10, que ya tienes: todos los proyectos Power Portals Pro están alojados por ASP.NET Core, incluyendo React SPAs. La primera partida descarga el paquete y lo almacena en caché.
Tener ambos es la configuración prevista. Las dos entradas usan el mismo nombre de servidor, así que un cliente que entiende ambos ámbitos usa el del proyecto — lo que significa que obtienes las respuestas con versiones dentro de un proyecto y las más recientes en cualquier otro lugar.
Comprobar que funciona
Pregunta a tu asistente algo que solo el servidor pueda responder — por ejemplo: "usa get_component_api para mostrarme todos los parámetros en MainGrid". Si la herramienta no está disponible, el cliente no ha detectado el archivo de configuración; la mayoría necesita reiniciar después de añadirlo.
Conexión a Dataverse
Las herramientas de documentación no necesitan ninguna configuración. Las herramientas de metadatos necesitan una conexión con tu entorno, y esa conexión pertenece a la carpeta, no a la máquina. Ejecuta esto una vez en el proyecto:
dnx PowerPortalsPro.Mcp login
Un entorno por carpeta
Eso vincula esta carpeta a un solo entorno. Si trabajas con varios clientes, cada proyecto permanece conectado a su propio entorno y los agentes en diferentes carpetas nunca se cruzan. Esto es lo único que pac auth select no se puede hacer: cambia un único perfil de toda la máquina, así que cambiar de cliente en un solo lugar lo cambia en todas partes.
El inicio de sesión utiliza por defecto el flujo de código del dispositivo, así que funciona por SSH, dentro de un contenedor y en WSL, y puedes terminarlo en un teléfono. Paso --browser si prefieres abrir uno.
Dónde se almacenan las cosas
- La vinculación —
.ppp/mcp.jsonen la carpeta. Nombra el entorno y la cuenta, no guarda secretos y es seguro de comprometer: un compañero que clona el repositorio se dirige al entorno correcto sin que se lo digan. - Tu token — guardado en tu perfil de usuario y cifrado por la tienda de claves del sistema operativo (DPAPI en Windows, Keychain en macOS, libsecret en Linux). Nunca se escribe en el repositorio. Si no hay una tienda de claves disponible, la entrada se niega en lugar de dejar un token de refresco en disco en la pantalla limpia.
La caché de tokens está codificada por el entorno, así que un segundo clon del repositorio del mismo cliente no te pide que inicies sesión de nuevo, mientras que un cliente diferente siempre lo hace.
Mandos
Todos estos actúan sobre la carpeta actual a menos que apruebes --workspace.
login— iniciar sesión y vincular esta carpeta a un entorno. Opciones:--environment <url>,--pac-profile <name>,--username <upn>,--tenant <id>,--browser.status— qué entorno utiliza esta carpeta, de dónde proviene, qué cuenta está almacenada en caché y si la conexión funciona.logout— desvincular la carpeta. Añadir--forgetpara eliminar también el inicio de sesión guardado.environments— enumera los perfiles de la CLI de Power Platform disponibles para espejar.
Otras formas de conectar
El entorno y las credenciales se resuelven en este orden, por lo que la declaración de intenciones más explícita gana:
- Variables de entorno —
PPP_D365_URL,PPP_D365_CLIENT_IDyPPP_D365_CLIENT_SECRETen el bloque delenvservidor. Un principal de servicio, y la forma de conectarlo en CI o en un contenedor compartido. - El inicio de sesión de la carpeta — escrito por
login. La ruta normal. - Los propios ajustes del proyecto — los mismos
D365:Url,D365:ClientIdyD365:ClientSecret(oD365:Secret) el propio portal lee de secretos de usuario yappsettings. Por tanto, un proyecto Power Portals Pro configurado a menudo no necesita iniciar sesión en absoluto.
Perfiles CLI de Power Platform
Si ya tienes entornos en pac, puedes empezar desde uno en lugar de buscar una URL:
dnx PowerPortalsPro.Mcp environments
dnx PowerPortalsPro.Mcp login --pac-profile "Acme Dev"
La CLI no tiene ningún comando que entregue un token de acceso, y mantiene las credenciales en su propio almacén, por lo que su sesión no puede reutilizarse directamente. Lo que --pac-profile sí hace es tomar el entorno y la cuenta de un perfil y iniciar sesión como esa cuenta — normalmente sin que se lo pidan, porque ya tienes una sesión.
Nota
El perfil activo de la CLI nunca cambia.
pac auth selectNo se utiliza deliberadamente: movería todos los proyectos a la vez.
Las herramientas
Rara vez necesitas nombrar una herramienta — los asistentes la eligen de las descripciones — pero ayuda saber qué hay ahí.
Documentación, siempre 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
Tu entorno, una vez conectado
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
Poner en marcha un nuevo proyecto
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
Trabajando en otros idiomas
El conocimiento que el servidor devuelve es inglés, y eso es deliberado. Tu asistente es quien lo lee — nunca ves una respuesta de herramienta directamente — así que se traduce para ti: pregunta en tu propio idioma, y responde en tu idioma. Lo que no debe traducir es el código. Los nombres de componentes, parámetros y columnas son en inglés en todos los proyectos, sea cual sea el idioma en el que esté la conversación, así que mantener la referencia en inglés es lo que impide que un asistente invente un nombre de parámetro traducido que no existe.
Nota
Las preguntas que nombran algo —
“MainGrid Ansichten konfigurieren”— ya funcionan en cualquier idioma, porque los nombres de componentes son iguales en todas partes. Las herramientas también indican a tu asistente que busque en inglés, así que las preguntas que no nombran nada también funcionan.
Resolución de problemas
- "Ningún entorno Dataverse está vinculado a esta carpeta del proyecto" — ejecuta
loginen esa carpeta. Comprueba que estás en la carpeta que crees que estás:statusimprime la raíz del espacio de trabajo que resolvió. - "El inicio de sesión guardado ya no es válido" — el token de actualización expiró o fue revocado, o el inquilino ahora requiere una interacción nueva. Ejecuta
loginde nuevo. - "El almacén de claves del sistema operativo no está disponible" — común en un ordenador Linux sin interfaz gráfica sin daemon libsecret. Usa un principal de servicio allí, a través de las
PPP_D365_*variables de entorno. - Inicié sesión, pero el entorno rechaza la conexión — la cuenta está autenticada pero no tiene acceso a ese entorno. Comprueba la URL, o inicia sesión como usuario diferente con
--username.
