Token导航 LogoToken导航TokenDH.com
Match PDT MCP logo
运维云端stdio官方级别未说明来源级核验

Match PDT MCP

MCP Server

用于HYDAC PDT .hdb项目文件的MCP服务器,支持查询和修改CAN消息、信号、错误定义及ECU配置。

工具数

25

提示词数

0

GitHub Stars

0

资源数

0
C#Claude云端部署Claude

安装说明

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

作者 / 组织

Matthieu-0xSense

提供方

Matthieu-0xSense

最后核验

2026/5/17 20:20

快速接入

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

命令预览

pip install "mcp[cli]"

详细介绍

MATCH PDT MCP服务器

HYDAC PDT的MCP服务器 .hdb 项目文件。查询和修改CAN消息、信号、错误定义和ECU配置。

运作原理

.hdb 文件是一个包含XML配置文件和二进制文件的ZIP存档 .dat 文件夹。服务器:

  1. 将XML文件(去除空填充)解析为索引查找字典
  2. 反序列化 .dat 文件通过a。使用PDT程序集的NET帮助程序
  3. 通过MCP stdio传输(延迟加载、缓存)提供读/写查询
  4. 对于写入:创建 .hdb.bak 备份、就地修改XML、重写ZIP

为什么使用它而不是读取生成的代码?

PDT生成C代码 AUTO_CEN_* 文件夹——结构体、枚举、配置数组。对于 CAN消息、信号和错误定义,MCP服务器更快、更方便。对于其他区域(引脚、块),生成的代码仍然是更好的源代码。

这有什么好处:

  • CAN信号查找 --一个查询中的缩放公式、位位置、单位和父消息。在生成的代码中,这分散在 App_CanSigRec.c, Cfg_CRcv.c, Cfg_CSnd.c.
  • 信号搜索 --在所有消息中按名称子字符串查找信号,可选择按消息过滤。
  • 消息详细信息 --CAN ID、DLC、循环时间、方向和所有连接在一起的信号。在生成的代码中,您将交叉引用多个文件。
  • 错误定义 --SPN、描述、严重性、去抖动时间和阈值。在生成的代码中,这被拆分为 App_ErrDefine.hCfg_Err.c 没有PDT元数据。
  • XML修改 --直接编辑CAN消息、信号、数据库和其他基于XML的配置。
  • 始终为最新 --阅读 .hdb 直接,因此即使代码尚未重新生成,它也反映了最新的PDT保存。

仍然需要生成代码的内容:

  • 引脚配置(project.dat 使用复杂。无法在外部加载的.NET类型。NET框架4.8)
  • 数据库中的软件块和详细参数条目

还可以修改什么(binary.dat--通过.NET助手):

  • 中的数据库变量 project.dat --在NvMem/RAM数据库中添加、更新、删除参数
  • 自定义错误定义——使用错误模板、检测方法和ERR TBlocks添加自定义错误(修改两者 project.datErrors.dat 原子)

无法修改的内容:

  • ISOBUS配置(Isobus.dat)

安装

先决条件

必修的:

  • Python 3.10+ mcp 包裹

可选(适用于.dat文件工具):

  • .NET SDK 8.0+(构建针对.NET Framework 4.8的帮助程序)
  • 已安装HYDAC PDT(提供.NET程序集 .dat 反序列化)

没有。NET SDK,除 list_errorsget_error --它们返回错误消息,而不是使服务器崩溃。

pip install "mcp[cli]"

建造。NET帮助程序(可选)

如果不需要错误定义工具,请跳过此步骤(list_errors, get_error).

cd Match_PDT_MCP/dotnet-helper
dotnet build -c Release

使用Claude Code注册(每个项目)

添加a .mcp.json 项目根目录中的文件:

{
  "mcpServers": {
    "Match_PDT_MCP": {
      "type": "stdio",
      "command": "python",
      "args": [
        "C:/Match/Tools/MCP/Match_PDT_MCP/server.py"
      ]
    }
  }
}

