mcpField
H
hazmat-cfr-mcp

hazmat-cfr-mcp

本地服务
github.com/andretaki法律与政务118 周前更新

关于 hazmat-cfr-mcp

hazmat-cfr-mcp 提供危险品运输法规查询与验证的 MCP 服务和命令行工具,覆盖完整的 49 CFR 172.101 表,并附带解码内容及固定版本 eCFR 引用。

主要功能

  1. 01查询完整的 49 CFR 172.101 表
  2. 02解码特别规定与表格标记
  3. 03提供带 CFR 引用的运输要求
  4. 04验证运输描述
  5. 05通过命令行执行危险品检查

适用场景

  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 Agent 使用的 MCP 工具提供——每个字段均注明所依据的固定版本 eCFR。

CI npm MCP License: MIT

hazmat-cfr-mcp 演示

为 Claude、Cursor、Codex 和其他 MCP 客户端提供 DOT 危险品查询、分类和验证工具,数据基于完整的危险品表,而非示例数据。

向 Agent 提问:

我可以通过仅限货机运输 60 L 丙酮吗?需要什么标签、包装和特殊规定?

它会以结构化 JSON 返回正确的运输名称、危险类别、包装等级、标签代码、包装参考、航空器限量、船舶积载信息、解读后的特殊规定以及 CFR 引用。

有两种使用方式:

  • hazmat-cfr-mcp — 供 Agent 使用的 MCP stdio 服务
  • hazmat-cfr — 供用户、测试和脚本使用的本地 CLI

无需 API 密钥。无客户数据。无承运人合同。无 NMFC。仅使用公开的 CFR 数据。

包含内容

  • 约 2,700 条危险品表记录(49 CFR 172.101)——所有 UN/NA 条目及禁运材料,直接从官方 eCFR 导入。
  • 特殊规定解读——将所有约 420 个第 7 栏代码(49 CFR 172.102:数字、A、B、IB、IP、N、R、T、TP、W)展开为对应的法规文本。
  • 图例解读——解析第 1 栏符号(+ A D G I W)、第 10A 栏船舶积载类别,以及指向第 173 部分条款的第 8A–8C 栏包装参考。
  • 固定到带日期的 eCFR 快照,确保每个答案均可复现,并可引用到确切修订版本。
  • 精心整理的同义词/CAS 层,可识别“IPA”“盐酸”或“漂白剂”等名称,并与法规数据明确区分。

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 字段支持某项标签要求。

此服务为 Agent 提供明确、有引用且完整的危险品工具集,让它们依据法规作答,而不是凭空编造。

准确性与验证

这是一个与合规相关的工具,因此正确性由构建流程强制保障,而非寄希望于运气:

  • 数据集由 eCFR 版本 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**一次调用 → 获取运输某种材料所需的一切信息:**身份信息、标签、已解码的包装要求、特殊规定、船舶积载信息、标牌和引用来源。
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保守筛查第 3 类/第 8 类限量候选项。
decode_special_provision将第 7 栏代码(如 IB2、T8、A3)展开为 49 CFR 172.102 中的文本。
decode_packaging_reference将第 8A/8B/8C 栏的值解析为对应的第 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 文本属于美国政府的公有领域作品。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。