mcpField
H
hazmat-cfr-mcp

hazmat-cfr-mcp

ローカル
github.com/andretaki法務・行政118 週間前に更新

hazmat-cfr-mcp について

hazmat-cfr-mcpは、危険物輸送要件を調べて検証するMCPサーバーとCLIです。49 CFR 172.101の全表を収録し、固定されたeCFR版への引用付きで規定を展開します。

主な機能

  1. 0149 CFR 172.101全表の検索
  2. 02特別規定と表記の展開
  3. 03CFR引用付き輸送要件
  4. 04輸送品名の検証
  5. 05危険物確認用CLIコマンド

活用シーン

  1. 01物質のラベルと包装要件の確認
  2. 02輸送品名の妥当性検証
  3. 03プラカードと隔離要件の確認

MCP 対応

MCPクライアントに検索、分類、検証、要件確認のツールを提供します。結果には展開済みの規制項目と、固定されたeCFR版への引用が含まれます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"andretaki-hazmat-cfr": {
"command": "npx",
"args": [
"-y",
"hazmat-cfr-mcp"
]
}
}
}
起動コマンドnpx -y hazmat-cfr-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmhazmat-cfr-mcp0.3.0

ツール

11

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
querystringはいUN/NA 番号または正式輸送品名。例:UN1090、Acetone。

詳細

hazmat-cfr-mcp

49 CFR 172.101の危険物表を完全収録。AIエージェント向けのMCPツールとして提供し、すべてのフィールドに固定されたeCFR改訂版の出典を明記しています。

CI npm MCP License: MIT

hazmat-cfr-mcp demo

Claude、Cursor、CodexなどのMCPクライアントに、全件を収録した危険物表を基に、DOT危険物の検索、分類、検証を行うツールを提供します。サンプルではありません。

エージェントに次のように尋ねます。

アセトン60 Lを貨物専用航空機で輸送できますか?ラベル、包装、特別規定の要件は何ですか?

正しい品名、危険等級、容器等級、ラベルコード、包装参照、航空機の制限、船舶の積載区分、特別規定の解説、およびCFRの出典を構造化JSONで返します。

2通りの使い方があります。

  • hazmat-cfr-mcp — エージェント向けMCP stdioサーバー
  • hazmat-cfr — 人間、テスト、スクリプト向けのローカルCLI

APIキーは不要です。顧客データも、運送業者との契約も、NMFCも不要です。公開CFRのみを使用します。

同梱内容

  • 約2,700件の危険物表のエントリ(49 CFR 172.101) — すべてのUN/NAエントリに加え、禁止物質も公式eCFRから直接取り込んでいます。
  • 特別規定の解説 — 列7の約420コード(49 CFR 172.102:数値、A、B、IB、IP、N、R、T、TP、W)をすべて規制本文に展開します。
  • 凡例の解説 — 列1の記号(+ A D G I W)、列10Aの船舶積載区分、列8A~8Cの包装参照を、該当するpart-173の条項に対応付けます。
  • 日付付きのeCFRスナップショットに固定されているため、すべての回答を再現でき、正確な改訂版を出典として示せます。
  • 厳選した同義語/CASレイヤーにより、「IPA」「muriatic acid」「bleach」でも検索できます。規制データとは明確に分離されています。

10秒で試す

npx -y hazmat-cfr-mcp --help
npx -y hazmat-cfr lookup UN1088          # not in any "sample" — the whole table is here
npx -y hazmat-cfr decode-sp IB2 T8 A3

開発の背景

基盤モデルは、規制対象となる輸送の詳細に弱いものです。アセトンが何かは知っていても、輸送時の記述が完全か、IB2が何を意味するか、ラベル要件の根拠となるCFRの項目はどれかを推測させるべきではありません。

このサーバーは、エージェントが幻覚ではなく規制に基づいて回答できるよう、明示的な出典付きの完全な危険物ツールを提供します。

正確性と検証

コンプライアンスに関連するツールであるため、正確性は期待に頼るのではなく、ビルドで保証しています。

  • データセットはeCFR versioner APIから生成してリポジトリにコミットします(docs/data-pipeline.mdを参照)。手作業で編集することはありません。
  • 表で参照されている特別規定コードが172.102で解決できない場合、取り込み処理は失敗します。文書化された原典の誤記(例:IP16)については、「参照されているが定義されていない」という明示的な注記に解決し、決して捏造しません。
  • test/data-integrity.test.tsは、エントリ数、構造の妥当性、参照整合性、および約22件の手動検証済みスポットチェックを毎回再確認します。
  • パーサーはtest/fixtures/のフィクスチャを使って単体テストされています。

⚠️ 免責事項。 このツールは、公開CFR本文を提示する情報提供用の補助ツールです。法律上の助言ではなく、コンプライアンス認証でも、訓練を受けた危険物取扱者の代替でもありません。輸送に関する判断は、必ず最新のeCFRで確認してください。

インストールと実行

npx hazmat-cfr-mcp            # MCP stdio server
npx hazmat-cfr lookup UN1090  # CLI

クローンしたリポジトリから実行する場合:

git clone https://github.com/andretaki/hazmat-cfr-mcp.git
cd hazmat-cfr-mcp
npm install
npm run build
npm run demo

CLI:

npx hazmat-cfr lookup UN1090
npx hazmat-cfr requirements UN1830          # everything to ship it, in one call
npx hazmat-cfr placard 2.3
npx hazmat-cfr validate "UN1090, Acetone, 3, PG II"
npx hazmat-cfr segregation 3 5.1 8
npx hazmat-cfr lq 3 II 1000 12 true
npx hazmat-cfr decode-sp IB2 T8 A3
npx hazmat-cfr decode-pkg nonBulk 202

MCPクライアントの設定

{
  "mcpServers": {
    "hazmat-cfr": {
      "command": "npx",
      "args": ["hazmat-cfr-mcp"]
    }
  }
}

ローカルのチェックアウトを使う場合は、commandをnodeに、argsをdist/server.jsに設定してください。

ツール

ツール用途
lookup_hazmat_entryUN/NA 番号または正式輸送品名から検索し、一致する項目と、記号の解読結果および特別規定を返します。
get_shipping_requirements1 回の呼び出しですべて取得できます:物質の輸送に必要な情報(識別情報、ラベル、解読済みの包装要件、特別規定、船舶への積載要件、プラカード、出典)。
classify_shipping_description自由記述を構造化フィールドに解析し、検証します。
validate_basic_hazmat_description構造化フィールドを 172.101 の全表に照らして検証します。
get_label_requirements危険性ラベルのコードと注意事項を返します。
get_placard危険物クラスの 49 CFR 172.504 に基づくプラカード名と数量のしきい値を返します。
check_basic_segregation保守的なペアごとの隔離判定結果を返します(49 CFR 177.848 の一部)。
check_limited_quantity_eligibilityClass 3/Class 8 の LQ 候補を保守的にスクリーニングします。
decode_special_provision7 列目のコード(例:IB2、T8、A3)を 49 CFR 172.102 の本文に展開します。
decode_packaging_reference8A/8B/8C 列の値を対応する Part 173 の条項に解決します。
explain_cfr_sourceフィールドまたは規則の根拠となる公開 CFR 出典を説明します。

呼び出し例:

{ "query": "UN1090" }

ライブラリの使用

import { defaultCatalog, decodeSpecialProvisions, ECFR_SNAPSHOT_DATE } from "hazmat-cfr-mcp";

const acetone = defaultCatalog.lookup("UN1090");
const provisions = decodeSpecialProvisions(acetone.entries[0].specialProvisions);
console.log(`Backed by eCFR snapshot ${ECFR_SNAPSHOT_DATE}`);

データの更新

# bump ECFR_SNAPSHOT_DATE in src/data/snapshot.ts, then:
npm run ingest -- --fresh
npm test

パイプラインの全容については、docs/data-pipeline.md を参照してください。

対象外

法的助言ではありません。訓練を受けた危険物取扱者の代わりにはなりません。完全なコンプライアンス認証エンジンではありません。NMFC 分類には対応していません。運送業者の契約や運賃表の分析には対応していません。個人顧客データ、契約料金、社内の業務記録をこのリポジトリに含めないでください。

安全性

npm test
npm run typecheck
npm run scan:secrets

メンテナー

Andre Taki — Alliance Chemical — [email protected]

ライセンス

MIT — 基盤となる 49 CFR の本文は、米国政府のパブリックドメイン著作物です。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。