hazmat-cfr-mcp について
hazmat-cfr-mcpは、危険物輸送要件を調べて検証するMCPサーバーとCLIです。49 CFR 172.101の全表を収録し、固定されたeCFR版への引用付きで規定を展開します。
主な機能
- 0149 CFR 172.101全表の検索
- 02特別規定と表記の展開
- 03CFR引用付き輸送要件
- 04輸送品名の検証
- 05危険物確認用CLIコマンド
活用シーン
- 01物質のラベルと包装要件の確認
- 02輸送品名の妥当性検証
- 03プラカードと隔離要件の確認
MCP 対応
MCPクライアントに検索、分類、検証、要件確認のツールを提供します。結果には展開済みの規制項目と、固定されたeCFR版への引用が含まれます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
11掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | UN/NA 番号または正式輸送品名。例:UN1090、Acetone。 |
詳細
hazmat-cfr-mcp
49 CFR 172.101の危険物表を完全収録。AIエージェント向けのMCPツールとして提供し、すべてのフィールドに固定されたeCFR改訂版の出典を明記しています。

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_entry | UN/NA 番号または正式輸送品名から検索し、一致する項目と、記号の解読結果および特別規定を返します。 |
get_shipping_requirements | 1 回の呼び出しですべて取得できます:物質の輸送に必要な情報(識別情報、ラベル、解読済みの包装要件、特別規定、船舶への積載要件、プラカード、出典)。 |
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_eligibility | Class 3/Class 8 の LQ 候補を保守的にスクリーニングします。 |
decode_special_provision | 7 列目のコード(例:IB2、T8、A3)を 49 CFR 172.102 の本文に展開します。 |
decode_packaging_reference | 8A/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 の本文は、米国政府のパブリックドメイン著作物です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。