Open Waters AIS MCP server
Ask Claude, ChatGPT, or an agent of your own about ship traffic. The Open Waters AIS MCP (Model Context Protocol) server looks up a vessel’s last report, lists what is in a harbor, traces where a ship has been, and says which receivers cover an area. No account, no key.
Server URL
https://ais.openwaters.io/mcpWhat you can ask
Track your fleet. Where was MMSI 257123000 last heard? What destination and ETA did Viking Cinderella report? Where did she sail yesterday? Which of these ten vessels has not reported in the last half hour?
Monitor your waters. What is in the port of Rotterdam right now? List the tankers in the Great Belt. Is anything within five miles of 59.9 N, 10.7 E? What is around the ferry Pearl Seaways?
Check coverage. Do you cover the Gulf of Mexico? How fresh is the data around Helsinki? Which stations hear Bergen?
Area and radius searches show vessels heard in the last 30 minutes. Searches by name or MMSI can return older reports. Coverage depends on what the receivers hear, so check the time of each report. For continuous updates, use the WebSocket stream. For navigation and collision avoidance, use onboard instruments and official charts.
Add it to your assistant
Claude.ai and Claude Desktop: Open Waters AIS is in Claude’s connector directory. Open its listing and connect it. To add it by hand instead, go to Customize → Connectors, add a custom web connector named Open Waters AIS, enter https://ais.openwaters.io/mcp, and choose No sign-in if prompted. On Team and Enterprise plans, an organization owner can add it in organization settings. Claude’s custom connector guide
ChatGPT: On the web, turn on Developer mode in Settings, then create an app with the server URL https://ais.openwaters.io/mcp and no authentication. Developer mode needs a paid plan, and in a Business, Enterprise, or Edu workspace an admin may have to allow it first.
Claude Code:
claude mcp add --transport http open-waters-ais https://ais.openwaters.io/mcp
Cursor: Install in Cursor, or edit ~/.cursor/mcp.json and add an entry to mcpServers:
{
"mcpServers": {
"open-waters-ais": {
"type": "http",
"url": "https://ais.openwaters.io/mcp"
}
}
}
VS Code: Install in VS Code, or edit .vscode/mcp.json and add an entry to servers:
{
"servers": {
"open-waters-ais": {
"type": "http",
"url": "https://ais.openwaters.io/mcp"
}
}
}
Gemini CLI: Edit ~/.gemini/settings.json, and add an entry to mcpServers:
{
"mcpServers": {
"open-waters-ais": { "httpUrl": "https://ais.openwaters.io/mcp" }
}
}
Ask your agent. Most agents that can edit their own configuration will do this for you. Tell Claude Code, Cursor, or whatever you use: “Add the Open Waters AIS MCP server at https://ais.openwaters.io/mcp”. Check that it chose the Streamable HTTP transport with no authentication.
Any other client: Streamable HTTP, stateless, plain JSON responses. One request with no session works, which is also the quickest way to see what a tool returns:
curl -X POST https://ais.openwaters.io/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"find_vessels_near","arguments":{"lat":59.9,"lon":10.7,"radius_nm":5}}}'
Tokens and limits
Anonymous calls can search an area of up to 100 square degrees (about 10° by 10°) or look up 10 MMSIs at a time. A free personal token raises those limits to 400 square degrees and 50 MMSIs. Looking up a vessel by IMO number requires access to the raw NMEA feed. Contributors (the server calls this the feeder tier) and partners have that access. Every tier can see the IMO number when a vessel reports one. See Limits for the access tiers.
Send the token as an Authorization: Bearer header. Where to put it depends on the client:
- Claude Code: add
--header "Authorization: Bearer <token>"to theclaude mcp addcommand. - Cursor, VS Code, and Gemini CLI: add
"headers": { "Authorization": "Bearer <token>" }to the server entry. - Claude.ai and Claude Desktop: if your custom connector has a Request headers section, choose No sign-in and set
AuthorizationtoBearer <token>. Otherwise, use anonymous access. - ChatGPT: use anonymous access.
Never put the token in the URL. A credential in a query string ends up in logs and browser history, and the MCP specification forbids it.
Each tool call counts toward the HTTP limit of 120 requests per minute. Area, radius, and name searches return up to 50 vessels by default. Set limit to request up to 200 vessels.
Tools
The server provides six read-only tools.
| Tool | Answers |
|---|---|
get_vessels |
Last report and available particulars by MMSI, including destination and ETA. Lists identifiers the network has never heard. Accepts IMO numbers if you have raw-feed access. |
find_vessels_in_area |
What is inside a bounding box, newest report first, with optional kind and ship-type filters. |
find_vessels_near |
What is within a radius of up to 50 NM of a point or of another vessel, nearest first, with distance and bearing. |
search_vessels_by_name |
MMSIs and last known positions for vessels whose names contain the search text, regardless of when they last reported. |
get_vessel_track |
Positions heard from one vessel, oldest first, with gaps marked in the default track. Covers the last 24 hours by default or a requested span of up to 366 days. |
get_coverage |
Reporting sources and stations, feed delays, and vessel counts for an area. Counts cover the last 30 minutes by default. Use max_age to include older reports. |
A track returns up to 50 positions by default. Set limit to request up to 200 positions per call, even for a 366-day range. The default track keeps the points that show the shape of the route. If the server simplifies it further or leaves out older positions to stay within its limits, it sets truncated. With interval_minutes, it keeps the newest positions when more match than the limit. Request a shorter time range for more detail.
Vessel rows carry seen and age_s for freshness, plus the source and station that heard the report. When available, they include the flag, ship type, navigational status, IMO number, call sign, destination, ETA, draught, and dimensions. The area, radius, and name searches take a flag filter, an ISO 3166-1 alpha-2 code such as NO or MH. When displaying vessels or tracks, include the source credits in attribution. For registered particulars from get_vessels, provenance identifies the source of each field and sources supplies its credit and license.
Questions
Is there an Open Waters AIS connector for Claude?
Yes. Open Waters AIS is listed in Claude's connector directory at https://claude.ai/directory/open-waters-ais. Connect it from there in Claude.ai or Claude Desktop, or add https://ais.openwaters.io/mcp as a custom connector.
Does it work with ChatGPT?
Yes, on paid ChatGPT plans. Turn on Developer mode in Settings, then create an app with the server URL https://ais.openwaters.io/mcp and no authentication.
Do I need an account or an API key?
No. The MCP server answers anonymous calls. A free personal token raises the area and vessel limits.
Is it free?
Personal use is free, with the same limits as the rest of Open Waters AIS. Qualifying receiver contributors can also use it commercially; for other commercial access, contact us. Each source keeps its own license, and vessel and track results carry the credit to show.
The rest of the AIS API, including the WebSocket stream and vessel tracks over HTTP, is in the Open Waters AIS API reference.