Token导航 LogoToken导航TokenDH.com
D365 Odata MCP logo
数据服务未说明官方级别未说明来源级核验

D365 Odata MCP

MCP Server

一个MCP(模型上下文协议)服务器,使AI助手能够通过OData API查询Microsoft Dynamics 365数据,支持Dataverse和Finance & Operations(F&O)。

工具数

8

提示词数

0

GitHub Stars

1

资源数

0
RustClaude数据分析Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

FlintsLabs

提供方

FlintsLabs

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

D365 OData MCP服务器

![Crates.io](https://crates.io/crates/d365-odata-mcp) ![License: MIT](https://opensource.org/licenses/MIT)

MCP(模型上下文协议)服务器,使AI助手能够查询 微软Dynamics 365 数据通过OData API。支持两者 JB财务与运营(F&O).

AI助理

如果你想让人工智能助手在帮助进行更改之前了解这个存储库,请让它阅读 AI_CONTEXT.md 第一。该文件简要概述了架构、运行时流程、MCP工具、安全规则和发布过程。

特性

  • ✅ 完全支持OData查询: $filter, $select, $orderby, $top, $skip, $expand, $count
  • ✅ 跨公司查询(F&O)
  • Azure AD 身份验证(Cloud D365)
  • ADFS 身份验证(内部D365)
  • ✅ 自动令牌刷新
  • ✅ 使用指数回退重试
  • 元数据缓存 具有可配置的TTL,可提高性能
  • ✅ 适用于OpenAI Codex、Claude Desktop、Claude Code和其他MCP客户端

______________________________________________________________________

快速开始

步骤1:安装

cargo install d365-odata-mcp

升级到最新版本

cargo install d365-odata-mcp --force

步骤2:创建Azure AD应用程序

  1. 首选 Azure门户
  2. 导航至 微软Entra ID应用程序注册新注册
  3. 命名您的应用程序(例如。, D365 MCP)
  4. 记下:

- 租户ID (摘自概览) - 客户端ID (应用程序ID)

  1. 首选 证书和秘密新客户机密 → 复制 机密值
  2. 首选 API权限添加权限:

- 对于 JB: Dynamics CRMuser_impersonation - 对于 F&O: Dynamics ERPCustomService.FullAccess

  1. 点击 授予管理员同意

步骤3:配置您的AI客户端

在下面选择您的AI客户端:

______________________________________________________________________

OpenAI Codex的配置

编辑 ~/.codex/config.toml:

[mcp_servers.d365]
command = "d365-odata-mcp"

[mcp_servers.d365.env]
TENANT_ID = "your-tenant-id"
CLIENT_ID = "your-client-id"
CLIENT_SECRET = "your-client-secret"
ENDPOINT = "https://your-org.crm.dynamics.com/api/data/v9.2/"
PRODUCT = "dataverse"

对于F&O:

[mcp_servers.d365]
command = "d365-odata-mcp"

[mcp_servers.d365.env]
TENANT_ID = "your-tenant-id"
CLIENT_ID = "your-client-id"
CLIENT_SECRET = "your-client-secret"
ENDPOINT = "https://your-org.sandbox.operations.dynamics.com/data/"
PRODUCT = "finops"

验证安装:

codex mcp list

______________________________________________________________________

Claude桌面配置

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "d365": {
      "command": "d365-odata-mcp",
      "env": {
        "TENANT_ID": "your-tenant-id",
        "CLIENT_ID": "your-client-id",
        "CLIENT_SECRET": "your-client-secret",
        "ENDPOINT": "https://your-org.crm.dynamics.com/api/data/v9.2/",
        "PRODUCT": "dataverse"
      }
    }
  }
}

______________________________________________________________________

双子座的配置(反重力)

添加工作流文件 .agent/workflows/d365-query.md 对于您的项目:

---
description: How to query D365 Finance & Operations data via d365-odata-mcp
---

# D365 OData Query

Query D365 data via command line:

\```bash
export TENANT_ID="your-tenant-id"
export CLIENT_ID="your-client-id"
export CLIENT_SECRET="your-client-secret"
export ENDPOINT="https://your-org.sandbox.operations.dynamics.com/data/"
export PRODUCT="finops"

echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"query_entity","arguments":{"entity":"CustomersV3","top":"10"}}}' | d365-odata-mcp 2>/dev/null | jq '.result.content[0].text' -r
\```

______________________________________________________________________

可用工具

1. list_entities

列出所有可用的D365实体:

"List all D365 entities"

2. query_entity

具有完全OData支持的查询数据:

参数说明必填
entity实体名称。, CustomersV3
filterOData过滤器。, dataAreaId eq 'bc'
select要返回的字段。, Name,Id
orderby排序顺序。, CreatedDate desc
top最大记录数(默认值:50,最大值:1000)
skip要跳过的记录(分页)
expand要展开的导航属性
cross_companytrue 适用于跨公司(仅F&O)
counttrue 包括总计数

示例:

"Query CustomersV3, show first 10 records"
"Query SalesOrderHeaders where dataAreaId is 'bc', order by SalesOrderNumber desc"
"Get inventory where warehouse is 'WH01' with count"

3. get_entity_schema

获取实体的可用字段:

"Show schema for SalesOrderHeaders"

4. get_record

按ID获取单个记录:

"Get customer record with ID 'CUS-001'"

5. delete_record

按OData键删除单个记录。此工具需要 confirm 确切地说 DELETE.

参数说明必填
entity实体名称。, CustomersV3
key无括号的OData密钥表达式。, dataAreaId='bc',CustomerAccount='CUS-001'
id简单记录ID/密钥,用于 key 未提供
if_match可选 If-Match 标头值(默认值: *)
confirm必须完全正确 DELETE

例子:

"Delete CustomersV3 with key dataAreaId='bc',CustomerAccount='CUS-001' and confirm DELETE"

6. get_environment_info

获取D365环境信息:

"Show D365 environment info"

7. get_metadata

获取实体元数据,包括属性和导航属性(可扩展字段):

"Get metadata for CustomersV3"
"Show me the schema and expandable fields for SalesOrderHeaders"

8. refresh_metadata

强制刷新缓存的元数据(架构更改时有用):

"Refresh metadata cache"

______________________________________________________________________

环境变量

变量描述必填
TENANT_IDAzure AD租户ID(或 adfs 对于ADFS)
CLIENT_IDAzure AD/ADF应用程序ID
CLIENT_SECRETAzure AD/ADF客户端密码
ENDPOINTD365 OData endpoint URL
PRODUCTdataversefinops
AUTH_TYPEazure (默认)或 adfs
TOKEN_URL自定义令牌URL(仅限ADFS)
RESOURCE资源/受众(仅限ADFS)
METADATA_CACHE_TTL元数据缓存TTL(秒)(默认值:900=15分钟)
INSECURE_SSL跳过自签名证书的SSL验证(true/false)

______________________________________________________________________

本地D365(ADFS)的配置

对于具有ADFS身份验证的D365 F&O内部部署:

# ~/.codex/config.toml

[mcp_servers.d365_onprem]
command = "d365-odata-mcp"

[mcp_servers.d365_onprem.env]
AUTH_TYPE = "adfs"
TENANT_ID = "adfs"
CLIENT_ID = "your-adfs-client-id"
CLIENT_SECRET = "your-adfs-secret"
TOKEN_URL = "https://your-adfs-server.com/adfs/oauth2/token"
RESOURCE = "https://your-d365-onprem.com"
ENDPOINT = "https://your-d365-onprem.com/namespaces/AXSF/data/"
PRODUCT = "finops"

______________________________________________________________________

常见F&O实体

实体描述
CustomersV3客户主数据
VendorsV2供应商主数据
ProductsV2产品主数据
SalesOrderHeaders销售订单标题
SalesOrderLines销售订单行
PurchaseOrderHeaders采购订单标题
PurchaseOrderLines采购订单行
InventoryOnHandAggregatedByWarehouse现有库存

______________________________________________________________________

OData筛选器语法

操作员示例
eqStatus eq 'Open'
neStatus ne 'Closed'
gt / geAmount gt 1000
lt / leAmount lt 100
and / orStatus eq 'Open' and Amount gt 100
containscontains(Name, 'Corp')
startswithstartswith(Name, 'ABC')

______________________________________________________________________

测试

直接测试服务器:

export TENANT_ID="..." CLIENT_ID="..." CLIENT_SECRET="..." ENDPOINT="..." PRODUCT="finops"
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | d365-odata-mcp

______________________________________________________________________

许可证

MIT许可证-请参阅 许可证 了解详情。

______________________________________________________________________

贡献

欢迎投稿!请打开问题或提交PR。

目录标签

目录标签

RustClaude数据分析Dynamics365本地部署ODataAI助手数据查询企业资源规划

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP