Dataverse MCP聊天机器人

一个轻量级的HTTP包装器,围绕Microsoft Power Platform/Dataverse的模型上下文协议(MCP)服务器,提供REST端点和自然语言聊天界面。

  • by bonanip512
  • TypeScript
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 bonanip512/dataversemcpserver

使用说明

WBMCP聊天机器人

一个轻量级的HTTP包装器,围绕着微软Power Platform/Network的模型上下文协议(MCP)服务器。该项目通过 /invoke REST端点,包括一个简单的HTML聊天机器人UI,可以接受自然语言查询并将其动态路由到适当的MCP工具。


特性

  • MCP工具:支持8核MCP操作:

    1. use-powerplatform-prompt --实体概述、属性详细信息、查询模板、关系图
    2. get-entity-metadata --获取实体的元数据
    3. get-entity-attributes --列出实体的所有属性
    4. get-entity-attribute --检索特定属性定义
    5. get-entity-relationships --一对多和多对多的关系
    6. get-global-option-set --全局选项集定义
    7. get-record --按GUID获取记录
    8. query-records --OData筛选记录查询
  • 自然语言前端:HTML+JavaScript UI,解析自由文本问题并调用正确的MCP工具。

  • 环境配置:对所有Power Platform凭据使用环境变量。

  • 快递 + CORS:简单的HTTP服务器,可与任何前端集成。


先决条件

  • Node.js >=16.x

  • 一个具有以下功能的Ruby/Power平台环境和服务主体(应用程序注册):

    • 租户ID
    • 客户端(应用程序)ID
    • 客户端密钥
    • 组织URL(例如。 https://<yourorg>.crm.dynamics.com)

安装

  1. 克隆存储库

    git clone https://github.com/your-org/powerplatform-mcp-chatbot.git
    cd powerplatform-mcp-chatbot
    
  2. 安装依赖项

    npm install
    
  3. 构建TypeScript

    npm run build
    

配置

创建一个 .env 使用以下命令在项目根目录中创建文件(或在shell中设置环境变量):

POWERPLATFORM_URL=https://yourorg.crm.dynamics.com
POWERPLATFORM_CLIENT_ID=your-client-id
POWERPLATFORM_CLIENT_SECRET=your-client-secret
POWERPLATFORM_TENANT_ID=your-tenant-id
PORT=3000           # Optional: HTTP server port

备注:确保这些值保持安全,不提交给版本控制。


运行服务器

构建后,启动HTTP包装器:

node dist/server.js

您应该看到:

✅ PowerPlatform MCP HTTP server running at http://localhost:3000/invoke

REST调用端点

所有MCP工具都通过一个POST端点公开:

POST http://localhost:3000/invoke
Content-Type: application/json

{
  "tool": "tool-name",
  "parameters": { /* tool-specific parameters */ }
}

示例请求

  1. 实体概述

    curl -X POST http://localhost:3000/invoke \
      -H 'Content-Type: application/json' \
      -d '{"tool":"use-powerplatform-prompt","parameters":{"promptType":"ENTITY_OVERVIEW","entityName":"account"}}'
    
  2. 获取实体元数据

    curl -X POST http://localhost:3000/invoke \
      -d '{"tool":"get-entity-metadata","parameters":{"entityName":"contact"}}'
    
  3. 查询记录

    curl -X POST http://localhost:3000/invoke \
      -d '{"tool":"query-records","parameters":{"entityNamePlural":"contacts","filter":"statecode eq 0","maxRecords":10}}'
    

有关参数的详细信息,请参阅上面的完整工具列表。


HTML聊天机器人用户界面

演示前端提供在 chatbot.html。它监听自然语言查询,将其映射到正确的工具,并内联显示结果。

  1. 服务 chatbot.html (例如,直接在Chrome中打开或通过任何静态服务器在主机中打开)。

  2. 提出问题 例如:

    • “告诉我有关帐户实体的信息”
    • “列出Lead中的字段”
    • “现场记账收入明细”
    • “查找状态代码为eq 0的活动联系人”

故障排除

  • CORS 错误:确保在启用CORS的情况下从本地或托管文件运行HTML(服务器使用 cors() 默认情况下)。
  • 认证:验证您的服务主体是否具有Dataverse API权限以及环境URL是否正确。
  • 错误:检查控制台输出 server.js 用于堆栈跟踪和错误消息。