Hazmat Cfr Mcp

io.github.andretaki由 GitHub 帳號 andretaki 發布v0.3.0更新於 Oct 24, 2026

Complete 49 CFR 172.101 hazmat table lookup with special-provision decoding, cited to eCFR.

已驗證STDIO僅桌面知識與記憶商業與電商

概覽

AI 產生的概覽

本機 MCP 伺服器,為助理提供完整的 49 CFR 172.101 危險物品表,用於 DOT 危險物品查詢、分類與驗證,並附 eCFR 引用

可以做什麼
依 UN/NA 編號或正確運輸名稱查詢危險物品條目,回傳解碼後的符號與特別規定,並可一次呼叫取得完整運輸要求(標籤、包裝、船舶積載、標牌、引用)。解析並驗證運輸描述,檢查標籤要求、標牌、隔離要求與有限數量資格。將第 7 欄特別規定與第 8 欄包裝引用解碼為法規原文。說明某欄位或規則所依據的公開 CFR 來源。
適用情境
當助理需要回答危險物品運輸問題——正確運輸名稱、危害類別、包裝類別、標籤、航空限制、船舶積載——且應引用法規而非猜測時適用。面向物流、運輸與合規起草工作,不能取代受過訓練的危險物品從業人員。
執行需求
以本機 stdio 程序在使用者機器上執行,透過 npx 啟動 hazmat-cfr-mcp 套件(需要 Node.js)。未宣告 API 金鑰、帳號或環境變數;資料集隨套件提供,並固定於某個日期的 eCFR 快照。
安裝前請注意
僅為資訊輔助:README 聲明其不是法律建議、不是合規認證,也不能取代受過訓練的危險物品從業人員,運輸決策應依最新 eCFR 核實。資料固定於某一快照,可能落後於後續法規變更。僅做唯讀查詢與驗證,不向第三方傳送資料。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Hazmat Cfr Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

hazmat-cfr-mcp

The complete 49 CFR 172.101 Hazardous Materials Table, as an MCP tool for AI agents — every field cited to a pinned eCFR revision.

[CI] [npm] [MCP] [License: MIT]

[hazmat-cfr-mcp demo]

Give Claude, Cursor, Codex, and other MCP clients a DOT hazmat lookup, classification, and validation tool backed by the entire Hazardous Materials Table — not a sample.

Ask an agent:

Can I ship 60 L of acetone on a cargo-only aircraft? What are its label, packing, and special-provision requirements?

It returns the proper shipping name, hazard class, packing group, label codes, packaging references, aircraft limits, vessel stowage, decoded special provisions, and CFR citations — in structured JSON.

Use it two ways:

  • hazmat-cfr-mcp — MCP stdio server for agents
  • hazmat-cfr — local CLI for humans, tests, and scripts

No API keys. No customer data. No carrier contracts. No NMFC. Public CFR only.

What's in the box

  • ~2,700 Hazardous Materials Table entries (49 CFR 172.101) — every UN/NA entry plus Forbidden materials, ingested directly from the official eCFR.
  • Special-provision decoding — all ~420 Column 7 codes (49 CFR 172.102: numeric, A, B, IB, IP, N, R, T, TP, W) expanded into their regulatory text.
  • Legend decoding — Column 1 symbols (+ A D G I W), Column 10A vessel stowage categories, and Columns 8A–8C packaging references resolved to part-173 sections.
  • Pinned to a dated eCFR snapshot so every answer is reproducible and citable to an exact revision.
  • A curated synonym/CAS layer so "IPA", "muriatic acid", or "bleach" resolve — kept clearly separate from regulatory data.

10-second try

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

Why this exists

Foundation models are weak at regulated shipping details. They may know what acetone is, but they should not guess whether a shipping description is complete, what IB2 means, or which CFR field backs a label requirement.

This server gives agents an explicit, cited, complete hazmat tool surface so they answer with the regulation instead of a hallucination.

Accuracy & verification

This is a compliance-adjacent tool, so correctness is enforced by the build, not by hope:

  • The dataset is generated from the eCFR versioner API and committed to the repo (see docs/data-pipeline.md). It is never hand-edited.
  • The ingest fails if any special-provision code referenced by the table does not resolve in 172.102 (documented source errata, e.g. IP16, are resolved to an explicit "referenced but not defined" note — never fabricated).
  • test/data-integrity.test.ts re-checks entry counts, structural validity, referential integrity, and ~22 hand-verified spot-checks on every run.
  • The parsers are unit-tested against fixtures in test/fixtures/.

⚠️ Disclaimer. This is an informational aid that surfaces public CFR text. It is not legal advice, not a compliance certification, and not a substitute for a trained hazmat employee. Always verify any shipping decision against the current eCFR.

Install and run

bash
npx hazmat-cfr-mcp            # MCP stdio servernpx hazmat-cfr lookup UN1090  # CLI

From a clone:

bash
git clone https://github.com/andretaki/hazmat-cfr-mcp.gitcd hazmat-cfr-mcpnpm installnpm run buildnpm run demo

CLI:

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

MCP client config

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

For a local checkout, point command at node and args at dist/server.js.

Tools

ToolPurpose
lookup_hazmat_entryLook up by UN/NA number or proper shipping name; returns matching entries with decoded symbols and special provisions.
get_shipping_requirementsOne call → everything to ship a material: identity, labels, decoded packaging, special provisions, vessel stowage, placard, and citations.
classify_shipping_descriptionParse free text into structured fields, then validate it.
validate_basic_hazmat_descriptionValidate structured fields against the full 172.101 table.
get_label_requirementsReturn hazard label codes and caveats.
get_placard49 CFR 172.504 placard name + quantity threshold for a hazard class.
check_basic_segregationConservative pairwise segregation findings (49 CFR 177.848 subset).
check_limited_quantity_eligibilityConservative Class 3/Class 8 LQ-candidate screen.
decode_special_provisionExpand Column 7 codes (e.g. IB2, T8, A3) into 49 CFR 172.102 text.
decode_packaging_referenceResolve a Column 8A/8B/8C value to its part-173 section.
explain_cfr_sourceExplain which public CFR source backs a field or rule.

Example call:

json
{ "query": "UN1090" }

Library use

ts
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}`);

Refreshing the data

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

See docs/data-pipeline.md for the full pipeline.

Non-goals

Not legal advice; not a replacement for trained hazmat employees; not a full compliance certification engine; not NMFC classification; not carrier contract/tariff analysis. No private customer data, contract rates, or internal business records belong in this repo.

Safety

bash
npm testnpm run typechecknpm run scan:secrets

Maintainer

Andre Taki — Alliance Chemical — [email protected]

License

MIT — the underlying 49 CFR text is a public-domain work of the U.S. government.

來源:README.md,提交 c733ac6

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.3.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分