S1000D Reader (S1000D Stack) について
S1000D Readerは、S1000Dのデータモジュールと出版物モジュールを生XMLではなく構造化コンテンツとして提示するMCPサーバーです。文書要素を保持し、製品への適用性を評価して検証状況を返すため、技術文書チームに適しています。
主な機能
- 01文書階層と構造化コンテンツの読み取り
- 02手順・警告・表・図版の保持
- 03製品に対するブロックの適用性評価
- 04出版物の目次読み取りと参照解決
- 05スキーマおよびBREXの検証状況を報告
活用シーン
- 01対象製品に適用される手順や警告の確認
- 02出版物の目次と参照モジュールの閲覧
- 03文書の適用性と検証結果の確認
MCP 対応
データモジュールと出版物モジュールの一覧・読み取り、参照解決、適用性の確認、ICNメタデータの読み取りに使うツールを提供します。応答には適用性と検証情報が含まれます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 今日に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | number | いいえ | 1 回の呼び出しで返すオブジェクト数(デフォルトは 100、最大 1000)。 |
| filter | object | いいえ | |
| filter.text | string | いいえ | techName または infoName から検索する、大文字と小文字を区別しないテキスト。 |
| filter.infoCode | string | いいえ | 例:"040"(説明)、"520"(手順)、"022"(BREX)、"00W"(ACT) |
| filter.schemaName | string | いいえ | descript / proced / process / fault / pm / brex / … |
| filter.systemCode | string | いいえ | |
| filter.modelIdentCode | string | いいえ | |
| offset | number | いいえ | 最初のオブジェクトのインデックス(デフォルトは 0)。 |
| include | array | いいえ | 一覧表示するオブジェクトの種類(デフォルト:dm)。 |
| csdbDirs | array | いいえ | DMC によるデータモジュール、参照オブジェクト、ACT/CCT/PCT、BREX の検索対象となる追加の CSDB フォルダー(S1000D_CSDB_DIR に加えて)。 |
詳細
@shuji-bonji/s1000d-reader-mcp
英語 | 日本語
LLM が S1000D® のデータモジュールと出版モジュールを、XML ではなく構造として読み取れるようにする MCP サーバーです。見出しの階層、番号付き手順、警告、注意、注記、図版(ICN)、表、参照先のタイトルをそのまま返し、コンテンツがどの製品に適用されるか(適用性)をサーバーが評価して、その結果のみを渡します。すべての応答には、ドキュメントの検証状況(verification)が含まれます。
重要
これは個人プロジェクトであり、ASD(Aerospace, Security and Defence Industries Association of Europe)とは提携していません。S1000D® は ASD の登録商標です。 S1000D の仕様、XML スキーマ、デフォルトの BREX、公式サンプルは、使用条件で再配布が認められていないため、パッケージやリポジトリには含まれていません。s1000d.org から入手し、展開したフォルダーを
S1000D_SPEC_DIR環境変数に指定してください。
できること
| ツール | 説明 |
|---|---|
list_data_modules | CSDB 内のデータモジュールを一覧表示します(要求に応じて PM、DML、DDN、IMF、UPF も含みます)。DMC、タイトル、号数、言語、スキーマ名、適用性の表示テキストを表示します。モデル識別コード、システムコード、情報コード、スキーマ名、タイトルのテキストで絞り込めます |
read_data_module | 1 つのデータモジュールを構造として読み取ります。識別情報とステータスのセクション、本文ツリー(セクション、段落、リスト、表、図版、警告、番号付き手順と要件、プロセス分岐、障害切り分けの質問と回答)、参照(タイトルを含む)、検証状況を返します。product を渡すと、各ブロックを applicable / notApplicable / undetermined として示します |
read_publication_module | 出版モジュールを目次として読み取ります。pmEntry ツリーと、各 dmRef / pmRef の解決済みの参照先(ファイル、タイトル、号数)を返します |
resolve_reference | DMC、PMC、ICN を CSDB 内のファイルに解決します。ICN の場合は、参照元 DM の DOCTYPE 宣言(ファイル名と NOTATION)も返します |
describe_applicability | 適用性の語彙を返します。ACT の製品属性(id、名前、列挙値、識別子)、CCT の条件、PCT の製品(そのまま product に渡せる値)、DM の applic ステートメント(id と表示テキスト)、PCT が値を割り当てていない属性が含まれます。評価は行いません |
read_icn_metadata | ICN メタデータファイル(IMF)を読み取ります。ICN、号数、タイトル、キーワード、セキュリティ分類、ステータスセクションの項目一覧を返します |
適用性の読み取り
| 状態 | 意味 |
|---|---|
applicable | 渡した製品に適用されます |
notApplicable | 適用されません。omitNotApplicable: true を指定すると本文から除外されます |
undetermined | 評価できません。理由は reason に示されます(製品にない属性の名前、product が指定されていない、適用性リポジトリに applicIdentValue がない、など)。これは「適用されない」という意味ではありません |
サーバーは assert / evaluate 式を返しません。必要な属性と値は describe_applicability で調べ、{ "attributes": { "model": "…" }, "conditions": { … } } の形式で product に渡してください。
検証状況(verification)
デフォルトでは、サーバーは XSD 検証のみを実行します(verify: "schema")。verify: "full" は BREX(Business Rules Exchange)チェーンとの照合と参照の解決も行い、verify: "none" はこれらをスキップします。スキップされた手順は not-run、XSD が見つからない場合は schema-not-found として報告されます。どちらも valid ではありません。ドキュメントが XSD に違反している場合、要素の位置が仕様と異なる可能性があるため、本文の読み取りも注意して扱ってください。
対応していないこと
警告
- 要約や翻訳は行いません。 要約に必要な資料(見出し、手順番号、警告の種類、参照先)を、何も省略せずに返します。
- S1000D への準拠性は判定しません。 XSD と BREX の違反の詳細は
s1000d-verify-mcpで、BREX ルールの説明はs1000d-brex-mcpで確認してください。- 本文の構造化に対応するのは、
descript/proced/process/fault/pmの 5 種類のみです。それ以外の種類ではcontent.structured: falseを返し、識別情報とステータスのセクションのみを返します。不明な要素はテキストのみを含むkind: "unknown"として保持され、content.unknownElementsに件数が記録されます。
設定
| 環境変数 | 説明 |
|---|---|
S1000D_SPEC_DIR | 入手した S1000D 配布物を展開したフォルダーです。サーバーはその中の XSD(xml_schema_flat/)とデフォルトの BREX を探します。データディクショナリー内の XSD のコピーは使用しません |
S1000D_CSDB_DIR | プロジェクトのデータモジュールを格納するフォルダーです。複数のフォルダーは :(Windows では ;)で区切って指定できます。DMC、参照先、ACT、CCT、PCT、および適用性リポジトリーによる検索に使用されます |
フォルダーは、ツール引数 csdbDirs でも追加できます。
Claude Desktop/Claude Code の設定例
{
"mcpServers": {
"s1000d-reader": {
"command": "npx",
"args": ["-y", "@shuji-bonji/s1000d-reader-mcp"],
"env": {
"S1000D_SPEC_DIR": "/path/to/s1000d/issue-7",
"S1000D_CSDB_DIR": "/path/to/your/csdb"
}
}
}
}
仕組み
読み取り、評価、検証のコードはすべて共有ライブラリー @shuji-bonji/s1000d-core に含まれています。このサーバーにあるのは、引数の解釈とレスポンスの形式のみです。検証ステータスは s1000d-verify-mcp と同じ関数で構築されるため、2 つのサーバーの結果は一致します。
開発
npm install
npm test # runs on self-made test data only
npm run test:spec # uses the distribution you obtained (location given by S1000D_SPEC_DIR; default ../../specs/s1000d/issue-7)
npm run build && S1000D_SPEC_DIR=/path/to/issue-7 S1000D_CSDB_DIR=/path/to/csdb npm start # start over stdio
ライセンス
MIT。S1000D® は ASD の登録商標です。本ソフトウェアは ASD と提携しておらず、仕様、スキーマ、公式サンプルも含まれていません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。