mcpField
O
Open Waters AIS

Open Waters AIS

远程服务
openwaters.io地图与出行8今天更新

关于 Open Waters AIS

Open Waters AIS 汇集社区网络、政府数据和志愿接收站的实时 AIS 船舶信息。它提供按船舶、区域或位置查询的 MCP 服务,也提供流式接口和覆盖范围信息。

主要功能

  1. 01按 MMSI 或名称搜索船舶
  2. 02查询区域及附近船舶
  3. 03实时 AIS 消息流
  4. 04查看数据源与覆盖范围
  5. 05为事件提供来源和许可信息

适用场景

  1. 01查找特定船舶的实时位置
  2. 02查看指定区域的船舶交通
  3. 03监测船舶周边交通
  4. 04检查数据来源及覆盖状况

MCP 相关

Open Waters AIS 在 MCP 上提供只读工具,可按 MMSI、区域、位置或名称查询船舶,并查看覆盖范围。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://ais.openwaters.io/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

aiscast

通过边界框实时传输 AIS 船舶交通数据,数据来自社区网络、开放政府数据源和志愿者接收站。它是 Open Waters 的一部分。公共实例为 ais.openwaters.io。实时地图位于 openwaters.io/ais/vessels。

这是一个 Beta 版。没有 SLA。覆盖范围不均。部分来源的再分发条款尚未确定(参见覆盖范围)。实时状态和运行时间历史记录请见 status.openwaters.io。

用法

aisstream.io 客户端。 aiscast 在 wss://ais.openwaters.io/v0/stream 上使用 aisstream.io 的协议:订阅消息相同,MessageType / MetaData / Message 帧也相同。更改主机名,并将 aiscast 令牌用作 APIKey。现有代码可继续使用:aisstream-ts、官方 Go/Python/JS 示例,以及 signalk-aisstream。

原生 API(完整参考)。

  • wss://ais.openwaters.io/v1/stream:发送 {"type":"subscribe","bbox":[[minLat,minLon,maxLat,maxLon]]} 或 {"type":"subscribe","mmsi":[368168720]}(也可以两者都发)。馈送器和合作伙伴令牌还可通过 "imo":[9241061] 按 IMO 编号跟踪船舶。你会收到每条已解码 AIS 消息对应的一个 JSON 事件。每个事件都包含来源、站点、接收时间、原始语句和解码后的字段。添加 "snapshot":true,可先获取订阅中已跟踪的每艘船舶的最新已知消息,然后接收实时交通数据。订阅无需令牌。
  • GET https://ais.openwaters.io/v1/vessels?bbox=minLat,minLon,maxLat,maxLon(或 ?mmsi=a,b,c):返回当前视野中所有船舶的 GeoJSON。每艘船舶都包含其最后位置、名称、类型、航向、速度、艏向、旗帜,以及 aiscast 上次收到其信号的时间和来源;静态数据收到后,还会包含 IMO 编号、呼号、目的地、预计抵达时间、吃水、长度、宽度,以及 AIS 天线到船首、船尾、左舷和右舷的距离。无需令牌。
  • GET https://ais.openwaters.io/v1/stations:返回 aiscast 正在接收的所有来源,以及消息计数和数据时效。

AI 助手。 https://ais.openwaters.io/mcp 是一个 MCP(Model Context Protocol)服务,提供五种只读工具:按 MMSI 查询船舶、查询区域内的船舶、查询某个点附近或另一艘船附近的船舶、按名称搜索,以及查询覆盖范围。无需登录。Claude Code:claude mcp add --transport http open-waters-ais https://ais.openwaters.io/mcp。Claude.ai、ChatGPT、Cursor 和 VS Code 可将该 URL 作为自定义连接器或 mcp.json 条目;各平台的设置说明见 API 参考。在 Authorization: Bearer 标头中提供令牌可提高匿名使用限制。

令牌。 /v0/stream 需要令牌。个人令牌可自行获取,且永不过期。请使用令牌页面,或生成 Ed25519 密钥对,并向 POST https://ais.openwaters.io/v1/keys 发送 {"pubkey":"<base64url public key>"},使用该密钥签名,具体方式请参见 API 参考。响应内容就是你的令牌。该令牌对应个人层级:2 个流、50 条消息/秒,以及 20°×20° 的区域。使用同一令牌馈送数据后,它会自动成为馈送器令牌。

层级和限制请见 docs/limits.md。如需高于馈送器层级的额度,或用于商业用途,请发送邮件至 [email protected]。

事件中包含 source,因此你可以区分实时志愿者接收站、政府数据源和聚合数据。synthesized: true 表示 aiscast 将非 NMEA 来源的数据重新编码为消息。

贡献数据

如果你运行着 AIS 接收器,欢迎在此发送数据。aiscast 会将数据重新提供给所有人,将其与公开馈送及其他所有站点的数据去重,并将志愿者接收到的数据分享给 AISHub,作为我们对其社区网络的贡献。只有志愿者站点直接接收到的数据才会发送给 AISHub;公开馈送和合成消息不会发送。你也可以继续为其他网络贡献数据。贡献条款请参阅贡献者协议。

  • AIS-catcher(首选:经过身份验证、实时传输,可在任何 NAT 后运行):在 openwaters.io/ais/token 获取令牌(点击一次即可,令牌会保留在浏览器中),然后运行 AIS-catcher ... -Q wssmqtt://x:<token>@ais.openwaters.io:443/v1/stream MSGFORMAT NMEA。每条消息解码后都会通过 MQTT 发送,使用与 JSON 流相同的 WebSocket 地址。你的数据会显示为 source: station:<station id>。在令牌页面为站点命名;在命名之前,站点会以其接收信号所覆盖区域中离交通流量最近的城镇命名。AIS-catcher 的 HTTP 输出也可使用:-H https://ais.openwaters.io/v1/receive USERPWD x:<token> GZIP on INTERVAL 5,每五秒以同一站点身份发送一批数据。
  • UDP(无需令牌):使用 AIS-catcher -u udp.ais.openwaters.io 10110、将主机设为 udp.ais.openwaters.io 且端口设为 10110 的 docker-shipfeeder,或任何发送纯 !AIVDM / !AIVDO 语句的 NMEA 转发器(欢迎附带 TAG 块)。你的站点会显示为 udp:<id>,这是根据你的地址生成的密钥哈希,绝不会显示地址本身。如果发送方的 !AIVDO 语句能识别出船只,aiscast 会改用该 MMSI 为站点生成密钥。
  • Signal K:在 ais-forwarder 中添加 UDP 目标 udp.ais.openwaters.io:10110(转发 AIVDM 和 AIVDO)。或者安装 signalk-aiscast 插件。无需令牌。插件会分享接收器收到的数据,以及来自应答器的位置;若没有 AIS 应答器,则根据 Signal K 生成位置。没有接收器时,它会显示 aiscast 的船舶流量。

你的站点页面为 https://openwaters.io/ais/stations/<your id>,站点列表中列出了所有站点。页面会显示接收到的船只、覆盖范围、消息数量,以及其他站点更早收到的消息数量。GET /v1/stations/{id} 会返回相同的数据。数据馈送端可以通过 wss://ais.openwaters.io/v1/nmea 获取去重后的原始流。

覆盖范围

来源位置新鲜度
Kystverket挪威海岸外 40–60 海里实时
BarentsWatch挪威专属经济区、斯瓦尔巴群岛、扬马延岛(卫星接收器 + 海上接收器)实时
Fintraffic Digitraffic芬兰水域实时
志愿接收器所在位置(首个站点位于 Buzzards Bay / Vineyard Sound)实时
AISHub aggregate全球陆地接收范围,约 5 万艘船舶延迟约一分钟
aisstream.io全球范围,服务运行时可用实时,但经常宕机

AISHub 及其贡献者让我们得以实现大部分全球陆地覆盖。我们会回传志愿者接收的数据,并在每条来自其聚合数据的事件中注明 AISHub。

/v1/stats 会报告每个来源从广播到抵达的当前延迟(以秒为单位的 delay.p50 和 delay.p99)。

