PowerPlatform MCP

by michsob
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Provides GitHub Copilot access to PowerPlatform/Dataverse entities and records, supporting entity exploration, intelligent OData filtering, and AI-assisted query building through a Model Context Protocol server.

Servidor MCP de PowerPlatform

Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona acceso inteligente a entidades y registros de PowerPlatform/Dataverse. Esta herramienta ofrece asistencia contextual, exploración de entidades y acceso a metadatos.

Características principales:

  • Exploración de metadatos de entidades enriquecidas con indicaciones formateadas y sensibles al contexto
  • Compatibilidad avanzada con consultas OData con filtrado inteligente
  • Mapeo y visualización integral de relaciones
  • Creación de consultas asistidas por IA y modelado de datos a través de un agente de IA
  • Acceso completo a atributos de entidad, relaciones y conjuntos de opciones globales

Instalación

Puede instalar y ejecutar esta herramienta de dos maneras:

Opción 1: Instalar globalmente

npm install -g powerplatform-mcp

Luego ejecútalo:

powerplatform-mcp

Opción 2: Ejecutar directamente con npx

Ejecutar sin instalar:

npx powerplatform-mcp

Configuración

Antes de ejecutar, configure las siguientes variables de entorno:

# PowerPlatform/Dataverse connection details POWERPLATFORM_URL=https://yourenvironment.crm.dynamics.com POWERPLATFORM_CLIENT_ID=your-azure-app-client-id POWERPLATFORM_CLIENT_SECRET=your-azure-app-client-secret POWERPLATFORM_TENANT_ID=your-azure-tenant-id

Uso

Este es un servidor MCP diseñado para funcionar con clientes compatibles con MCP como Cursor, Claude App y GitHub Copilot. Una vez en ejecución, expondrá herramientas para recuperar metadatos y registros de entidades de PowerPlatform.

Herramientas disponibles

  • get-entity-metadata : Obtener metadatos sobre una entidad de PowerPlatform
  • get-entity-attributes : Obtener atributos/campos de una entidad de PowerPlatform
  • get-entity-attribute : obtiene un atributo/campo específico de una entidad de PowerPlatform
  • get-entity-relationships : Obtener relaciones para una entidad de PowerPlatform
  • get-global-option-set : Obtener una definición de conjunto de opciones globales
  • get-record : obtiene un registro específico por nombre de entidad e ID
  • query-records : consulta registros utilizando una expresión de filtro OData
  • use-powerplatform-prompt : utiliza plantillas de solicitud predefinidas para entidades de PowerPlatform

Indicaciones de MCP

El servidor incluye una función de avisos que proporciona información formateada y rica en contexto sobre las entidades de PowerPlatform.

Tipos de indicaciones disponibles

La herramienta use-powerplatform-prompt admite los siguientes tipos de mensajes:

  1. ENTITY_OVERVIEW : Descripción general completa de una entidad
  2. ATTRIBUTE_DETAILS : Información detallada sobre un atributo de entidad específico
  3. QUERY_TEMPLATE : Plantilla de consulta OData para una entidad con filtros de ejemplo
  4. RELATIONSHIP_MAP : Mapa visual de relaciones entre entidades

Ejemplos

Solicitud de descripción general de la entidad

// Example client code await mcpClient.invoke("use-powerplatform-prompt", { promptType: "ENTITY_OVERVIEW", entityName: "account" });

Producción:

## Power Platform Entity: account This is an overview of the 'account' entity in Microsoft Power Platform/Dataverse: ### Entity Details - Display Name: Account - Schema Name: Account - Description: Business that represents a customer or potential customer - Primary Key: accountid - Primary Name: name ### Key Attributes - name: String (Account Name) - emailaddress1: String (Email) - telephone1: String (Main Phone) - address1_city: String (City) - statecode: Status (Status) - accountnumber: String (Account Number) - industrycode: OptionSetValue (Industry) - revenue: Money (Annual Revenue) - ownerid: Owner (Owner) - createdon: DateTime (Created On) ### Relationships - One-to-Many Relationships: 42 - Many-to-Many Relationships: 8 You can query this entity using OData filters against the plural name.

Solicitud de detalles de atributos

await mcpClient.invoke("use-powerplatform-prompt", { promptType: "ATTRIBUTE_DETAILS", entityName: "account", attributeName: "revenue" });

Producción:

## Attribute: revenue Details for the 'revenue' attribute of the 'account' entity: - Display Name: Annual Revenue - Description: Annual revenue for the account - Type: Money - Format: Currency - Is Required: No - Is Searchable: true ### Usage Notes - Data Type: Money - Required: No - Max Length: N/A

Solicitud de plantilla de consulta

await mcpClient.invoke("use-powerplatform-prompt", { promptType: "QUERY_TEMPLATE", entityName: "account" });

Producción:

## OData Query Template for accounts Use this template to build queries against the accounts entity: accounts?$select=name,emailaddress1,telephone1, address1_city,statecode&$filter=name eq 'Example'&$orderby=name asc&$top=50

Ejemplos de filtros comunes

  • Es igual a: name eq 'Contoso'
  • Contiene: contains(name, 'Contoso')
  • Mayor que la fecha: createdon gt 2023-01-01T00:00:00Z
  • Varias condiciones: name eq 'Contoso' and statecode eq 0
#### Relationship Map Prompt ```javascript await mcpClient.invoke("use-powerplatform-prompt", { promptType: "RELATIONSHIP_MAP", entityName: "contact" });

Producción:

