Token导航 LogoToken导航TokenDH.com
MCP xpp logo
开发工具未说明官方级别未说明来源级核验

MCP xpp

MCP Server

用于Microsoft Dynamics 365 Finance & Operations开发的MCP服务器,支持对象创建、修改、删除和分析,可与多种开发环境集成。

工具数

0

提示词数

0

GitHub Stars

36

资源数

0
C#Claude开发工具Claude DesktopClaudeVS Code

安装说明

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

作者 / 组织

ccampora

提供方

ccampora

最后核验

2026/5/17 20:22

快速接入

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

详细介绍

MCP X++服务器

用于Microsoft Dynamics 365财务与运营开发的模型上下文协议(MCP)服务器。该工具支持通过MCP标准创建、修改和分析D365对象,允许与各种开发环境集成。

日期: 2025年9月18日\ 状态: 与VS2022服务集成并增强表单创建功能

最近的更新✨

2025年9月19日-安全对象删除功能:

  • 🗑️ 新的delete_xpp_object工具:通过依赖验证和级联支持安全删除D365对象
  • 🛡️ 依赖性保护:如果其他对象依赖于目标,则防止删除,避免破坏更改
  • 🔄 缓存一致性:成功删除后自动更新搜索索引
  • 高性能:直接将元数据提供程序与ISingleKeyedMetadataProvider集成。删除
  • 🌲 级联删除:可选删除子对象(表单部件、表关系等)
  • 综合测试:跨对象类型的完整创建/删除循环验证

2025年9月18日-阵列修改和表单创建增强:

  • 🚀 仅新数组修改: execute_object_modification 现在只使用批处理格式进行一致操作
  • 🔄 强制批量处理:单个操作使用具有一个元素的数组-不再有连续的单独调用
  • 📊 增强的响应跟踪:每次操作成功/失败报告,包括详细的时间和错误消息
  • 📋 最佳实践文档:明确指导将同一对象的所有修改分组到单个调用中
  • 🎯 新建表单工具:具有模式支持和数据源集成的专业表单创建
  • 🔧 Details主模式已修复:通过智能现场控制创建解决了验证问题
  • 🗄️ 增强的数据源支持:灵活的数据源处理(数组、字符串、逗号分隔)
  • 📋 模式发现:36个带有描述和要求的过滤表单模式
  • 模式验证:为需要它们的图案自动创建现场控制

概述

该MCP服务器提供D365 F&O开发功能,包括:

  • 对象创建:支持D365类、表、窗体、枚举和544+其他对象类型
  • 表单创建: ✨ 增强 -具有模式验证和数据源集成的专业表单创建
  • 对象删除: ✨ -具有依赖验证和级联支持的安全对象删除
  • 对象修改:向现有对象添加方法、字段和其他组件
  • 物体检查:分析D365对象并提取X++源代码
  • 代码库搜索:通过模式匹配浏览和搜索D365代码库
  • MCP协议:与Claude Desktop、VS Code和其他MCP客户端兼容

建筑

该系统由通过Windows命名管道通信的两个主要组件组成:

MCP X++服务器(Node.js/TypeScript)

  • 实现模型上下文协议(STDIO)
  • 处理对象创建、修改和搜索操作
  • 提供文件浏览和代码库索引
  • 与Claude Desktop和VS Code等MCP客户端兼容

D365元数据服务(C#.NET 4.8)

  • 与微软的D365组件集成
  • 通过VS2022 API处理对象创建和修改
  • 为运行时对象发现提供动态反射
  • 通过命名管道进行通信: mcp-xpp-d365-service

该架构支持从各种MCP兼容客户端进行D365开发,同时保持与现有D365开发工作流程的兼容性。

可用工具

该服务器为D365开发提供了10个专用工具:

  1. 创建xpp_object -创建D365对象(类、表、枚举等)- *注意:表单使用create_form*
  2. create_form - ✨ -具有模式支持和数据源集成的专业表单创建
  3. 删除xpp_object - ✨ -通过依赖验证和缓存一致性安全删除D365对象
  4. 执行对象修改 - ✨ 增强 -基于数组的批处理对象修改- 最佳实践:将同一对象的所有修改分组
  5. 发现_修改_功能 -探索可用的修改方法
  6. findxPp_object -按名称/类型查找特定对象
  7. 搜索对象模式 -支持通配符的模式搜索
  8. inspectxpp_object -X++源代码提取的对象分析
  9. get_current配置 -系统配置和状态
  10. build_object_index -搜索性能的索引管理

先决条件

  • Visual Studio 2022 (社区、专业或企业)
  • Dynamics 365开发工具 适用于Visual Studio 2022
  • Node.js (建议使用最新的LTS版本)
  • .NET Framework 4.8 (通常包含在Windows中)

安装

  1. 克隆存储库
  2. 安装Node.js依赖项: npm install
  3. 运行安装程序以配置VS2022集成: .\tools\build-and-run.ps1 -Action setup
  4. 构建项目: .\tools\build-and-run.ps1 -Action build

用法

启动服务器

使用以下命令运行MCP服务器:

node build/index.js

服务器会自动检测VS2022安装中的D365路径。对于手动配置,请使用:

node build/index.js --xpp-path "C:\path\to\PackagesLocalDirectory"

MCP客户端配置

VS代码

在中配置 .vscode/mcp.json:

{
  "servers": {
    "mcp-xpp-server": {
      "command": "node",
      "args": ["./build/index.js"],
      "cwd": "${workspaceFolder}",
      "type": "stdio"
    }
  }
}

克劳德桌面

添加到Claude Desktop配置文件:

{
  "mcpServers": {
    "mcp-xpp-server": {
      "command": "node",
      "args": ["path/to/mcp_xpp/build/index.js"]
    }
  }
}

工具参考

对象创建

create_xpp_object

使用VS2022服务集成创建D365 F&O对象。

⚠️ 重要提示: 要创建表单,请使用专用 create_form 工具,因为它提供了专门的模式支持和数据源集成。

参数:

  • objectName (string)-D365对象的名称
  • objectType (string)-对象类型(AxClass、AxTable、AxEnum等)- *不包括AxForm*
  • layer (字符串,可选)-应用层(usr、cus、var)
  • outputPath (字符串,可选)-输出目录(默认:“Models”)
  • publisher (字符串,可选)-公司名称(默认值:“YourCompany”)
  • version (字符串,可选)-版本号(默认值:“1.0.0.0”)
  • dependencies (数组,可选)-模型依赖关系
  • properties (对象,可选)-特定于对象的配置

例子:

create_xpp_object({
  "objectName": "MyCustomClass",
  "objectType": "AxClass",
  "layer": "usr"
})

create_form

用于创建D365表单的专用工具,具有高级模式支持和数据源集成。该工具将表单创建和模式发现结合在一个界面中。

参数:

  • mode (字符串,必填)-操作模式:

- "create" -使用模式和数据源创建新表单 - "list_patterns" -发现可用的D365形状图案

  • formName (字符串,可选)-表单名称(当模式=“创建”时需要)
  • patternName (字符串,可选)-要应用的D365表单模式(例如,“SimpleListDetails”、“DetailsMaster”、“Dialog”)
  • patternVersion (字符串,可选)-模式版本(默认:'UX7 1.0')
  • dataSources (array|string,可选)-表单数据源的表名
  • modelName (字符串,可选)-D365型号/包名称(默认:“ApplicationSuite”)

主要特点:

  • 🎯 模式感知:当模式需要时自动添加字段控件(例如,DetailsMaster)
  • 🗄️ 灵活的数据源:支持数组、单个字符串或逗号分隔字符串
  • 🔍 模式发现:列出所有36+可用的D365表格模式及其说明
  • 增强验证:通过智能现场控制创建解决模式验证问题

示例:

// Discover available patterns
create_form({"mode": "list_patterns"})

// Create simple list form with datasource
create_form({
  "mode": "create",
  "formName": "MyCustomerListForm", 
  "patternName": "SimpleListDetails",
  "dataSources": ["CustTable"]
})

// Create DetailsMaster form with multiple datasources
create_form({
  "mode": "create",
  "formName": "MySalesOrderForm",
  "patternName": "DetailsMaster",
  "patternVersion": "UX7 1.0", 
  "dataSources": ["SalesTable", "SalesLine", "CustTable"],
  "modelName": "MyCustomModel"
})

// Create dialog form without datasources
create_form({
  "mode": "create",
  "formName": "MyConfirmationDialog",
  "patternName": "Dialog"
})

技术说明:

  • 当提供数据源时,DetailsMaster、SimpleListDetails和ListPage等模式会自动通过字段控件(RecId、Name、Description、Code)进行增强
  • 模式验证已修复-根据模式要求,可以在有或没有数据源的情况下创建表单
  • 该工具使用直接的VS2022服务集成,以实现最佳的D365兼容性

delete_xpp_object

通过全面的依赖验证和缓存一致性安全删除D365 F&O对象。此工具通过在删除之前验证依赖关系来防止破坏更改。

参数:

  • objectName (string,必填)-要删除的D365对象的名称
  • objectType (字符串,必填)-D365对象类型(AxClass、AxTable、AxForm、AxEnum等)
  • cascadeDelete (boolean,可选)-也删除依赖对象(默认值:false)

主要特点:

  • 🛡️ 依赖性验证:如果其他对象依赖于目标,则防止删除
  • 🗑️ 安全删除:使用D365的ISingleKeyedMetadataProvider。删除以进行适当的清理
  • 🔄 缓存一致性:成功删除后自动更新搜索索引
  • 快速性能:直接集成元数据提供程序以获得最佳速度
  • 🌲 级联支持:可选删除子对象(带零件/控件的表单等)

示例:

// Delete a custom class
delete_xpp_object({
  "objectName": "MyCustomClass",
  "objectType": "AxClass"
})

// Delete a table with cascade (removes dependent field groups, relations, etc.)
delete_xpp_object({
  "objectName": "MyTestTable", 
  "objectType": "AxTable",
  "cascadeDelete": true
})

// Delete a form (will fail if dependencies exist without cascade)
delete_xpp_object({
  "objectName": "MyCustomForm",
  "objectType": "AxForm"
})

响应格式:

{
  "success": true,
  "message": "Successfully deleted object: MyCustomClass (AxClass)",
  "objectName": "MyCustomClass",
  "objectType": "AxClass",
  "cascadeDelete": false,
  "dependenciesRemoved": [],
  "cacheUpdate": "Success",
  "performance": "156ms"
}

⚠️ 安全注意事项:

  • 高风险操作:删除是永久性的,无法撤消
  • 始终验证依赖关系 find_xpp_object 删除前
  • 使用 cascadeDelete: false (默认)以获得最大安全性
  • 首先在开发环境中测试删除
  • 如果存在没有级联标志的依赖关系,工具将安全失败
  • 缓存更新确保删除后立即搜索一致性

常见对象类型:

  • AxClass -X++类和业务逻辑
  • AxTable -数据表和模式
  • AxForm -用户界面表单
  • AxEnum -枚举和值列表
  • AxEdt -扩展数据类型
  • AxView -数据库视图
  • AxQuery -数据查询
  • AxReport -SSRS报告

对象发现

find_xpp_object

通过可选过滤按名称查找X++对象。

参数:

  • objectName (string,必填)-X++对象的名称
  • objectType (字符串,可选)-按对象类型筛选
  • model (字符串,可选)-按D365型号/包装名称筛选

search_objects_pattern

使用通配符模式搜索D365对象。

参数:

  • pattern (字符串,必填)-带通配符(\*,?)的搜索模式
  • objectType (字符串,可选)-按对象类型筛选
  • model (字符串,可选)-按D365型号/包装名称筛选
  • limit (数字,可选)-最大结果(默认值:50)
  • format (字符串,可选)-输出格式:“text”或“json”

inspect_xpp_object

使用多种检查模式分析D365对象。

参数:

  • objectName (string,必填)-X++对象的名称
  • objectType (字符串,可选)-D365对象类型
  • inspectionMode (字符串,可选)-检查级别:

- summary -快速查看收集数量 - properties -所有带有描述的对象属性 - collection -特定收藏项目(需要收藏名称) - xppcode -提取X++源代码(需要codeTarget)

  • collectionName (string,可选)-当inspectionMode=“collection”时需要
  • codeTarget (string,可选)-当inspectionMode='xppcode'时需要:

- methods -提取所有方法源代码 - specific-method -单个方法(需要methodName) - event-handlers -仅限事件处理程序方法

  • methodName (字符串,可选)-当codeTarget='specific-method'时为必填项
  • maxCodeLines (数量,可选)-限制每个方法的源代码行数
  • filterPattern (字符串,可选)-结果的通配符筛选器

示例:

// Get object summary
inspect_xpp_object({"objectName": "CustTable", "inspectionMode": "summary"})

// Extract specific method source code
inspect_xpp_object({
  "objectName": "SalesLine", 
  "objectType": "AxTable", 
  "inspectionMode": "xppcode", 
  "codeTarget": "specific-method", 
  "methodName": "validateWrite"
})

对象修改

execute_object_modification通过批处理增强

使用基于数组的批处理对现有D365对象执行修改方法。 始终使用数组格式 -单个操作使用一个元素的数组。

📋 最佳实践:将同一对象的所有修改分组到一个调用中,而不是进行单独的调用。这提供了更好的性能、错误处理和事务完整性。

参数:

  • objectType (字符串,必填)-D365对象类型(例如,“AxTable”、“AxClass”、“AxForm”)
  • objectName (string,必填)-要修改的现有对象的名称
  • modifications (array,必填)-修改操作数组:

- methodName (string,必填)-要执行的修改方法 - parameters (对象,必填)-方法特定参数,包括: - concreteType (字符串,必填)-discover_modification_ability中的确切类型 - Name (string)-字段/对象名称(使用“name”而不是“fieldName”) - 所需的其他D365特定参数

✅ 特征:

  • 每次操作跟踪:每个操作返回单独的成功/失败状态
  • 详细的错误报告:清除失败操作的验证消息
  • 顺序处理:操作按照时间信息的顺序执行
  • 批量效率:单个服务调用中的多个操作

示例:

单字段(包含一个元素的数组):

execute_object_modification({
  "objectType": "AxTable",
  "objectName": "CustTable",
  "modifications": [
    {
      "methodName": "AddField",
      "parameters": {
        "concreteType": "AxTableFieldString",
        "Name": "MyCustomField",
        "Label": "My Custom Field",
        "HelpText": "Custom field description",
        "SaveContents": "Yes",
        "Mandatory": "No",
        "AllowEditOnCreate": "Yes",
        "AllowEdit": "Yes",
        "Visible": "Yes",
        "AosAuthorization": "None",
        "MinReadAccess": "Auto",
        "IgnoreEDTRelation": "No",
        "Null": "Yes",
        "IsSystemGenerated": "No",
        "IsManuallyUpdated": "No",
        "IsObsolete": "No",
        "GeneralDataProtectionRegulation": "None",
        "SysSharingType": "Duplicate"
      }
    }
  ]
})

一批中有多个字段(首选):

execute_object_modification({
  "objectType": "AxTable",
  "objectName": "CustTable",
  "modifications": [
    {
      "methodName": "AddField",
      "parameters": {
        "concreteType": "AxTableFieldString",
        "Name": "CustomerCategory",
        "Label": "Customer Category",
        "HelpText": "Customer classification category",
        "SaveContents": "Yes",
        "Mandatory": "No",
        "AllowEditOnCreate": "Yes",
        "AllowEdit": "Yes",
        "Visible": "Yes",
        "AosAuthorization": "None",
        "MinReadAccess": "Auto",
        "IgnoreEDTRelation": "No",
        "Null": "Yes",
        "IsSystemGenerated": "No",
        "IsManuallyUpdated": "No",
        "IsObsolete": "No",
        "GeneralDataProtectionRegulation": "None",
        "SysSharingType": "Duplicate"
      }
    },
    {
      "methodName": "AddField", 
      "parameters": {
        "concreteType": "AxTableFieldInt",
        "Name": "CustomerPriority",
        "Label": "Customer Priority",
        "HelpText": "Priority level for customer",
        "SaveContents": "Yes",
        "Mandatory": "No",
        "AllowEditOnCreate": "Yes",
        "AllowEdit": "Yes",
        "Visible": "Yes",
        "AosAuthorization": "None",
        "MinReadAccess": "Auto",
        "IgnoreEDTRelation": "No",
        "Null": "Yes",
        "IsSystemGenerated": "No",
        "IsManuallyUpdated": "No",
        "IsObsolete": "No",
        "GeneralDataProtectionRegulation": "None",
        "SysSharingType": "Duplicate"
      }
    }
  ]
})

📊 响应格式: 该工具返回详细的每次操作结果:

{
  "summary": "2 succeeded, 1 failed (3 total)",
  "targetObject": "AxTable:CustTable",
  "operations": [
    {
      "methodName": "AddField",
      "success": true,
      "processingTime": "371ms",
      "message": "Successfully executed AddField on AxTable:CustTable"
    },
    {
      "methodName": "AddField",
      "success": false,
      "processingTime": "0ms",
      "error": "Parameter validation failed: Missing required parameters"
    }
  ]
}

💡 提示:

  • 使用 discover_modification_capabilities 首先获得精确的参数要求
  • 所有D365表格字段都需要以下参数 SaveContents, Mandatory等等。
  • 将相关修改组合在一起以获得更好的性能
  • 检查调试失败操作的单个操作结果

discover_modification_capabilities

发现D365对象类型的可用修改方法。

参数:

  • objectType (字符串,必填)-要分析的D365对象类型

系统管理

get_current_config

返回全面的服务器配置和状态信息。

build_object_index

构建或更新可搜索对象索引。

参数:

  • objectType (字符串,可选)-要索引的特定对象类型
  • forceRebuild (布尔值,可选)-强制完成重建

支持的对象类型

支持的常见D365对象类型:

  • AxClass -X++类
  • AxTable -数据表
  • AxForm -用户界面表单
  • AxEnum -枚举
  • AxEdt -扩展数据类型
  • AxView -数据库视图
  • AxQuery -数据查询
  • AxReport -SSRS报告
  • Ax菜单项显示 -菜单项
  • AxDataEntityView -OData实体

系统共支持544+种对象类型。

生成脚本

build-and-run.ps1 脚本提供统一的项目管理:

# Setup VS2022 integration
.\tools\build-and-run.ps1 -Action setup

# Build both TypeScript and C# components
.\tools\build-and-run.ps1 -Action build

# Run the MCP server
.\tools\build-and-run.ps1 -Action run -Target mcp

# Run the C# service
.\tools\build-and-run.ps1 -Action run -Target csharp

# Run tests
.\tools\build-and-run.ps1 -Action test

# Clean builds
.\tools\build-and-run.ps1 -Action clean

示例工作流

创建新类

# Create a custom class
create_xpp_object {
  "objectName": "MyBusinessLogic",
  "objectType": "AxClass",
  "layer": "usr"
}

# Add a method to the class
execute_object_modification {
  "objectType": "AxClass",
  "objectName": "MyBusinessLogic",
  "methodName": "AddMethod",
  "parameters": {
    "methodName": "processData",
    "returnType": "void",
    "source": "public void processData() { }"
  }
}

搜索和分析对象

# Find customer-related objects
search_objects_pattern {
  "pattern": "Cust*",
  "objectType": "AxTable",
  "limit": 20
}

# Analyze a specific table
inspect_xpp_object {
  "objectName": "CustTable",
  "objectType": "AxTable",
  "inspectionMode": "summary"
}

# Extract method source code
inspect_xpp_object {
  "objectName": "CustTable",
  "objectType": "AxTable",
  "inspectionMode": "xppcode",
  "codeTarget": "specific-method",
  "methodName": "validateWrite"
}

技术细节

性能特征

  • 对象索引:在约30秒内处理70K+个对象
  • 查询响应时间:大多数操作\<50ms
  • 搜索操作:大型代码库的亚秒级响应
  • 内存使用:优化了基于SQLite的缓存

文件类型支持

  • .xpp -X++源文件
  • .xml -元数据和配置文件
  • .json -配置文件
  • 其他D365开发文件

安全

  • 路径验证阻止目录遍历
  • 操作仅限于配置的D365代码库
  • 资源管理的文件大小限制
  • 所有参数的输入验证

故障排除

常见问题

“找不到VS2022扩展名”

  • 确保VS2022中安装了Dynamics 365开发工具
  • 运行安装脚本: .\tools\build-and-run.ps1 -Action setup

“命名管道连接失败”

  • 检查C#服务是否正在运行
  • 验证Windows防火墙设置
  • 确保。NET Framework 4.8已安装

“找不到对象”错误

  • 构建对象索引: build_object_index
  • 验证D365代码库路径配置
  • 检查指定模型中是否存在该对象

表单的“模式验证失败”

  • 已解决:此问题已在最新版本中修复
  • 具有DetailsMaster等模式的表单现在自动包含必需的字段控件
  • 使用 create_form 工具而不是 create_xpp_object 为了更好地创建表单

“没有数据源的表单创建失败”

  • 大多数模式在没有数据源的情况下都能正常工作(例如,DetailsMaster、Dialog模式)
  • 使用 create_form 随着 "mode": "list_patterns" 查看模式要求
  • 对于大多数模式,数据源是可选的,但在提供时可以增强功能

获取帮助

  • 检查 logs/ 详细错误信息文件夹
  • 使用 get_current_config 验证系统配置
  • 报告GitHub存储库上的问题

贡献

该项目欢迎捐款。拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 通过适当的测试进行更改
  4. 提交拉取请求

请注意,API可能会随着项目的发展而变化。

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

免责声明

本软件按“原样”提供,不提供保修。它仅用于研发目的,不用于生产用途。

重要提示:

  • 需要Visual Studio 2022和D365开发工具
  • 官方不支持与Microsoft API集成
  • 功能可能会在版本之间更改或中断
  • 仅在开发环境中使用,风险自负

通过GitHub存储库报告问题或贡献改进。

目录标签

目录标签

C#Claude开发工具Dynamics365本地部署对象管理X++企业资源规划

支持客户端

Claude DesktopClaudeVS Code

接入字段

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

未说明

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

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明none部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP