Dynamics 365 CRM 连接服务器

一个通过OData API连接到Microsoft Dynamics 365 CRM的MCP服务器,设计用于GitHub Copilot CLI和其他MCP兼容的AI助手。

  • by alexshaulMS
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 alexshaulMS/dynamics-mcp

使用说明

Dynamics 365 CRM MCP服务器

MCP(模型上下文协议)服务器,通过OData API连接到Microsoft Dynamics 365 CRM(MSX)。专为与GitHub Copilot CLI和其他MCP兼容的AI助手一起使用而设计。

特性

账户管理

  • my_accounts --列出通过分配给您的所有帐户 msp_accountteams
  • account_details --完整的帐户详细信息,包括父/子层次结构
  • account_contacts --获取帐户的联系人
  • account_team --帐户团队成员(如果子团队没有团队,则自动遍历到父团队)
  • account_opportunities --账户机会(包括子账户)

机会和渠道

  • my_opportunities --您在交易团队中的机会
  • opportunities_not_on_team --在您的账户中打开您没有的机会
  • opportunity_detail --与交易团队一起提供完整的机会细节
  • opportunity_team --为团队成员提供机会
  • search_opportunities --使用过滤器搜索(查询、阶段、值、结束日期)
  • pipeline_summary --按账户和阶段汇总管道

里程碑

  • my_milestones --交易团队机会中的所有里程碑
  • opportunity_milestones --特定机会的里程碑

联系人和帐户查找

  • find_contact_by_email --通过父帐户解析的电子邮件地址查找联系人
  • find_account_by_domain --按网站/电子邮件域查找帐户(例如“contoso.com”)

注释和注释

  • create_note --在任何记录(里程碑、机会等)上创建注释/评论
  • search_annotations --搜索记录上的现有笔记(时间线历史、重复检查)

发现与探索

  • discover_entities --在Dynamics元数据中搜索实体名称
  • discover_fields --获取任何实体的字段/属性
  • run_odata_query --运行自定义OData查询以进行即席探索

写入操作

  • create_record --在任何实体上创建新记录(通用)
  • update_record --更新任何记录上的字段
  • assign_to_me --为自己分配一个记录(里程碑、任务等)

先决条件

  • Python 3.10+
  • 访问Dynamics 365 CRM实例
  • Azure AD应用程序注册 user_impersonation Dynamics实例的权限

设置

1.克隆并安装依赖项

git clone <this-repo>
cd dynamics-mcp
pip install -r requirements.txt

2.创建一个 .env 文件

复制 .env.example 并填写您的值:

cp .env.example .env
变量 描述 必填
DYNAMICS_BASE_URL 您的Dynamics 365实例URL 否(默认为 https://microsoftsales.crm.dynamics.com)
DYNAMICS_CLIENT_ID Azure AD应用程序注册客户端ID 是
DYNAMICS_TENANT_ID Azure AD租户ID 是
DYNAMICS_USER_ID 你的 systemuserid 来自Dynamics 365的GUID 是

3.查找您的用户名

找到你的 systemuserid,在浏览器中运行此OData查询(经过身份验证时):

https://<your-instance>.crm.dynamics.com/api/data/v9.2/systemusers?$filter=internalemailaddress eq 'your.email@company.com'&$select=systemuserid,fullname

4.配置GitHub Copilot CLI

添加到您的 ~/.copilot/mcp-config.json:

{
  "mcpServers": {
    "dynamics-crm": {
      "command": "python",
      "args": ["<full-path-to>/dynamics-mcp/server.py"],
      "env": {
        "DYNAMICS_CLIENT_ID": "your-client-id",
        "DYNAMICS_TENANT_ID": "your-tenant-id",
        "DYNAMICS_USER_ID": "your-user-id"
      },
      "tools": ["*"]
    }
  }
}

提示: 您还可以在shell配置文件中设置env变量,或者 .env 文件而不是配置中的内联。

5.首轮

首次启动时,服务器将打开浏览器进行交互式Azure AD登录。身份验证后,令牌将在本地缓存在 .token_cache.json.

认证

使用Microsoft身份验证库 公共客户端 流量:

  • 令牌缓存在 .token_cache.json (自动刷新)
  • 首次登录需要交互式浏览器身份验证
  • 后续运行会静默使用缓存/刷新令牌

建筑

┌─────────────────┐     stdio      ┌──────────────────┐     OData v9.2     ┌───────────────┐
│  Copilot CLI /   │◄──────────────►│  FastMCP Server  │◄──────────────────►│  Dynamics 365  │
│  MCP Client      │                │  (server.py)     │     MSAL auth      │  CRM (MSX)     │
└─────────────────┘                └──────────────────┘                    └───────────────┘

实体参考

实体 实体集 用于
msp_dealteam msp_dealteams 机会交易团队成员
msp_engagementmilestone msp_engagementmilestones 机会里程碑
msp_accountteam msp_accountteams 客户团队分配
opportunity opportunities 销售机会
account accounts 客户账户
contact contacts 账户联系人
annotation annotations 记录注释/评论(时间线条目)

许可证

仅供内部使用。