PowerPlatform MCP
一个模型上下文协议 (MCP) 服务器,它提供对 PowerPlatform/Dataverse 实体和记录的智能访问。该工具提供上下文感知辅助、实体探索和元数据访问。
README
PowerPlatform MCP 服务器
一个模型上下文协议 (MCP) 服务器,提供对 PowerPlatform/Dataverse 实体和记录的智能访问。此工具提供上下文感知帮助、实体探索和元数据访问。
主要特性:
- 丰富的实体元数据探索,带有格式化的、上下文感知的提示
- 高级的 OData 查询支持,带有智能过滤
- 全面的关系映射和可视化
- 通过 AI 代理进行 AI 辅助的查询构建和数据建模
- 完全访问实体属性、关系和全局选项集
安装
您可以通过两种方式安装和运行此工具:
选项 1:全局安装
npm install -g powerplatform-mcp
然后运行它:
powerplatform-mcp
选项 2:直接使用 npx 运行
无需安装即可运行:
npx powerplatform-mcp
配置
在运行之前,设置以下环境变量:
# PowerPlatform/Dataverse 连接详细信息
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 工具支持以下提示类型:
- ENTITY_OVERVIEW: 实体的全面概述
- ATTRIBUTE_DETAILS: 有关特定实体属性的详细信息
- QUERY_TEMPLATE: 带有示例过滤器的实体的 OData 查询模板
- RELATIONSHIP_MAP: 实体关系的可视化地图
示例
实体概述提示
// 示例客户端代码
await mcpClient.invoke("use-powerplatform-prompt", {
promptType: "ENTITY_OVERVIEW",
entityName: "account"
});
输出:
## Power Platform 实体:account
这是 Microsoft Power Platform/Dataverse 中“account”实体的概述:
### 实体详细信息
- 显示名称:Account
- 架构名称:Account
- 描述:代表客户或潜在客户的业务
- 主键:accountid
- 主名称:name
### 主要属性
- name:String(帐户名称)
- emailaddress1:String(电子邮件)
- telephone1:String(主要电话)
- address1_city:String(城市)
- statecode:Status(状态)
- accountnumber:String(帐号)
- industrycode:OptionSetValue(行业)
- revenue:Money(年收入)
- ownerid:Owner(所有者)
- createdon:DateTime(创建于)
### 关系
- 一对多关系:42
- 多对多关系:8
您可以使用针对复数名称的 OData 过滤器查询此实体。
属性详细信息提示
await mcpClient.invoke("use-powerplatform-prompt", {
promptType: "ATTRIBUTE_DETAILS",
entityName: "account",
attributeName: "revenue"
});
输出:
## 属性:revenue
“account”实体的“revenue”属性的详细信息:
- 显示名称:年收入
- 描述:帐户的年收入
- 类型:Money
- 格式:货币
- 是否必需:否
- 是否可搜索:是
### 使用说明
- 数据类型:Money
- 必需:否
- 最大长度:N/A
查询模板提示
await mcpClient.invoke("use-powerplatform-prompt", {
promptType: "QUERY_TEMPLATE",
entityName: "account"
});
输出:
## accounts 的 OData 查询模板
使用此模板构建针对 accounts 实体的查询:
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
#### 关系图提示
```javascript
await mcpClient.invoke("use-powerplatform-prompt", {
promptType: "RELATIONSHIP_MAP",
entityName: "contact"
});
输出:
## contact 的关系图
这显示了“contact”实体的所有关系:
### 一对多关系(contact 作为主实体)
- 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)
### 一对多关系(contact 作为相关实体)
- account_primary_contact:account (1) → contact (N)
- customer_contacts:customer (1) → contact (N)
- system_user_contacts:systemuser (1) → contact (N)
### 多对多关系
- contactleads_association:contact (N) ↔ lead (N)
- contactopportunities_association:contact (N) ↔ opportunity (N)
- contactquotes_association:contact (N) ↔ quote (N)
提示示例
以下是一些示例,说明如何使用 PowerPlatform MCP 提示与助手交互:
1. 实体理解
您可以向助手询问自然语言中的实体:
用户:“告诉我有关我们 PowerPlatform 环境中的 Account 实体的信息”
回复:
[内部使用 ENTITY_OVERVIEW 提示]
这是我找到的有关 Account 实体的信息:
- 这是一个核心业务实体,代表客户和潜在客户
- 主要标识符是“accountid”,主要名称字段是“name”
- 主要字段包括:
* name(帐户名称)
* emailaddress1(电子邮件)
* telephone1(主要电话)
* revenue(年收入)
- 它有 42 个一对多关系和 8 个多对多关系
2. 构建查询
您可以请求帮助构建查询:
用户:“帮助我编写一个查询,以查找加利福尼亚州收入超过 100 万美元的活跃帐户”
回复:
[内部使用 QUERY_TEMPLATE 提示]
这是您需要的 OData 查询:
accounts?$select=name,revenue,statecode,address1_stateorprovince
&$filter=statecode eq 0
and revenue gt 1000000
and address1_stateorprovince eq 'California'
&$orderby=revenue desc
此查询:
1. 选择相关字段
2. 过滤活跃帐户(statecode eq 0)
3. 检查收入 > 100 万美元
4. 过滤加利福尼亚州位置
5. 按收入从高到低排序
3. 理解关系
您可以自然地探索实体关系:
用户:“我们的系统中 Accounts 和 Contacts 如何关联?”
回复:
[内部为两个实体使用 RELATIONSHIP_MAP 提示]
以下是 Accounts 和 Contacts 之间的主要关系:
1. 主要联系人(一对多):
- account_primary_contact:Account (1) → Contact (N)
- 一个帐户可以有多个联系人,但一个被指定为主要联系人
2. 客户关系:
- contact_customer_accounts:Contact (N) ← Account (1)
- 联系人可以与客户帐户关联
3. 其他关系:
- accountleads_association:用于潜在客户跟踪
- account_connections:用于关系管理
4. 字段/属性调查
您可以询问有关特定字段的信息:
用户:“Account 上的 revenue 字段是什么类型的字段?”
回复:
[内部使用 ATTRIBUTE_DETAILS 提示]
Account 上的 revenue 字段是:
- 数据类型:Money
- 格式:货币
- 非必需
- 可搜索:是
- 用于:跟踪帐户的年收入
- 可用于高级查找和过滤视图
5. 复杂数据建模
您可以获得有关数据建模决策的帮助:
用户:“我需要设计一个用于跟踪产品评论的解决方案。我应该将哪些实体关联起来?”
回复:
[内部使用多个 ENTITY_OVERVIEW 和 RELATIONSHIP_MAP 提示]
根据现有的数据模型,这是一个建议的方法:
1. 产品(现有实体):
- 已经与以下对象建立了关系:
* 价目表
* 产品类别
* 库存单位
2. 新的 Review 实体应与以下对象相关:
- 产品 (N:1) - 每个评论都针对一个产品
- 联系人 (N:1) - 评论由联系人撰写
- 帐户 (N:1) - 如果是 B2B 评论,则可以选择链接到公司
这是一个示例查找字段结构...
[继续提供详细的实施指南]
6. 调试帮助
您可以获得故障排除方面的帮助:
用户:“为什么在查询 account.customertypecode 时出现“无效属性”?”
回复:
[内部使用 ATTRIBUTE_DETAILS 提示]
我看到了问题。 在您的环境中,字段“customertypecode”实际上命名为“customertype”。 这是正确的字段信息:
- 逻辑名称:customertype
- 类型:OptionSetValue
- 有效值:
* 1 = 竞争对手
* 2 = 顾问
* 3 = 客户
* 4 = 投资者
* 5 = 合作伙伴
* 6 = 影响者
尝试更新您的查询以使用“customertype”而不是“customertypecode”。
这些示例展示了 AI 助手如何利用 MCP 提示为 PowerPlatform 开发任务提供上下文感知、准确的帮助。 AI 了解您环境的特定配置,并且可以帮助您处理简单的查询和复杂的架构决策。
许可证
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。