服务器会自动发现:

  • HDB路径 --首先 *.hdb 工作目录中的文件
  • PDT_DIR --与项目的PDT版本相匹配(来自 info.xml),退回到中安装的最新版本 C:\Program Files\Hydac\Project Definition Tool\

如果项目有多个 .hdb 文件或非标准位置,显式设置环境变量:

{
  "mcpServers": {
    "Match_PDT_MCP": {
      "type": "stdio",
      "command": "python",
      "args": ["C:/Match/Tools/MCP/Match_PDT_MCP/server.py"],
      "env": {
        "HDB_PATH": "C:/Match/Projects/MyProject/SpecificFile.hdb",
        "PDT_DIR": "C:/Program Files/Hydac/Project Definition Tool/2.12.100"
      }
    }
  }
}

相同 .mcp.json 适用于任何MATCH项目——只需将其放入项目根目录中,Claude Code就会自动启动服务器。

可用工具

CAN读取工具(来自XML)

工具参数说明
list_can_buses*(无)*列出所有CAN总线,包括消息计数、ECU ID和发送/接收缓冲区ID。将公交车号码与其他工具一起使用。
get_can_messagename: str, can_id: int按名称(不区分大小写,子字符串匹配)或CAN ID(十进制)查找消息。返回详细信息+所有信号+方向。
list_can_messagesdirection: str, name_filter: str, bus: int列出所有消息。按方向过滤(send/receive)、名称子字符串或总线号。
get_can_signalname: str, message: str按名称查找信号(不区分大小写)。返回缩放、位、单位、父消息。使用 message 以消除重复。
search_can_signalsquery: str, message: str按名称子字符串搜索信号。可选择限制为特定消息中的信号。

CAN写入工具

工具参数说明
add_can_messagename, can_id, direction, dlc, cycle_time, signals, bus将带有信号的完整CAN消息添加到特定总线。在中创建条目 CanMessages.xml, CanMessageEcuLinks.xml,以及 CanSignals.xml.创建 .hdb.bak 在第一次写入之前进行备份。

add_can_message 细节:

  • name (必填):消息名称,例如。 "VcuSendTestData"
  • can_id (必填):CAN ID为十进制。如果大于0x7FF,则扩展帧
  • direction: "SendCyclically" (默认), "SendEventBased",或 "Receive"
  • dlc:数据长度代码,0-8(默认值8)
  • cycle_time:循环时间(毫秒)(默认值100)
  • signals:逗号分隔的信号定义为 name:startbit:sizebits
  • bus:总线编号,1索引(默认1)。使用 list_can_buses 查看可用的巴士

总线ID、ECU ID和发送/接收缓冲区ID是从HDB动态发现的,没有硬编码的项目特定常量。这意味着服务器适用于任何MATCH项目,包括多总线项目。

例子:

add_can_message(
    name="VcuSendTestData",
    can_id=419365500,
    direction="SendCyclically",
    dlc=8,
    cycle_time=100,
    signals="testValue:0:16,status:16:8,mode:24:4",
    bus=1
)

这将创建:

  • 总线1上的消息定义(CAN ID 0x18FF017C,扩展,Intel字节顺序)
  • ECU与该总线的正确发送缓冲区连接
  • 3个信号: testValue (位0处为16位), status (位16处为8位), mode (第24位为4位)

重要--PDT中的消息块分配:

创建的新邮件的使用情况与 direction 论点(Receive, SendCyclically,或 SendEventBased)--当前PDT版本在项目加载时拒绝任何其他值。但是,CSND/CRCV软件块(存储在 project.dat 如。NET二进制序列化) 不能 仅从XML创建,因此在PDT处理之前,消息仍然不完整。要完成消息:

  1. 在PDT中打开项目
  2. 转到消息→ 网络 标签
  3. 重新选择 用法 (关闭并返回 TXC for send/ RXC 接收)
  4. PDT自动创建消息块

在此步骤之后,消息已完全配置,代码生成将包括 gCSnd_t* / gCRcv_t* 结构。

视觉漫游:

添加来自Claude Code的CAN消息:

Claude Code adding a CAN message

PDT中的结果消息:

CAN message in PDT

数据库和ECU工具(通过.NET助手从XML+.dat)

