VesselAPI MCP Server
Exposes VesselAPI maritime data to AI assistants through 19 MCP tools for vessels, ports, port events, emissions, and geographic vessel searches.
Search vessels by name, IMO, MMSI, ENI, callsign, flag, type, or year built and retrieve vessel details.
Get latest vessel positions (single or batch), declared ETAs, EU MRV emissions reports, and marine casualty records.
Search ports and get port details by UN/LOCODE, including inbound vessels and arrivals/departures.
Query port events by port, by vessel, or across all covered ports with time, country, and event-type filters.
Find vessels in a bounding box or within a radius using recent AIS positions.
Use manual pagination via
limitandnextTokento manage API quota.
VesselAPI MCP Server
An MCP (Model Context Protocol) server that exposes maritime data from the VesselAPI to AI assistants like Claude Desktop, Cursor, Windsurf, and Claude Code.
Server page: vesselapi.com/mcp-server
Prerequisites
Sign up at dashboard.vesselapi.com
Create an API token in your dashboard
Use the token as
VESSELAPI_API_KEYin the configuration below
Resources: Documentation | API Explorer | Dashboard | Contact Support
Related MCP server: @globalfishingwatch/gfw-mcp-js
Features
19 tools covering vessels, ports, location search, and emissions
Vessel search, positions (single and batch), ETA, emissions, and casualties
Port search, details, port events (arrivals/departures), and port event search across all covered ports
Geographic vessel search (bounding box and radius)
Manual pagination to control API quota usage
Quick Start
No installation required. Configure your AI client with npx:
{
"mcpServers": {
"vesselapi": {
"command": "npx",
"args": ["-y", "vesselapi-mcp"],
"env": {
"VESSELAPI_API_KEY": "your-api-key"
}
}
}
}Configuration
Add the JSON above to the config file for your client:
Client | Config file |
Claude Desktop |
|
Cursor |
|
Claude Code |
|
Windsurf |
|
Tools
Vessel Tools
Tool | Description |
| Search vessels by name, IMO, MMSI, flag, type, callsign, or year built |
| Get detailed vessel information |
| Get the latest stored vessel position (lat/lon, speed, heading, timestamp); it may be hours or days old |
| Get the ETA the vessel last reported (declared, not predicted) |
| Get EU MRV emissions reports (CO2, fuel consumption) |
| Get marine casualty records |
| Get positions for multiple vessels at once (with optional time range) |
Port Tools
Tool | Description |
| Search ports by name, country, type, size, region, harbor size, or harbor use |
| Get port details by UN/LOCODE |
| Get vessels reporting a port as their destination, within an ETA window |
| Get arrivals/departures for a port (last 2 hours unless |
| Get port events for a vessel (last 2 hours unless |
| List port events across all covered ports, with filters for time, country, port, vessel, or event type |
| Search port events by port name |
| Search port events by vessel name |
| Get the most recent port event for a vessel |
Emissions Tools
Tool | Description |
| List EU MRV emissions reports, with an optional reporting-year filter |
Location Tools
Tool | Description |
| Find vessels with an AIS position in a bounding box (default last 2 hours, at most 4 hours) |
| Find vessels with an AIS position within a radius of a point (default last 2 hours, at most 4 hours) |
Pagination
All list endpoints support limit and nextToken parameters for manual pagination. When more results exist, the response includes a nextToken. Pass it in the next call to get the next page.
Development
git clone https://github.com/vessel-api/vesselapi-mcp.git
cd vesselapi-mcp
npm install
npm run buildnpm run build # Build the server
npm run typecheck # Type-check without emitting
npm run clean # Remove build artifactsTesting with MCP Inspector
VESSELAPI_API_KEY=your-key npx @modelcontextprotocol/inspector node dist/index.jsAttribution
Data attribution is listed at https://vesselapi.com/disclaimer#sources.
License
MIT
Available Tools
19 toolsget_portB
Get detailed information about a specific port by UN/LOCODE
Inputs: unlocode (required).
get_port_eventsA
Get port events (arrivals/departures) for a specific port. Covers only the last 2 hours unless timeFrom is given.
Inputs: unlocode (required), limit, timeTo, timeFrom, +1 more.
get_port_events_by_vesselA
Get port events (arrivals/departures) for a specific vessel. Covers only the last 2 hours unless timeFrom is given. Events are kept for 31 days.
Inputs: vesselId (required), limit, idType, timeTo, +4 more.
get_port_inboundA
Get vessels whose own reported destination is this port, with a declared ETA inside the arrival window. ETAs are reported by the vessels, not predicted.
Inputs: unlocode (required), etaTo, limit, timeTo, +3 more.
get_vesselC
Get detailed information about a specific vessel
Inputs: vesselId (required), idType.
get_vessel_casualtiesC
Get marine casualty records for a vessel
Inputs: vesselId (required), limit, idType, nextToken.
get_vessel_emissionsB
Get EU MRV annual emissions reports for a vessel (CO2, fuel consumption). Only ships that report under EU MRV have data.
Inputs: vesselId (required), limit, idType, nextToken.
get_vessel_etaA
Get the most recent ETA the vessel itself reported in its AIS voyage data. This is the declared ETA, not a prediction.
Inputs: vesselId (required), idType.
get_vessel_last_port_eventA
Get the most recent port event (arrival or departure) for a vessel
Inputs: vesselId (required), idType.
get_vessel_positionA
Get the latest stored position of a vessel (latitude, longitude, speed, heading, timestamp). Check the timestamp: the fix may be hours or days old, especially for a vessel away from the coast. The response also carries the vessel's particulars, the destination and ETA it last reported, and a check against its previous position (minutes and distance between that report and this one, implied speed and course, whether the identifiers match). minutes_since_previous is not the age of this position; read vesselPosition.timestamp for that. A separate get_vessel_eta call is needed only when vesselEta is missing.
Inputs: vesselId (required), sat, idType, satMaxAgeMinutes, +1 more.
get_vessel_positions_batchB
Get positions for multiple vessels at once by MMSI or IMO numbers
Inputs: ids (required), limit, idType, timeTo, +2 more.
get_vessels_in_areaA
Find vessels with an AIS position inside a rectangular bounding box during the time window (default the last 2 hours, at most 4 hours). The latitude span plus the longitude span may not exceed 4 degrees.
Inputs: latMax (required), latMin (required), lonMax (required), lonMin (required), +4 more.
get_vessels_in_radiusA
Find vessels with an AIS position within a radius of a point during the time window (default the last 2 hours, at most 4 hours). The radius is in METRES, not nautical miles or kilometres.
Inputs: radius (required), latitude (required), longitude (required), limit, +3 more.
list_emissionsA
List EU MRV annual emissions reports (ships calling at EU and EEA ports), with an optional reporting-year filter
Inputs: limit, period, nextToken.
list_port_eventsA
List port events (arrivals/departures) across all covered ports, with optional filters for time, country, port, vessel, or event type. Covers only the last 2 hours unless timeFrom is given. Events are kept for 31 days.
Inputs: limit, timeTo, country, portName, +5 more.
search_port_events_by_portA
Search port events by port name. Covers only the last 2 hours unless timeFrom is given.
Inputs: portName (required), limit, timeTo, timeFrom, +1 more.
search_port_events_by_vesselA
Search port events by vessel name. Covers only the last 2 hours unless timeFrom is given.
Inputs: vesselName (required), limit, timeTo, timeFrom, +1 more.
search_portsB
Search for ports by name, country, type, size, region, harbor size, or harbor use
Inputs: name, size, limit, region, +5 more.
search_vesselsA
Search for vessels. Use q when you have an identifier but do not know which kind it is; use the specific filters to narrow a fleet.
Inputs: q, eni, imo, flag, +8 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 19 tools
The port-events family is badly overlapping: get_port_events, list_port_events, search_port_events_by_port, search_port_events_by_vessel, and get_port_events_by_vessel all retrieve the same arrivals/departures data, and the distinction between get_*_by_vessel vs search_*_by_vessel is opaque because the by_vessel tool is described identically to its search counterpart. Position tools are more distinct, but an agent could easily misselect among the five port-event tools.
Names are all snake_case verb_noun, which is readable, but the verbs (get/search/list) are applied inconsistently to the same resource, so 'search_port_events_by_vessel' and 'get_port_events_by_vessel' look synonymous rather than modeling different operations. This erodes the predictability of the verb pattern.
19 tools is on the heavy side for the domain, and much of that weight comes from the redundant five-tool port-events cluster rather than from genuinely distinct capabilities.
The surface covers core workflows well: vessel lookup, port lookup, positions (single/batch/area/radius), declared ETA, emissions, casualties, and port events. A dedicated vessel schedule or route tool would help, but agents can work around the gaps.
Maintenance
Related MCP Connectors
Query your books, company data, business health, and ship invoices from your AI assistant.
Real-time data API for AI Agents: stocks, weather, forex, logistics, search, scrape, news, IP.
Connect Claude, Cursor, Codex, and other AI tools to your robotics mission data.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access and analyze NOAA electronic navigational charts with S-57 format parsing, supporting coordinate-based chart discovery, navigation feature extraction, and maritime safety queries.12 npm1ISC
- AlicenseNot gradedqualityCmaintenanceAccess Global Fishing Watch data from any MCP-compatible AI assistant or terminal: search vessels, retrieve fishing activity and port events, look up marine regions, and compute aggregate statistics.15 npm2Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides real-time maritime weather data, tropical cyclone warnings, and route calculations for AI agents.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI assistants to access real-time vessel tracking, port information, and maritime data through the Datalastic Marine AIS Data API.1MIT