项目简介 MCP X++ 代码库服务器是一个基于Model Context Protocol (MCP) 构建的后端应用,专为Microsoft Dynamics 365 Finance and Operations (D365 F&O) X++开发人员设计。它允许开发者通过任何兼容MCP的客户端(如Claude Desktop、VS Code的MCP扩展或自定义自动化脚本)远程管理D365对象,实现代码库的对象创建、修改、发现和索引等功能,极大地提升了开发效率和自动化能力。
主要功能点
- D365对象管理: 支持创建、修改和发现553+种D365 F&O对象类型,包括类(Classes)、表(Tables)、表单(Forms)、枚举(Enums)等。
- 代码库探索: 浏览和搜索D365代码库中的对象,支持模式匹配搜索。
- MCP协议集成: 通过标准的JSON-RPC协议与LLM客户端通信,提供上下文信息和工具调用能力。
- VS2022服务集成: 利用C# .NET后端直接集成Visual Studio 2022的D365开发工具API,确保操作的兼容性和性能。
- 高性能索引: 基于SQLite构建高效的对象索引,实现毫秒级查询响应,支持70,000+对象的快速检索。
- 双重传输支持: 支持STDIO (用于本地IDE集成) 和HTTP (用于外部服务) 两种通信传输方式。
安装步骤
- 安装前置条件:
- Visual Studio 2022: 安装社区版、专业版或企业版。
- Dynamics 365 Development Tools: 在Visual Studio 2022中安装D365开发工具。
- Node.js: 安装最新稳定版本。
- .NET Framework 4.8: 通常Windows系统自带。
- 克隆仓库:
git clone https://github.com/ccampora/mcp_xpp.git cd mcp_xpp - 一键设置与运行:
使用提供的PowerShell脚本可以自动完成依赖安装、项目构建和MCP服务器启动。
这个命令会自动:.\tools\build-and-run.ps1 -Action all- 检测您的Visual Studio 2022安装和D365开发工具路径。
- 更新项目文件以匹配您的机器路径。
- 构建Node.js MCP服务器和C#元数据服务。
- 启动MCP服务器。
MCP客户端配置 MCP客户端(如Claude Desktop或VS Code的MCP扩展)需要配置启动MCP X++服务器的命令和参数,以便与其建立连接。以下是典型的配置示例:
-
服务器名称 (Server Name): 'mcp-xpp-server'
-
启动命令 (Command): 'node'
-
命令参数 (Arguments):
- './build/index.js':MCP服务器的主入口文件。
- '--http-port 3001':可选,启用HTTP传输并指定端口。
- '--http-host 0.0.0.0':可选,指定HTTP监听地址。
- '--no-stdio':可选,禁用STDIO传输。
- '--xpp-path "C:\D365\PackagesLocalDirectory"':可选,D365代码库的根目录,通常会自动检测。
- '--xpp-metadata-folder "C:\CustomMetadata"':可选,自定义元数据输出目录,通常会自动检测。
- '--vs2022-extension-path "C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\Extensions{GUID}"':可选,Visual Studio 2022 D365扩展的基础目录,通常会自动检测。
示例配置(假设已在VS Code的'.vscode/mcp.json'中配置):
{ "servers": { "mcp-xpp-server": { "command": "node", "args": [ "./build/index.js", "--http-port", "3001", "--http-host", "0.0.0.0" ], "cwd": "${workspaceFolder}", "type": "stdio" } }, "inputs": [] }- 'command': 'node' (Node.js运行时)
- 'args': '["./build/index.js", "--http-port", "3001", "--http-host", "0.0.0.0"]' (服务器启动脚本及其参数,这里同时启用了STDIO和HTTP传输)
- 'cwd': '${workspaceFolder}' (工作目录,通常是仓库根目录)
- 'type': 'stdio' (主要通信类型)
基本使用方法 一旦服务器启动并被MCP客户端连接,您就可以通过LLM调用以下工具来管理D365对象:
- 获取服务器配置:
调用此工具可查看D365路径、服务状态、已索引对象统计等信息。get_current_config- 要查看所有可用的D365对象类型,请使用 'get_current_config(objectTypeList=true)'。
- 构建对象索引:
首次使用或代码库发生重大变更后,运行此工具以构建或更新对象索引,提高搜索性能。build_object_index - 搜索D365对象:
使用模式匹配搜索类、表、表单等D365对象。支持通配符'*'和'?'。search_objects_pattern(pattern="Cust*", objectType="AxClass", limit=10)- 要以JSON格式获取D365对象结构树,请使用 'search_objects_pattern(pattern="*", model="ApplicationSuite", format="json")'。
- 发现对象修改能力:
在修改对象之前,使用此工具发现特定D365对象类型(如AxTable)支持哪些修改方法(如AddField, AddMethod),以及所需参数。discover_modification_capabilities(objectType="AxTable") - 创建D365对象:
创建新的D365对象。例如,创建一个名为'MyCustomClass'的X++类。create_xpp_object(objectName="MyCustomClass", objectType="AxClass", layer="usr") - 修改D365对象:
对现有D365对象执行修改操作。例如,向'CustTable'添加一个字符串字段。注意'concreteType'参数是关键,必须使用'discover_modification_capabilities'工具发现的精确类型名称。execute_object_modification(objectType="AxTable", objectName="CustTable", methodName="AddField", parameters={"fieldName": "MyCustomField", "concreteType": "AxTableFieldString", "label": "My Custom Field"})
信息
分类
商业系统