关于 colregs-mcp
colregs-mcp 是回答 COLREGS 规则问题的 MCP 服务,适用于查询国际规则文本与船舶灯号判定。回答附段落引用和逐字规则文本;这是使用预发布规则数据的预览版本,明确不可用于航行决策。
主要功能
- 01评估船舶情境与规则义务
- 02列出合法灯号组合及其情态
- 03返回遭遇判断和合规状态
- 04按条款检索逐字规则文本
- 05查询灯具定义与布置
适用场景
- 01核对特定情境适用的 COLREGS 条款
- 02查看灯号颜色、弧度和位置定义
- 03追溯评估结果引用的规则原文
MCP 相关
作为 MCP 服务向客户端提供 evaluate、rule_text 和 light 工具。评估结果附有条款引用及对应的逐字规则文本。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
colregs-mcp
警告
请勿用于航行。 这是一个基于预发布规则数据构建的预览版(0.0.x)。 请勿依据其输出决定在水面上采取何种行动。 工具接口可能随时变更,恕不另行通知。
一个回答《国际海上避碰规则》(COLREGS)相关问题的 MCP 服务。每个回答都附有段落引用,以及这些引用所对应的规则原文,确保大模型无法悄然简化内容。规则由 colregs-engine 评估;此软件包只负责决定如何写出答案。
试用
Claude Code:
claude mcp add colregs -- npx -y colregs-mcp
Claude 连接器目录: 在 Claude 中打开“设置”→“连接器”,
搜索 COLREGS 并点击“连接”。无需配置。
其他 MCP 客户端: 命令为 npx,参数为 -y colregs-mcp,无需
环境变量。
从克隆的仓库运行:
git clone https://github.com/mark-brannan/colregs-mcp && cd colregs-mcp && npm install && npm run build
然后运行命令 node,参数为 /absolute/path/to/colregs-mcp/dist/cli.js。
工具
| 工具 | 输入 | 返回内容 |
|---|---|---|
evaluate | circumstances | 一次评估:appraisal、signals、indicated、compliance |
rule_text | cite | COLREGS 段落原文 |
light | id | 一种灯的定义:颜色、特征、弧度、位置 |
evaluate
circumstances 表示一艘船舶所处的整体情况:self(本船的事实)、others(其他每艘船舶,以及已知或观察到的相关情况)和 conditions(能见度、环境)。一次调用会评估整体情况;响应会提供四种解读。
signals:self可以显示的所有完整且合法的灯光组合。每盏灯都附有其情态(shall、may、shall-if-practicable)及规定该灯的段落。appraisal:规则对self单独适用时的要求,以及针对每艘其他船舶的要求:会遇类型、是否断定存在碰撞危险,以及各船舶的责任(直航、让路、不得妨碍)。indicated:对每艘其他船舶而言,其观察到的灯光、号型和声响所表明的可能船舶类型。compliance:针对一段按时间采样的情况轨迹,按船舶和已触发的义务分别给出一个判定:已遵守、已违反或待定。
每个 id 都附有对应段落的引用,而 cited_paragraphs 则包含响应引用的每个段落的原文。输入词汇表在启动时由 colregs 数据包生成。任何不在词汇表内的键或值都会报错,不会返回空答案。
rule_text
接受段落路径,例如 25(b) 或 26(c)(i);也接受裸规则编号,例如 25(表示该规则的所有段落);还接受范围,例如 24(a)(ii)-(iv)。返回从美国海岸警卫队(USCG)汇编版《航行规则》中转录的国际规则文本,并附上来源和检索日期。
light
接受响应中出现的灯具 id,例如 light:sidelights 或 light:all_round。返回规则 21 的定义:颜色、特征、以度为单位的弧度和位置。
示例
一艘正在航行、单独航行的 12 m 单桅帆船。
{
"circumstances": {
"self": {
"fact:propulsion": "propulsion:sail",
"fact:activity": "activity:none",
"fact:position": "position:underway",
"fact:length_m": 11.6
}
}
}
精简后的响应:
{
"colregs": { "version": "0.3.4" },
"signals": {
"applied": [
{ "id": "rule:25a", "cite": "25(a)", "modality": "modality:shall" },
{ "id": "rule:25b", "cite": "25(b)", "modality": "modality:may" },
{ "id": "rule:25c", "cite": "25(c)", "modality": "modality:may" }
],
"lawful_displays": {
"count": 3,
"relation": "any_one_of",
"options": [
{
"option": 1,
"of": 3,
"lights": [
{
"light": "light:sidelights",
"modality": "modality:shall",
"prescribed_by": { "id": "rule:25a", "cite": "25(a)" }
},
{
"light": "light:sternlight",
"modality": "modality:shall",
"prescribed_by": { "id": "rule:25a", "cite": "25(a)" }
}
]
},
{ "option": 2, "of": 3, "...": "..." },
{ "option": 3, "of": 3, "...": "..." }
]
},
"modality_key": { "modality:shall": "mandatory", "modality:may": "permitted alternative" },
"cited_paragraphs": {
"25(a)": "A sailing vessel underway shall exhibit: (i) sidelights; (ii) a sternlight.",
"25(b)": "…",
"25(c)": "…"
}
},
"appraisal": { "self": { "...": "..." }, "others": [] },
"indicated": []
}
这艘单桅帆船有三种合法的灯光组合,因为规则赋予了选择权,而输入内容无法确定应采用哪一种。
docs/demo.md 使用相同的问题询问同一个模型,分别展示未使用和使用此服务时捕获的答案。
响应结构
每个响应都具备以下三个特性:
- 引用原文。 每个条目 ID 都与其段落引文一同提供,且
cited_paragraphs包含每个被引用段落的文本。响应中唯一的句子来自规则本身。 - 每个灯号单独标注情态。 每个灯号都保留
shall、may和shall-if-practicable,不按整个显示内容归纳。modality_key是一行简明词汇表,列出响应使用的情态。 - 设计上支持多个选项。
lawful_displays先列出count和relation,再显示任何灯号;每个选项都自行标注n of count。顶层没有容易被误认为答案的lights字段。
依法无需显示任何灯号的船舶,会得到一个空显示选项,而非错误。只有输入超出词汇范围时才会返回错误。
每个响应都包含 colregs.version。如果服务器自带的 colregs 与引擎所用版本不一致,服务器将拒绝启动。
依赖项
colregs-engine 和 colregs 都从 GitHub main 安装,而非从 npm 发布版本安装;锁文件会锁定提交。两者必须解析为相同版本。
隐私政策
服务器不会收集任何信息。它以本地 stdio 进程运行,根据旁边安装的 colregs 数据包提供响应,并且自身不会发起网络请求。没有遥测,不会记录收到的请求,也不需要账户。唯一的网络事务是安装,而这由 npm 完成。
发布
从发布标签自动执行:发布到 npm 和 MCP registry,并在 GitHub Release 上提供 .mcpb 包。其余需要手动完成的步骤见 docs/releasing.md。
许可证
AGPL-3.0-only。沿用 colregs 中的适航性免责声明。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。