## Relationship Map for contact This shows all relationships for the 'contact' entity: ### One-to-Many Relationships (contact as Primary) - contact_activity_parties: contact (1) → activityparty (N) - contact_connections1: contact (1) → connection (N) - contact_connections2: contact (1) → connection (N) - contact_customer_contacts: contact (1) → contact (N) - contact_master_contact: contact (1) → contact (N) ### One-to-Many Relationships (contact as Related) - account_primary_contact: account (1) → contact (N) - customer_contacts: customer (1) → contact (N) - system_user_contacts: systemuser (1) → contact (N) ### Many-to-Many Relationships - contactleads_association: contact (N) ↔ lead (N) - contactopportunities_association: contact (N) ↔ opportunity (N) - contactquotes_association: contact (N) ↔ quote (N)

Ejemplos de indicaciones

A continuación se muestran algunos ejemplos de cómo puede interactuar con el asistente mediante las indicaciones de PowerPlatform MCP:

1. Comprensión de la entidad

Puedes preguntarle al asistente sobre entidades en lenguaje natural:

User: "Tell me about the Account entity in our PowerPlatform environment" Response: [uses ENTITY_OVERVIEW prompt internally] Here's what I found about the Account entity: - It's a core business entity representing customers and potential customers - The primary identifier is 'accountid' and the primary name field is 'name' - Key fields include: * name (Account Name) * emailaddress1 (Email) * telephone1 (Main Phone) * revenue (Annual Revenue) - It has 42 one-to-many relationships and 8 many-to-many relationships

2. Creación de consultas

Puedes pedir ayuda para construir consultas:

User: "Help me write a query to find active accounts with revenue over $1M in California" Response: [uses QUERY_TEMPLATE prompt internally] Here's the OData query you need: accounts?$select=name,revenue,statecode,address1_stateorprovince &$filter=statecode eq 0 and revenue gt 1000000 and address1_stateorprovince eq 'California' &$orderby=revenue desc This query: 1. Selects relevant fields 2. Filters for active accounts (statecode eq 0) 3. Checks revenue > $1M 4. Filters for California location 5. Orders by revenue highest to lowest

3. Comprender las relaciones

Puedes explorar las relaciones entre entidades de forma natural:

User: "How are Accounts and Contacts related in our system?" Response: [uses RELATIONSHIP_MAP prompt for both entities internally] Here are the key relationships between Accounts and Contacts: 1. Primary Contact (One-to-Many): - account_primary_contact: Account (1) → Contact (N) - An account can have many contacts, but one designated as primary 2. Customer Relationship: - contact_customer_accounts: Contact (N) ← Account (1) - Contacts can be associated with customer accounts 3. Additional Relationships: - accountleads_association: For lead tracking - account_connections: For relationship management

4. Investigación de campo/atributo

Puedes preguntar sobre campos específicos:

User: "What kind of field is the revenue field on Account?" Response: [uses ATTRIBUTE_DETAILS prompt internally] The revenue field on Account is: - Data Type: Money - Format: Currency - Not required - Searchable: Yes - Used for: Tracking annual revenue for the account - Can be used in advanced find and filtered views

5. Modelado de datos complejos

Puede obtener ayuda con las decisiones de modelado de datos:

User: "I need to design a solution for tracking product reviews. Which entities should I relate to?" Response: [uses multiple ENTITY_OVERVIEW and RELATIONSHIP_MAP prompts internally] Based on the existing data model, here's a suggested approach: 1. Product (existing entity): - Already has relationships with: * Price lists * Product categories * Inventory units 2. New Review entity should relate to: - Product (N:1) - Each review is for one product - Contact (N:1) - Reviews are written by contacts - Account (N:1) - Optional link to company if B2B review Here's a sample lookup field structure... [continues with detailed implementation guidance]

6. Asistencia de depuración

Puede obtener ayuda para solucionar problemas:

User: "Why am I getting 'invalid property' when querying account.customertypecode?" Response: [uses ATTRIBUTE_DETAILS prompt internally] I see the issue. The field 'customertypecode' is actually named 'customertype' in your environment. Here's the correct field information: - Logical Name: customertype - Type: OptionSetValue - Valid Values: * 1 = Competitor * 2 = Consultant * 3 = Customer * 4 = Investor * 5 = Partner * 6 = Influencer Try updating your query to use 'customertype' instead of 'customertypecode'.

Estos ejemplos muestran cómo el asistente de IA puede aprovechar las indicaciones de MCP para brindar asistencia contextual y precisa en las tareas de desarrollo de PowerPlatform. La IA comprende la configuración específica de su entorno y puede ayudar tanto con consultas sencillas como con decisiones arquitectónicas complejas.

Licencia

Instituto Tecnológico de Massachusetts (MIT)

-
security - not tested
A
license - permissive license
-
quality - not tested

Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona acceso inteligente a entidades y registros de PowerPlatform/Dataverse. Esta herramienta ofrece asistencia contextual, exploración de entidades y acceso a metadatos.

  1. Installation
    1. Option 1: Install globally
    2. Option 2: Run directly with npx
  2. Configuration
    1. Usage
      1. Available Tools
    2. MCP Prompts
      1. Available Prompt Types
      2. Examples
      3. Common Filter Examples
    3. Prompt Examples
      1. 1. Entity Understanding
      2. 2. Building Queries
      3. 3. Understanding Relationships
      4. 4. Field/Attribute Investigation
      5. 5. Complex Data Modeling
      6. 6. Debugging Assistance
    4. License
      ID: rsp5r9ohh1