Open Waters AIS について
Open Waters AISは、コミュニティネットワーク、政府フィード、ボランティア受信局からリアルタイムのAIS船舶データを集約します。船舶や地域、位置を指定するMCP検索に加え、ストリーミングAPIとカバレッジ情報を提供します。
主な機能
- 01MMSIまたは名称による船舶検索
- 02地域や近接位置による船舶検索
- 03リアルタイムAISメッセージストリーム
- 04データソースとカバレッジの確認
- 05イベントごとの出典・ライセンス情報
活用シーン
- 01船舶の現在位置の検索
- 02指定エリアの船舶交通の確認
- 03地点周辺の船舶の監視
- 04データソースとカバレッジの確認
MCP 対応
MMSI、地域、近接位置、名称から船舶を検索し、カバレッジを確認する読み取り専用MCPツールを提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://ais.openwaters.io/mcpclaude mcp add --transport http io-openwaters-ais https://ais.openwaters.io/mcp{"mcpServers":{"io-openwaters-ais":{"type":"http","url":"https://ais.openwaters.io/mcp"}}}Cursor で開く{"servers":{"io-openwaters-ais":{"type":"http","url":"https://ais.openwaters.io/mcp"}}}VS Code で開く{"mcpServers":{"io-openwaters-ais":{"type":"http","url":"https://ais.openwaters.io/mcp"}}}{"mcpServers":{"io-openwaters-ais":{"serverUrl":"https://ais.openwaters.io/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
aiscast
コミュニティネットワーク、政府のオープンフィード、ボランティア受信機から、バウンディングボックスで指定した範囲のAIS船舶交通をリアルタイムにストリーミングします。Open Watersの一部です。公開インスタンスはais.openwaters.ioです。ライブマップはopenwaters.io/ais/vesselsで確認できます。
これはベータ版です。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イベントが1件届きます。各イベントには、ソース、ステーション、受信時刻、元のセンテンス、デコードされたフィールドが含まれます。"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は、読み取り専用の5つのツールを備えた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キーペアを生成して、{"pubkey":"<base64url public key>"}を含むPOST https://ais.openwaters.io/v1/keysを、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を実行します。各メッセージはデコードされるとすぐに、JSON ストリームと同じ WebSocket アドレスを使って MQTT 経由で送信されます。データはsource: station:<station id>として表示されます。トークンのページで局名を設定してください。設定するまでは、受信範囲内の船舶交通に最も近い町の名前が表示されます。AIS-catcher の HTTP 出力も利用できます。-H https://ais.openwaters.io/v1/receive USERPWD x:<token> GZIP on INTERVAL 5を指定すると、同じ局のデータとして 5 秒ごとにバッチを送信します。 - UDP(トークン不要):AIS-catcher の
-u udp.ais.openwaters.io 10110、ホストをudp.ais.openwaters.io、ポートを10110に設定した docker-shipfeeder、またはプレーンな!AIVDM/!AIVDO文(TAG ブロックも歓迎)を送信する任意の NMEA フォワーダーを使用できます。局は、アドレス自体ではなく、アドレスから生成されたキー付きハッシュである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 | フィンランドの海域 | リアルタイム |
| ボランティア受信機 | 設置場所による(最初の受信局設置時点ではバザーズ湾/ヴィンヤード・サウンド) | リアルタイム |
| AISHub aggregate | 世界中の陸上受信範囲、約5万隻 | 約1分の遅延 |
| aisstream.io | 稼働時は世界中 | リアルタイムだが、頻繁に停止 |
AISHubとその貢献者のおかげで、世界中の陸上受信範囲の多くをカバーできています。こちらもボランティアによる受信データを提供し、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 メンバーに、同じクレジットがソースごとに1件ずつ含まれます。以下の表は、同じ情報を参考用にまとめたものです。
| ソース | ライセンス | 必要な対応 |
|---|---|---|
| Kystverket | NLOD 2.0 | クレジット表記:「ノルウェー沿岸管理局が配布する、ノルウェーのオープンガバメントデータライセンス(NLOD)に基づくデータを含みます。」NLOD はサブライセンスできないため、利用者が直接拘束されます。 |
| BarentsWatch | BarentsWatch API 利用規約に基づくNLOD | クレジット表記:「BarentsWatch が提供するデータです。」Kystverket と同じ AIS Norge のデータであるため、Kystverket のクレジット表記も適用されます。 |
| Fintraffic Digitraffic | CC 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}上および MCP のget_vessels内のwikidataオブジェクトに、license: CC0-1.0として記載されています。リンク先の Commons の写真とカテゴリには、それぞれ独自のライセンスが適用されます。 |
| US Coast Guard PSIX | パブリックドメイン(米国政府の著作物) | 対応は不要です。/v1/vessels/{mmsi}上および MCP のget_vessels内のuscgオブジェクトのlicenseに記載されています。 |
| AMSA 船舶登録簿 | CC BY 4.0 | クレジット表記:「© Australian Maritime Safety Authority」。/v1/vessels/{mmsi}上および MCP のget_vessels内のsources.amsaエントリーに、license: CC-BY-4.0として記載されています。 |
| MarineCadastre | パブリックドメイン(米国政府の著作物)。NOAA は 2024 年版を CC0 と表示しています | 必須の対応はありません。これに基づく航跡履歴には「U.S. Coast Guard Nationwide AIS, via MarineCadastre.gov (NOAA and BOEM).」とクレジット表記し、source: marinecadastreを維持してください。 |
| デンマーク海事局 | デンマークの公共部門情報法に基づいて再利用できます。データ管理ポリシーでは、個人が特定されるような形で他のデータと組み合わせることを禁止しています | これに基づく航跡履歴には「Danish Maritime Authority.」とクレジット表記し、source: dmaを維持してください。 |
aiscast 独自のコードはMITライセンスです。aiscast は、アドレスではなくキー付きハッシュを使って UDP ステーションを識別します(!AIVDO を送信するステーションは、その MMSI をキーとしており、位置情報は共有するデータに含まれます)。/v1/stations のステーションラベル、および船舶検索と /v1/vessels/{mmsi} の near には、GeoNames の最寄りの町が表示されます。ライセンスはCC BY 4.0です。アーカイブでは送信元ごとに受信データを生のまま保持するため、このプロジェクトは任意の送信元のデータを削除できます。docs/policy.md には、貢献者契約の内容、プライバシー規則、データのライセンスを変更せずにプロジェクトをどのように運営資金で支える予定かを含む、方針の全容が記載されています。 |
貢献
開発者と運用者の方は、CONTRIBUTING.mdをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。