Servidor MCP
O servidor Power Portals Pro MCP oferece aos assistentes de programação de IA conhecimento direto desse framework enquanto você constrói. É um servidor Model Context Protocol , vem junto com o framework, e não há chave de licença nem nada para se inscrever.
Por que ela existe
Duas coisas que um agente não consegue obter apenas com a documentação, e ambas causam código quebrado:
- A superfície da API é grande demais para lembrar. Várias centenas de componentes em ambas as pilhas, cada um com dezenas de parâmetros. Um agente que meio que lembra um nome de parâmetro escreve algo plausível que não compila — ou pior, compila e não faz nada.
- Seu Dataverse não está em nenhum documento. Nomes lógicos de tabelas e colunas, nomes de esquemas de relacionamento, valores de conjunto de opções e — acima de tudo — GUIDs de visualização salva existem apenas no seu ambiente. Todo exemplo de código neste site escreve um id de visualização como uma reticente, porque não há mais nada que ele possa escrever.
O que ela responde
- O framework — a referência completa de parâmetros e prop para cada componente em ambas as pilhas com tipos, padrões e valores permitidos; amostras completas de trabalho retiradas literalmente deste site; os guias; as convenções de
AGENTS.md; e a matriz de paridade Blazor-para-React. Ela é compatível com versões com os pacotes que você instalou. - Seu ambiente, somente leitura — as tabelas e colunas que você realmente tem, para quais editores cada coluna mapeia, nomes de relacionamentos, valores de conjunto de opções e suas visualizações salvas com seus GUIDs reais.
Nota
Toda ferramenta do Dataverse lê metadados. Nenhuma delas lê, grava ou deletura um registro, então apontar um agente para um ambiente de produção permite que ele aprenda a forma dos seus dados sem poder mexer neles.
Adicioná-lo a um projeto
Dois lugares onde pode viver
Há aqui um jogo de ovo e galinha que vale a pena ser explícito. Os templates escrevem a configuração no projeto que criam — mas o servidor é mais útil antes mesmo que esse projeto exista, quando você está escolhendo um template e suas opções. Então instale-o uma vez para você e deixe o arquivo por projeto assumir a partir daí.
Uma vez por máquina, para qualquer pasta
Isso torna o servidor disponível em todos os lugares, inclusive em uma pasta vazia que você está prestes a instalar. Ele pode então responder qual template usar, o que significam as opções e o que configurar depois. Deliberadamente desfixado, para rastrear a versão mais recente:
claude mcp add --scope user powerportalspro -- dnx PowerPortalsPro.Mcp --yes
O Visual Studio lê um nível .mcp.json de usuário da sua pasta de perfil, o Cursor usa ~/.cursor/mcp.json, e o VS Code tem uma configuração MCP em nível de usuário em suas configurações. Cada um ocupa o mesmo servers bloco.
Por projeto, fixado em sua versão
Projetos criados a partir dos templates do Power Portals Pro já estão conectados por cabo: o template escreve a .mcp.json na raiz da solução, fixado na versão correspondente do servidor. Não há nada a fazer.
Para adicioná-lo a um projeto existente, crie esse arquivo você mesmo na raiz da sua solução:
{
"servers": {
"powerportalspro": {
"type": "stdio",
"command": "dnx",
"args": [ "PowerPortalsPro.Mcp", "--yes" ]
}
}
}
Qual arquivo seu editor lê
Visual Studio 2022 17.14+ e Visual Studio 2026 lêem
.mcp.jsonda pasta de solução, assim como o Claude Code. VS Code lê.vscode/mcp.jsone Cursor lê.cursor/mcp.json— ambos usam o mesmoserversbloco, então copie para ele.
dnx vem com o SDK .NET 10, que você já tem: todo projeto Power Portals Pro é hospedado por ASP.NET Core, incluindo os SPAs React. A primeira execução baixa o pacote e o armazena em cache.
Ter ambos é a configuração pretendida. As duas entradas usam o mesmo nome de servidor, então um cliente que entende ambos os escopos usa o do projeto — o que significa que você recebe as respostas combinadas dentro de um projeto, e as mais recentes em qualquer outro lugar.
Conferindo se está funcionando
Pergunte ao seu assistente algo que só o servidor pode responder — por exemplo: "use get_component_api para me mostrar todos os parâmetros no MainGrid". Se a ferramenta não estiver disponível, o cliente não pegou o arquivo de configuração; a maioria precisa de um reinício após a adicionação.
Conectando-se ao Dataverse
As ferramentas de documentação não precisam de configuração alguma. As ferramentas de metadados precisam de uma conexão com seu ambiente, e essa conexão pertence à pasta, não à máquina. Execute isso uma vez no projeto:
dnx PowerPortalsPro.Mcp login
Um ambiente por pasta
Isso vincula essa pasta a um único ambiente. Se você trabalha entre vários clientes, cada projeto permanece conectado ao seu próprio ambiente e agentes em pastas diferentes nunca se cruzam. Isso é o que pac auth select não pode fazer — ele muda um único perfil de máquina em todo o lugar, então mudar o cliente em um lugar muda tudo em todos os lugares.
O login usa o fluxo de código do dispositivo por padrão, então funciona via SSH, dentro de um container e em WSL, e você pode finalizar no celular. Passe --browser se preferir abrir um.
Onde as coisas são armazenadas
- A vinculação —
.ppp/mcp.jsonna pasta. Ela nomeia o ambiente e a conta, não guarda segredos e é seguro para commeter: um colega de equipe clonando o repositório é direcionado para o ambiente certo sem ser informado. - Seu token — mantido no seu perfil de usuário e criptografado pelo keystore do sistema operacional (DPAPI no Windows, Keychain no macOS, libsecret no Linux). Ele nunca é escrito no repositório. Se nenhuma keystore estiver disponível, o log-in recusa em vez de deixar um token de atualização no disco limpo.
O cache de tokens é keyado pelo ambiente, então um segundo clone do repositório do mesmo cliente não pede para você fazer login novamente, enquanto um cliente diferente sempre faz isso.
Comandos
Todos esses atuam na pasta atual, a menos que você passe --workspaceem .
login— faça login e vincule esta pasta a um ambiente. Opções:--environment <url>,--pac-profile <name>,--username <upn>,--tenant <id>,--browser.status— qual ambiente essa pasta utiliza, de onde ela veio, qual conta está armazenada em cache e se a conexão funciona.logout— desvincular a pasta. Adicionar--forgetpara remover também o login salvo.environments— listar os perfis de CLI do Power Platform disponíveis para espelhar.
Outras formas de se conectar
O ambiente e as credenciais são resolvidos nesta ordem, então a declaração de intenção mais explícita vence:
- Variáveis de ambiente —
PPP_D365_URL,PPP_D365_CLIENT_IDePPP_D365_CLIENT_SECRETno blocoenvdo servidor. Um principal de serviço, e a forma de conectar isso em CI ou em um contêiner compartilhado. - O login da pasta — escrito por
login. O caminho normal. - As próprias configurações do projeto — as mesmas
D365:Url,D365:ClientIdeD365:ClientSecret(ouD365:Secret) o próprio portal lê dos secretos de usuário eappsettings. Um projeto Power Portals Pro configurado, portanto, muitas vezes não precisa de login algum.
Perfis de CLI do Power Platform
Se você já mantém ambientes em pac, pode começar de um em vez de procurar uma URL:
dnx PowerPortalsPro.Mcp environments
dnx PowerPortalsPro.Mcp login --pac-profile "Acme Dev"
A CLI não tem um comando que forneça um token de acesso, e mantém as credenciais em seu próprio armazenamento, então sua sessão não pode ser reutilizada diretamente. O que --pac-profile faz é pegar o ambiente e a conta de um perfil e entrar como essa conta — geralmente sem ser solicitado, porque você já tem uma sessão.
Nota
O próprio perfil ativo da CLI nunca é alterado.
pac auth selecté deliberadamente não utilizado: ele moveria todos os projetos de uma vez.
As ferramentas
Raramente é necessário nomear uma ferramenta — os assistentes escolhem a partir das descrições — mas ajuda saber o que está lá.
Documentação, sempre disponível
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
Seu ambiente, uma 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
Colocando um novo projeto em andamento
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
Trabalhando em outras línguas
O conhecimento que o servidor retorna é em inglês, e isso é deliberado. Seu assistente é quem está lendo — você nunca vê uma resposta de ferramenta diretamente — então ele traduz para você: pergunte no seu próprio idioma, e ele responde no seu idioma. O que ele não deve traduzir é o código. Os nomes dos componentes, parâmetros e colunas são em inglês em todo projeto, seja qual for o idioma da conversa, então manter a referência em inglês é o que impede um assistente de inventar um nome de parâmetro traduzido que não existe.
Nota
Perguntas que nomeiam algo —
“MainGrid Ansichten konfigurieren”— já funcionam em qualquer idioma, porque os nomes dos componentes são os mesmos em todos os lugares. As ferramentas também pedem ao seu assistente para pesquisar em inglês, então perguntas que não nomeiam nada também funcionam.
Solução de problemas
- "Nenhum ambiente Dataverse está vinculado a esta pasta do projeto" — execute
loginnessa pasta. Verifique se você está na pasta que acha que está:statusimprime a raiz do workspace que ela resolveu. - "O login salvo não é mais válido" — o token de atualização expirou ou foi revogado, ou o locatário agora precisa de uma nova interação. Execute
loginnovamente. - "O keystore do sistema operacional não está disponível" — comum em um computador Linux headless sem daemon libsecret. Use um principal de serviço lá, via as
PPP_D365_*variáveis de ambiente. - Entrei logado, mas o ambiente rejeita a conexão — a conta foi autenticada, mas não tem acesso a esse ambiente. Verifique a URL ou faça login como um usuário diferente com
--username.
