An MCP (Model Context Protocol) server that exposes maritime data from the VesselAPI to AI assistants like Claude Desktop, Cursor, Windsurf, and Claude Code.
- 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
- 23 tools covering vessels, ports, location search, emissions, and maritime safety
- Vessel search, positions (single and batch), ETA, classification, ownership, emissions, inspections, and casualties
- Port search, details, port events (arrivals/departures), and global port event search
- Geographic vessel search (bounding box and radius)
- NAVTEX maritime safety messages
- Manual pagination to control API quota usage
No installation required — just configure your AI client with npx:
{
"mcpServers": {
"vesselapi": {
"command": "npx",
"args": ["-y", "vesselapi-mcp"],
"env": {
"VESSELAPI_API_KEY": "your-api-key"
}
}
}
}Add the JSON above to the config file for your client:
| Client | Config file |
|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) |
| Cursor | .cursor/mcp.json or ~/.cursor/mcp.json |
| Claude Code | .claude/settings.json or ~/.claude/settings.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Tool | Description |
|---|---|
search_vessels |
Search vessels by name, IMO, MMSI, flag, type, callsign, year built, class society, or owner |
get_vessel |
Get detailed vessel information |
get_vessel_position |
Get current vessel position (lat/lon, speed, heading) |
get_vessel_eta |
Get vessel estimated time of arrival |
get_vessel_classification |
Get classification details (class society, surveys, hull) |
get_vessel_ownership |
Get ownership details (owner, manager, operator) |
get_vessel_emissions |
Get emissions data (CO2, fuel consumption) |
get_vessel_inspections |
Get port state control inspections |
get_vessel_casualties |
Get marine casualty records |
get_vessel_inspection_detail |
Get detailed information about a specific inspection |
get_vessel_positions_batch |
Get positions for multiple vessels at once (with optional time range) |
| Tool | Description |
|---|---|
search_ports |
Search ports by name, country, type, size, region, harbor size, or harbor use |
get_port |
Get port details by UN/LOCODE |
get_port_events |
Get arrivals/departures for a port |
get_port_events_by_vessel |
Get port events for a vessel |
list_port_events |
List port events globally with filters for time, country, port, vessel, or event type |
search_port_events_by_port |
Search port events by port name |
search_port_events_by_vessel |
Search port events by vessel name |
get_vessel_last_port_event |
Get the most recent port event for a vessel |
| Tool | Description |
|---|---|
list_emissions |
List global vessel emissions data with optional year filter |
| Tool | Description |
|---|---|
get_vessels_in_area |
Find vessels in a bounding box (with optional time range) |
get_vessels_in_radius |
Find vessels within a radius of a point (with optional time range) |
| Tool | Description |
|---|---|
get_navtex_messages |
Get NAVTEX maritime safety messages |
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.
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 artifactsVESSELAPI_API_KEY=your-key npx @modelcontextprotocol/inspector node dist/index.jsMIT