工具参数说明
list_databases*(无)*列出NvMem/RAM参数数据库及其地址和设置。
list_db_variablesdatabase: str列出数据库中的所有变量(如果为空,则列出所有数据库),包括类型、默认值、范围和单位。
get_db_variabledatabase: str, variable: str获取单个变量的详细信息,包括访问级别和数据集值。
add_db_variabledatabase, name, type, default, min, max, unit, description向数据库添加新变量。从同一类型的现有变量克隆。创建 .hdb.bak 备份。
update_db_variabledatabase, variable, default, min, max, unit, description更新现有变量的属性。仅更改提供的字段。
delete_db_variabledatabase: str, variable: str从数据库中删除变量。
get_ecu_config*(无)*ECU应用程序配置:循环时间、监视器、协议、协议参数、项目信息。

错误工具(通过.NET助手从.dat获取——需要.NET SDK 8.0+和HYDAC PDT)

这些工具是可选的。没有。NET SDK,返回错误消息;所有其他工具仍然可用。

工具参数说明
list_errorsspn_filter: int, description_filter: str列出错误定义,包括SPN、描述、严重性、去抖动、阈值。
get_errorspn: int按SPN编号查找特定错误。返回完整详细信息。
list_error_templates*(无)*列出自定义错误块模板。
list_detection_methodsfilter: str列出带有位位置和FMI值的检测方法。
list_fmi_definitions*(无)*列出带有GUID的FMI和FMI扩展定义。
add_custom_errortemplate, dm_name, bit, spn, block_name, description, severity, fmi, fmi_extended,deboze/threshold参数添加带有检测方法、错误模板和ERR TBlock的自定义错误。适用于有或没有现有自定义错误的项目。

add_custom_error 细节:

在PDT项目中创建完整的自定义错误条目(原子操作--修改两者 project.datErrors.dat).创建 .hdb.bak 在第一次写入之前进行备份。

  • template (必填):错误模板/块名称,例如。 "Error index us"。如果未找到,则创建新模板。
  • dm_name (必填):检测方法名称,例如。 "DM_US_HINDEX_EOB"。必须是唯一的。
  • bit (必填):块内的位位置(0-7)。
  • spn (必填):SPN编号。在所有错误中必须是唯一的。
  • block_name:软件错误块名称,例如。 "ERR_INDEX_US"。创建新模板时需要。用作代码生成的TBlock名称。
  • description:错误描述文本。
  • severity:1=信息,3=警告(默认),5=严重。
  • fmi:FMI名称,默认值 "FMI_31_CONDITION_EXISTS".
  • fmi_extended:FMI扩展,默认 "FMIEX_GLOBAL".
  • 去抖动/阈值: set_debounce_ms (500), release_debounce_ms (0), set_threshold (500), release_threshold (1000).

创建内容:

  1. 错误模板Custom.ErrorTemplates (如果是新的)
  2. 检测方法条目Custom.DetectionMethods 以及模板的 Error 列表
  3. 错误输入Errors.dat 具有SPN、严重性、FMI、去抖动设置
  4. ERR TBlock 具有8个检测方法槽(位0-7)、块参数(SW_MODULE、block_NAME、ERROR_COUNT)和标准库ERR蓝图
  5. 模板到TBlock链接 通过 LinkedBlockIds

当项目没有现有的ERR块时,该工具会自动发现具有ERR块的兄弟项目(在 C:\Match\Projects\)并从那里克隆块结构,包括TBlockParamSections和TDetectionMethods。

例子:

add_custom_error(
    template="Error test dummy",
    dm_name="DM_TEST_DUMMY_ALARM",
    bit=0,
    spn=2000,
    block_name="ERR_TEST_DUMMY",
    description="Dummy test alarm for validation",
    severity=3
)

XML写入工具

工具参数说明
list_hdb_xml_files*(无)*列出HDB存档中所有XML文件的大小。
read_hdb_xmlfile: str, xpath: str读取原始XML内容,可选择通过XPath过滤。
update_hdb_xmlfile, xpath, action, tag, text, attributes修改XML元素: set_text, set_attr, add_child, remove.创建 .hdb.bak 备份。

