项目简介 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 (用于外部服务) 两种通信传输方式。

安装步骤

  1. 安装前置条件:
    • Visual Studio 2022: 安装社区版、专业版或企业版。
    • Dynamics 365 Development Tools: 在Visual Studio 2022中安装D365开发工具。
    • Node.js: 安装最新稳定版本。
    • .NET Framework 4.8: 通常Windows系统自带。
  2. 克隆仓库:
    git clone https://github.com/ccampora/mcp_xpp.git
    cd mcp_xpp
  3. 一键设置与运行: 使用提供的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对象:

  1. 获取服务器配置:
    get_current_config
    调用此工具可查看D365路径、服务状态、已索引对象统计等信息。
    • 要查看所有可用的D365对象类型,请使用 'get_current_config(objectTypeList=true)'。
  2. 构建对象索引:
    build_object_index
    首次使用或代码库发生重大变更后,运行此工具以构建或更新对象索引,提高搜索性能。
  3. 搜索D365对象:
    search_objects_pattern(pattern="Cust*", objectType="AxClass", limit=10)
    使用模式匹配搜索类、表、表单等D365对象。支持通配符'*'和'?'。
    • 要以JSON格式获取D365对象结构树,请使用 'search_objects_pattern(pattern="*", model="ApplicationSuite", format="json")'。
  4. 发现对象修改能力:
    discover_modification_capabilities(objectType="AxTable")
    在修改对象之前,使用此工具发现特定D365对象类型(如AxTable)支持哪些修改方法(如AddField, AddMethod),以及所需参数。
  5. 创建D365对象:
    create_xpp_object(objectName="MyCustomClass", objectType="AxClass", layer="usr")
    创建新的D365对象。例如,创建一个名为'MyCustomClass'的X++类。
  6. 修改D365对象:
    execute_object_modification(objectType="AxTable", objectName="CustTable", methodName="AddField", parameters={"fieldName": "MyCustomField", "concreteType": "AxTableFieldString", "label": "My Custom Field"})
    对现有D365对象执行修改操作。例如,向'CustTable'添加一个字符串字段。注意'concreteType'参数是关键,必须使用'discover_modification_capabilities'工具发现的精确类型名称。

信息

分类

商业系统