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.

PowerPlatform MCP 服务器

模型上下文协议 (MCP) 服务器,提供对 PowerPlatform/Dataverse 实体和记录的智能访问。此工具提供上下文感知辅助、实体探索和元数据访问。

主要特点:

  • 通过格式化、上下文感知的提示进行丰富的实体元数据探索
  • 具有智能过滤功能的高级 OData 查询支持
  • 全面的关系映射和可视化
  • 通过人工智能代理进行人工智能辅助查询构建和数据建模
  • 对实体属性、关系和全局选项集的完全访问权限

安装

您可以通过两种方式安装并运行此工具:

选项 1:全局安装

npm install -g powerplatform-mcp

然后运行它:

powerplatform-mcp

选项 2:直接使用 npx 运行

无需安装即可运行:

npx powerplatform-mcp

配置

运行前,设置以下环境变量:

# 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

用法

这是一个 MCP 服务器,旨在与兼容 MCP 的客户端(例如 Cursor、Claude App 和 GitHub Copilot)配合使用。运行后,它将提供用于检索 PowerPlatform 实体元数据和记录的工具。

可用工具

  • get-entity-metadata :获取有关 PowerPlatform 实体的元数据
  • get-entity-attributes :获取 PowerPlatform 实体的属性/字段
  • get-entity-attribute :获取 PowerPlatform 实体的特定属性/字段
  • get-entity-relationships :获取 PowerPlatform 实体的关系
  • get-global-option-set :获取全局选项集定义
  • get-record :通过实体名称和 ID 获取特定记录
  • query-records :使用 OData 过滤器表达式查询记录
  • use-powerplatform-prompt :使用 PowerPlatform 实体的预定义提示模板

MCP 提示

该服务器包含一个提示功能,提供有关 PowerPlatform 实体的格式化、上下文丰富的信息。

可用的提示类型

use-powerplatform-prompt工具支持以下提示类型:

  1. ENTITY_OVERVIEW :实体的全面概述
  2. ATTRIBUTE_DETAILS :有关特定实体属性的详细信息
  3. QUERY_TEMPLATE :带有示例过滤器的实体的 OData 查询模板
  4. RELATIONSHIP_MAP :实体关系的可视化地图

示例

实体概览提示

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

输出:

## 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.

属性详情提示

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

输出:

## 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

查询模板提示

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

输出:

## 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

常见过滤器示例

  • 等于: name eq 'Contoso'
  • 包含: contains(name, 'Contoso')
  • 大于日期: createdon gt 2023-01-01T00:00:00Z
  • 多个条件: name eq 'Contoso' and statecode eq 0
#### Relationship Map Prompt ```javascript await mcpClient.invoke("use-powerplatform-prompt", { promptType: "RELATIONSHIP_MAP", entityName: "contact" });

输出:

## 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)

提示示例

以下是如何使用 PowerPlatform MCP 提示与助手交互的一些示例:

1.实体理解

您可以用自然语言向助手询问实体:

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. 构建查询

您可以寻求构建查询的帮助:

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. 理解关系

您可以自然地探索实体关系:

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. 领域/属性调查

您可以询问特定字段:

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.复杂数据建模

您可以获得有关数据建模决策的帮助:

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. 调试协助

您可以获取故障排除帮助:

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'.

这些示例展示了 AI 助手如何利用 MCP 提示,为 PowerPlatform 开发任务提供情境感知的精准辅助。AI 能够理解您环境的具体配置,并能协助您完成简单的查询和复杂的架构决策。

执照

麻省理工学院

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

模型上下文协议 (MCP) 服务器,提供对 PowerPlatform/Dataverse 实体和记录的智能访问。此工具提供上下文感知辅助、实体探索和元数据访问。

  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