Free live AIS ship tracking: find any ship by name, MMSI or IMO, and see who is arriving at a port.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
A port's Arrivals board (ships in port now, then ships en route by ETA) and Departures board (ships that left in the last 48 hours), as its Shiptrail page shows them, by UN/LOCODE. Each row carries the ship's MMSI for get_ship.
The port's UN/LOCODE, such as USHNL.
At most this many rows on each list; the counts are always whole.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http shiptrail https://shiptrail.io/mcp
A port's Arrivals board (ships in port now, then ships en route by ETA) and Departures board (ships that left in the last 48 hours), as its Shiptrail page shows them, by UN/LOCODE. Each row carries the ship's MMSI for get_ship.
| Argument | Type | Description |
|---|---|---|
| limit | integer | At most this many rows on each list; the counts are always whole. |
| locode* | string | The port's UN/LOCODE, such as USHNL. |
{
"type": "object",
"required": [
"locode"
],
"properties": {
"limit": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1,
"description": "At most this many rows on each list; the counts are always whole."
},
"locode": {
"type": "string",
"pattern": "^[A-Za-z]{2}[A-Za-z0-9]{3}$",
"description": "The port's UN/LOCODE, such as USHNL."
}
},
"additionalProperties": false
}Everything Shiptrail's page shows about one ship, by MMSI: identity, size, position, speed, course and status, destination and ETA, where she came from, recent port calls, particulars and registry facts, photo and its credit, a Wikipedia summary, and the ships near her. No history over time.
| Argument | Type | Description |
|---|---|---|
| mmsi* | integer | Her MMSI, 9 digits. |
{
"type": "object",
"required": [
"mmsi"
],
"properties": {
"mmsi": {
"type": "integer",
"maximum": 999999999,
"minimum": 0,
"description": "Her MMSI, 9 digits."
}
},
"additionalProperties": false
}Find ports by name or UN/LOCODE. Busy ports come first, with how many ships are in port, en route and lately departed. Use get_port with a UN/LOCODE for its boards.
| Argument | Type | Description |
|---|---|---|
| limit | integer | At most this many ports. |
| query* | string | A port's name or part of it, or its UN/LOCODE. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1,
"description": "At most this many ports."
},
"query": {
"type": "string",
"maxLength": 40,
"minLength": 2,
"description": "A port's name or part of it, or its UN/LOCODE."
}
},
"additionalProperties": false
}Find ships by name, MMSI (9 digits) or IMO number (7 digits): every ship with a Shiptrail page, any class, on the map now or heard in the last year. Ships on the map now come first. Use get_ship with an MMSI for the whole record.
| Argument | Type | Description |
|---|---|---|
| limit | integer | At most this many ships. |
| query* | string | A ship's name or part of it, an MMSI or an IMO number. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1,
"description": "At most this many ships."
},
"query": {
"type": "string",
"maxLength": 40,
"minLength": 3,
"description": "A ship's name or part of it, an MMSI or an IMO number."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.