关于 S1000D BREX (S1000D Stack)
S1000D BREX 是用于读取项目 BREX 规则并检查 S1000D 数据模块的 MCP 服务。它提供规则详情,并报告 BREX 引用层级中的违规位置。
主要功能
- 01说明 BREX 规则和允许值
- 02查询 SNS 代码及项目值含义
- 03列出允许的插图和多媒体格式
- 04按 BREX 层级检查数据模块
- 05通过 XPath 和行号报告违规
适用场景
- 01编写数据模块前检查项目规则
- 02查找数据模块中的规则违规
- 03查询 SNS 代码或元素允许值
MCP 相关
该 MCP 服务提供说明 BREX 规则、查询 SNS 代码和值、列出记法,以及按 BREX 检查数据模块的工具。它会报告违规项和未解析的 BREX 层级。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
5收录的工具列表 · 更新于 今天
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| brex | string | 否 | 要使用的 BREX:BREX 数据模块的文件路径(.xml),或在 csdbDirs / S1000D_CSDB_DIR / S1000D_SPEC_DIR 中搜索的 DMC(例如 "KENBAIKI-A-00-00-00-00A-022A-D",可省略 "DMC-" 前缀)。省略时,使用在 S1000D_SPEC_DIR 下找到的 S1000D 默认 BREX。 |
| kind | enum | 否 | 要列出的规则类型(默认:全部)。all | structure | notation | nonContext |
| limit | number | 否 | 返回的最大规则数(默认 50,最大 500)。 |
| offset | number | 否 | 要返回的第一条规则的索引(默认 0)。 |
| search | string | 否 | 在 objectPath、objectUse、规则 ID 或值含义中查找的不区分大小写的文本。 |
| context | string | 否 | 仅列出适用于此架构的规则(文件名,例如 "descript"、"proced"、"pm"),并包含通用规则。省略时返回所有上下文的规则。 |
| csdbDirs | array | 否 | 用于按 DMC 搜索数据模块和 BREX 的额外文件夹(除 S1000D_CSDB_DIR 和 S1000D_SPEC_DIR 外)。 |
详细介绍
@shuji-bonji/s1000d-brex-mcp
英文 | 日本語
一个 MCP 服务,可让大模型读取 S1000D® BREX(业务规则交换)数据模块,并根据 BREX 检查数据模块。它会以易于阅读的形式返回项目或组织在 BREX 中编写的内容:哪些元素和属性可以使用、允许哪些值及其含义、标准编号系统(SNS)代码的含义,以及可以使用哪些插图格式。它还会报告数据模块是否遵循这些规则,并指出每项违规的位置。
重要
这是一个个人项目,与 ASD(欧洲航空航天与防务工业协会)无关。S1000D® 是 ASD 的注册商标。 任何软件包或代码仓库均不包含 S1000D 规范、XML 架构、默认 BREX 和官方示例,因为其使用条款不允许再分发。请从 s1000d.org 获取这些文件,并将
S1000D_SPEC_DIR环境变量指向解压后的文件夹。
功能
| 工具 | 说明 |
|---|---|
explain_brex | 列出 BREX 规则。返回目标(XPath)、是否允许使用(禁止、必需或可选)、允许的值及其含义、严重级别,以及规则适用的架构。可通过 kind、context 和 search 缩小列表范围,并使用 offset 和 limit 分批读取 |
lookup_sns | 根据 DMC 或代码返回标准编号系统(SNS)代码所指的内容 |
lookup_value | 返回项目中元素或属性值的含义,以及允许使用的值 |
list_notations | 返回可使用的插图和多媒体格式,并分别列出基础集合以及各架构的新增项和排除项 |
check_against_brex | 根据 BREX 检查数据模块,并返回每项违规的位置(XPath 和行号)、实际值、规则 ID、描述和严重级别。默认情况下会沿着 brexDmRef 链(项目 BREX → … → 默认 BREX)逐层检查 |
不支持的功能
警告
- 不会根据 XML 架构(XSD)进行验证。 架构错误可能会掩盖 BREX 违规,也可能导致误报。请使用
s1000d-verify-mcp中的validate_schema/verify_data_module进行架构验证。- 不会判断是否符合 S1000D。
check_against_brex返回passed: true仅表示在所有可解析层中均未违反可通过机器检查的 BREX 规则。以散文形式编写的nonContextRules会作为manualChecks返回,由人工进行判断。- 不会解读严重级别代码(
brsl01至brsl99)的含义。这些代码由项目定义,因此会原样返回。
说明
某个 BREX 中没有规则,并不代表没有限制。更高层级的 BREX(沿着
brexDmRef追溯,最终到达 S1000D 默认 BREX)或为人编写的业务规则文档可能会对此加以限制。check_against_brex会在unresolvedBrex中报告无法找到的层级。如果此字段不为空,请将结果视为不完整。
配置
| 环境变量 | 说明 |
|---|---|
S1000D_SPEC_DIR | 所获取的 S1000D 发行包的解压文件夹。系统会在此文件夹下搜索默认 BREX(DMC-S1000D-*-04-10-0301-00A-022A-D_*.XML)。也请解压内部的 zip 文件 |
S1000D_CSDB_DIR | 存放项目数据模块的文件夹。可通过 :(Windows 上为 ;)分隔指定多个文件夹。系统会在此处搜索 DMC 指定的 BREX 及链中的各层 |
也可以通过工具参数 csdbDirs 添加文件夹。BREX 可以通过文件路径或 DMC(DMC- 前缀可选)指定,也可以不指定(使用默认 BREX)。
Claude Desktop / Claude Code 配置示例
{
"mcpServers": {
"s1000d-brex": {
"command": "npx",
"args": ["-y", "@shuji-bonji/s1000d-brex-mcp"],
"env": {
"S1000D_SPEC_DIR": "/path/to/s1000d/issue-7",
"S1000D_CSDB_DIR": "/path/to/project/csdb"
}
}
}
}
检查规则
检查遵循 S1000D Issue 7 第 4.10.2 章(BREX 数据模块)和第 7.9 章(业务规则处理)。详情请参阅 @shuji-bonji/s1000d-core 的 README。
| 项目 | 处理方式 |
|---|---|
allowedObjectFlag | 0 = 目标存在时视为违规,1 = 目标不存在时视为违规,2 = 若目标存在,则根据 objectValue(单值/范围/模式)检查其值 |
rulesContext | 应用架构与目标数据模块匹配的区块,以及通用区块 |
notationRuleList | DOCTYPE 中声明的 NOTATION 不在允许集合中时视为违规 |
| 层 | 分别检查每一层;不合并各层。仅当没有任何一层存在违规且没有未解析的引用时,passed 才为真 |
开发
npm install
npm run build
npm test # runs on self-made test data only
npm run test:spec # uses the S1000D distribution (set its location with S1000D_SPEC_DIR)
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。