每条事件都会标明其来源。docs/policy.md 列出了本项目有意不使用的来源及其原因。

许可与署名

许可按来源而定。aiscast 不会为聚合数据重新授权。aiscast 会按照事件来源的条款重新提供每条事件。因此,每条事件、每艘船舶和每个归档小时都包含 source,并且每条 /v1 事件都带有 license 标签和 attribution 署名信息。每条署名信息都以 “Open Waters AIS (https://openwaters.io/ais/)” 开头;有自己条款的来源会在其后附上署名信息。如果你展示或再分发这些数据,请展示每条事件附带的 attribution 信息。/v1/vessels 会在要素集合中以顶层 attribution 成员的形式提供相同的署名信息,每个当前存在的来源各一条。下表提供了相同的信息,供参考。

来源许可证你必须做什么
KystverketNLOD 2.0标注来源:“包含由挪威海岸管理局分发、依据挪威开放政府数据许可(NLOD)提供的数据。”NLOD 不可再许可,因此会直接约束你。
BarentsWatch根据 BarentsWatch API 条款采用 NLOD标注来源:“数据由 BarentsWatch 提供。”它与 Kystverket 使用的是同一 AIS Norge 数据,因此也适用 Kystverket 的来源标注要求。
Fintraffic DigitrafficCC BY 4.0标注来源:“来源:Fintraffic / digitraffic.fi,许可证 CC 4.0 BY。”
志愿者接收站贡献者协议依据 CC0 将接收数据贡献至公有领域,并依据 ODbL 发布汇总数据标注来源“Open Waters AIS(https://openwaters.io/ais/)”。单条接收数据采用 CC0。汇总数据采用 ODbL。
AISHub 汇总数据AISHub 条款及任何适用的书面协议标注来源为 AISHub 贡献者,并保留 source: aishub。再利用和再分发必须遵循适用条款。
aisstream.io未公布条款尽力而为,可能会消失。source: aisstream。
Wikidata 船舶信息CC0 1.0无需操作。/v1/vessels/{mmsi} 中的 wikidata 对象以及 MCP get_vessels 会通过 license: CC0-1.0 说明这一点。其 image 和 commons_category 链接指向的 Commons 照片各自采用其自身的许可证。
美国海岸警卫队 PSIX公有领域(美国政府作品)无需操作。/v1/vessels/{mmsi} 中的 uscg 对象以及 MCP get_vessels 会在其 license 字段中说明这一点。
AMSA 船舶登记册CC BY 4.0标注来源:“© 澳大利亚海事安全局”。/v1/vessels/{mmsi} 中的 sources.amsa 条目以及 MCP get_vessels 会通过 license: CC-BY-4.0 标注该许可证。
MarineCadastre公有领域(美国政府作品);NOAA 将其 2024 年发布内容标注为 CC0无需标注。基于该数据的航迹历史会标注来源:“美国海岸警卫队全国 AIS 数据,经由 MarineCadastre.gov(NOAA 和 BOEM)提供。”并保留 source: marinecadastre。
丹麦海事局可依据丹麦公共部门信息法再利用;数据管理政策禁止以会导致私人个体身份可被识别的方式组合数据基于该数据的航迹历史会标注来源“丹麦海事局。”并保留 source: dma。
aiscast 自身的代码采用 MIT 许可。aiscast 使用带密钥的哈希而非地址来识别 UDP 站点(发送 !AIVDO 的站点以其 MMSI 作为密钥,其位置包含在它共享的数据中)。/v1/stations 上的站点标签,以及船舶搜索和 /v1/vessels/{mmsi} 中的 near,会显示来自 GeoNames 的最近城镇名称;GeoNames 采用 CC BY 4.0 许可。归档会按来源保留原始接收数据,因此项目可以清除任何来源的数据。docs/policy.md 说明了完整立场:包括贡献者协议的内容、隐私规则,以及项目计划如何在不重新许可数据的情况下为自身提供资金。

贡献

开发者和运营者请参阅 CONTRIBUTING.md。

评论

支持 Markdown

第一次接触 MCP?

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

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