S1000D Verify (S1000D Stack) について
S1000D Verifyは、S1000DデータモジュールのXML形式、XSD、BREXルール、参照を検査するMCPサーバーです。CSDBを確認するチーム向けに根拠と統合ステータスを返しますが、適合性そのものは判定しません。
主な機能
- 01XML形式とXSDの検査
- 02BREXルールチェーンの検査
- 035種類の参照先の解決
- 04CSDBフォルダーの一括検証
- 05各段階の詳細とステータス出力
活用シーン
- 01データモジュールのXSDエラー特定
- 02BREXや参照の問題確認
- 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
英語 | 日本語
LLM が S1000D® データモジュールの検査状況を、根拠とともに把握できるようにする MCP サーバーです。XML スキーマ(XSD)に対する検証、BREX(Business Rules Exchange)に対するチェック、参照(dmRef、pmRef、ICN、internalRef、applicRefId)の解決という 3 つの手順を実行し、その結果を 1 つの検証ステータス(verification)にまとめて返します。この検証ステータスは、s1000d-reader-mcp がコンテンツ応答に埋め込むものと同じ形式です。
重要
これは個人プロジェクトであり、ASD(欧州航空宇宙・安全保障・防衛産業協会)とは無関係です。S1000D® は ASD の登録商標です。 S1000D 仕様、XML スキーマ、デフォルトの BREX、および公式サンプルは、利用条件で再配布が認められていないため、いずれのパッケージやリポジトリにも含まれていません。XSD 検証とデフォルトの BREX に対するチェックを実行するには、s1000d.org からご自身で入手し、展開したフォルダーを
S1000D_SPEC_DIR環境変数に指定してください。
このツールでできること
| ツール | 説明 |
|---|---|
verify_data_module | 1 つのデータモジュールを整形式チェック → XSD → BREX チェーン → 参照の順に検証し、verification(検証ステータス)と各手順の詳細(XSD 違反の行番号、BREX 違反の場所、解決できない参照とその理由)を返します |
validate_schema | XSD 検証のみを実行します。使用する XSD は xsi:noNamespaceSchemaLocation にあるファイル名から選択し、S1000D_SPEC_DIR 配下の xml_schema_flat/ から検索します。イシューは brex.xsd の先頭にある Issue number: 行から読み取ります |
check_references | 5 種類の参照(dmRef / pmRef / ICN / internalRef / applicRefId)を収集し、それぞれの参照先が存在するかどうかを理由とともに返します。仕様書の章への dmRef(モデル識別コード S1000D)は参照切れではないため、別途報告されます |
verify_csdb | フォルダー内の CSDB オブジェクト(デフォルトでは DMC と PMC)を 1 回の実行で検証し、各オブジェクトの検証ステータスと件数の概要を返します。結果は 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 | すべてのレイヤーで違反 0 件 / 違反が見つかった / 解決できない BREX または評価できないルールがある / スキップ |
references.state | resolved / unresolved / not-run | 未解決の参照 0 件 / 未解決の参照が見つかった / スキップ |
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 と同じ関数を呼び出すため、2 つのサーバーの結果は一致します。
開発
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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。