实用工具

工具参数说明
search_hdbpattern: str正则表达式搜索HDB存档中的所有XML内容(最多100个结果)。
reload_hdb*(无)*在PDT中保存后强制重新解析所有数据。

HDB档案结构

XML文件(通过Python读/写)

文件内容
CanMessages.xmlCAN消息定义(ID、DLC、循环时间、字节顺序)
CanSignals.xml信号定义(比特位置、缩放、单位、最小/最大)
CanMessageEcuLinks.xml每条消息的发送/接收方向、ECU分配和缓冲块(用于动态总线发现)
DatabaseLists.xmlNvMem/RAM数据库布局
EcuApplications.xmlECU配置(循环时间、监视器)
Protocols.xml协议实例(MST、ISO总线)
ProtocolParameters.xml协议设置(源地址、缓冲区配置)
PinEcuApplicationLinks.xmlI/O引脚映射(仅限GUID)
info.xmlPDT版本和文件格式

二进制.dat文件(通过.NET助手)

文件状态内容
Errors.dat读+写错误定义(SPN、严重性、阈值、反应)。自定义错误可以通过以下方式添加 add_custom_error.
CompileConfig.dat精心阅读构建模式、日志级别、标志
Isobus.dat精心阅读ISOBUS配置
project.dat读+写主要项目数据(引脚、块、FMI定义)。数据库变量是读/写的。
所有.dat文件通用转储通过以下方式进行完整JSON转储 dump / dump-all 命令

HDB差异工具

比较两个 .hdb 文件语义:

python hdb_diff.py   [--output report.md]

比较所有XML文件(按ID/名称在元素级别)和所有.dat文件(JSON深度差异)。输出一个标记报告,显示添加/删除/更改的元素。

局限性

  • 大多数 .dat 文件是只读的project.dat (数据库变量、自定义错误/模板)和 Errors.dat (错误条目)支持回写。通用的 dump 命令可以将所有.dat文件读取为JSON进行差异化。
  • PDT版本匹配 --服务器会自动将PDT安装与项目的版本(从 info.xml).如果未安装确切版本,它将回退到最新可用版本并记录警告。
  • ERR块克隆 --当向没有现有ERR块的项目添加自定义错误时,该工具会在兄弟项目中搜索要从中克隆结构的ERR块。如果没有找到参考项目,则仍然会创建错误模板和检测方法,但不会创建TBlock。
  • 引脚名称解析 需要通过以下方式交叉引用GUID project.datThe dump project.dat 命令现在公开引脚数据。
  • 错误GUID字段 (Fmi、检测方法、机器功能、受限模式)中的参考对象 project.dat 无法解析为名称。
  • 信号名称重复 --许多信号在不同的消息中共享相同的名称。使用 message 参数在 get_can_signal 为了消除歧义。
  • CAN消息块add_can_message 无法创建CSND/CRCV软件块(存储在 project.dat 二进制格式)。新消息使用Usage编写= Receive / SendCyclically / SendEventBased 匹配 direction arg,但用户仍必须重新触摸PDT的“网络”选项卡中的“使用”字段,以便PDT生成消息块。

依赖项

必修的:

  • Python 3.10+
  • mcp 包装(pip install "mcp[cli]")

可选(用于.dat文件工具和diff):

  • .NET SDK 8.0+(用于构建辅助工具)
  • HYDAC PDT安装(提供用于反序列化的.NET程序集)

免责声明

本项目与HYDAC International GmbH没有任何关联或认可。

该软件的创建不是为了与HYDAC项目定义工具(PDT)或任何其他商业软件竞争。它是一个实用程序,可以帮助使用MATCH控制器的开发人员以编程方式与他们的项目文件进行交互。

.dat文件功能需要安装HYDAC PDT——此项目不包括或重新分发任何HYDAC专有文件。

目录标签

目录标签

C#Claude云端部署CAN通信本地部署ECU配置错误定义XML解析二进制数据处理

支持客户端

Claude

接入字段

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

stdio

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

none

工具数量(toolCount,工具数)

25

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdionone部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP