关于 S1000D Verify (S1000D Stack)
S1000D Verify 是面向 S1000D 数据模块的 MCP 服务,按顺序检查 XML 格式、XSD、BREX 链和引用,并汇总为单一验证状态。适合需要审查 CSDB 内容的团队;机器检查结果不等同于规范符合性判定。
主要功能
- 01检查 XML 格式与 XSD
- 02检查 BREX 规则链
- 03解析五类引用目标
- 04批量验证 CSDB 文件夹
- 05输出分步问题与验证状态
适用场景
- 01定位数据模块的 XSD 错误
- 02检查 BREX 规则和引用问题
- 03汇总文件夹中对象的验证状态
MCP 相关
该项目是 MCP 服务,向客户端提供数据模块验证、XSD 检查、引用检查、CSDB 批量验证和模式列表工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 今天
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| xml | string | 否 | 作为 XML 字符串的文档(可替代路径;最大 5 MB)。 |
| path | string | 否 | 要检查的数据模块(或 PM)的文件路径。 |
| skip | array | 否 | 要跳过的步骤。跳过的步骤会以状态 "not-run" 报告。 |
| csdbDirs | array | 否 | 用于搜索被引用的数据模块、出版物模块、ICN 文件和 BREX 的额外 CSDB 文件夹(除 S1000D_CSDB_DIR 外;BREX 也会在 S1000D_SPEC_DIR 下搜索)。 |
| maxSchemaErrors | number | 否 | 返回的 XSD 错误数上限(默认 100)。始终会报告总数。 |
| maxUnresolvedRefs | number | 否 | 未解析引用的返回上限(默认值为 200)。 |
| maxViolationsPerLayer | number | 否 | 每层 BREX 违规项的返回上限(默认值为 200)。 |
详细介绍
@shuji-bonji/s1000d-verify-mcp
English | 日本語
一个 MCP 服务,可让大模型通过证据了解 S1000D® 数据模块的检查进度。它会执行三个步骤——根据 XML 架构(XSD)进行验证、根据 BREX(业务规则交换)进行检查,以及解析引用(dmRef、pmRef、ICN、internalRef 和 applicRefId)——并将结果合并为单一验证状态(verification)返回。此验证状态的结构与 s1000d-reader-mcp 在内容响应中嵌入的验证状态相同。
重要
这是一个个人项目,与 ASD(欧洲航空航天与国防工业协会)无关。S1000D® 是 ASD 的注册商标。 由于使用条款不允许再分发,任何软件包或代码库均不包含 S1000D 规范、XML 架构、默认 BREX 和官方示例。如需运行 XSD 验证和默认 BREX 检查,请自行从 s1000d.org 获取,并将
S1000D_SPEC_DIR环境变量指向解压后的文件夹。
功能
| 工具 | 描述 |
|---|---|
verify_data_module | 按格式良好性 → XSD → BREX 链 → 引用的顺序验证一个数据模块,并返回 verification(验证状态)以及各步骤的详细信息(XSD 违规的行号、BREX 违规的位置、未解析的引用及其原因) |
validate_schema | 仅运行 XSD 验证。根据 xsi:noNamespaceSchemaLocation 中的文件名选择要使用的 XSD,并在 S1000D_SPEC_DIR 下的 xml_schema_flat/ 中查找。版本通过读取 brex.xsd 顶部的 Issue number: 行来确定 |
check_references | 收集 5 种引用(dmRef / pmRef / ICN / internalRef / applicRefId),并返回每个目标是否存在及其原因。指向规范某一章节(模型识别代码为 S1000D)的 dmRef 并非损坏的引用,因此会单独报告 |
verify_csdb | 在一次运行中验证文件夹中的 CSDB 对象(默认包括 DMC 和 PMC),并返回每个对象的验证状态及计数汇总。使用 offset / limit 分批读取结果,并通过 reportPath 将详细信息写入 JSON |
list_schemas | 返回 S1000D_SPEC_DIR 下找到的 xml_schema_flat/ 文件夹列表(版本、XSD 数量、架构名称)。可用于调查 schema-not-found 的原因 |
验证状态(verification)
| 字段 | 值 | 含义 |
|---|---|---|
schema.state | valid / invalid / schema-not-found / not-run | 找到 XSD 并验证通过,违规数为 0 / 发现违规 / 未找到 XSD(原因见 reason)/ 因 skip 而跳过 |
brex.state | passed / violations / incomplete / not-run | 所有层级均无违规 / 发现违规 / BREX 未解析或存在无法评估的规则 / 已跳过 |
references.state | resolved / unresolved / not-run | 无未解析引用 / 发现未解析引用 / 已跳过 |
schema-not-found 不等于 valid。这表示未运行 XSD 验证。
不执行的操作
警告
- 它不会判定是否符合 S1000D。
schema: valid和brex: passed仅表示未发现违反 XSD 和可由机器检查的 BREX 规则的错误。nonContextRules(以散文形式编写的协议)会作为manualChecks返回,由人工作出判断。项目的业务规则文档不在任何工具的范围内。- 它不会解释 BREX 规则或值的含义。这是
s1000d-brex-mcp中explain_brex/lookup_value的职责。严重性级别代码(brsl01到brsl99)会原样返回。- 它不会评估适用性(内容适用于哪个产品)。
check_references只检查applicRefId的目标是否存在。适用性评估由s1000d-reader-mcp完成。
说明
如果文档违反 XSD,元素的位置可能与规范规定的位置不同,因此可能会错误地报告 BREX 违规,也可能会漏报。当
schema.state为invalid时,请仅将 BREX 结果视为大致参考(响应中的_notes也会说明这一点)。
配置
| 环境变量 | 描述 |
|---|---|
S1000D_SPEC_DIR | 你解压获取的 S1000D 发行包的文件夹。系统会在此文件夹下查找 XSD(xml_schema_flat/;请先解压内层的“XML Schema Package” zip 文件)和默认 BREX(DMC-S1000D-*-04-10-0301-00A-022A-D_*.XML)。不会使用数据字典中的 XSD 副本(其中的导入使用绝对 URL,无法离线解析) |
S1000D_CSDB_DIR | 存放项目数据模块的文件夹。可以指定多个文件夹,并以 : 分隔(Windows 上使用 ;)。系统会在此查找引用的 DM、PM 和 ICN 文件,以及引用链中间的 BREX |
也可以通过工具参数 csdbDirs 添加文件夹。
Claude Desktop / Claude Code 配置示例
{
"mcpServers": {
"s1000d-verify": {
"command": "npx",
"args": ["-y", "@shuji-bonji/s1000d-verify-mcp"],
"env": {
"S1000D_SPEC_DIR": "/path/to/s1000d/issue-7",
"S1000D_CSDB_DIR": "/path/to/your/csdb"
}
}
}
}
工作原理
所有验证逻辑都位于共享库 @shuji-bonji/s1000d-core 中;此服务仅负责解析参数和定义响应结构。XSD 验证使用 libxml2-wasm(libxml2 的 WebAssembly 构建版本),每个 XSD 只编译一次并重复使用,因此验证 Issue 7 的 106 个官方示例用时不到 0.5 秒。BREX 检查调用与 s1000d-brex-mcp 相同的函数,因此两个服务的结果一致。
开发
npm install
npm test # runs with self-made test data only
npm run test:spec # uses the distribution you obtained (set the location with S1000D_SPEC_DIR; default ../../specs/s1000d/issue-7)
npm run build && S1000D_SPEC_DIR=/path/to/issue-7 npm start # starts over stdio
许可证
MIT。S1000D® 是 ASD 的注册商标。本软件与 ASD 无关,也不包含规范、架构或官方示例。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。