VesselAPI MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VESSELAPI_API_KEY | Yes | VesselAPI API key for authentication |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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. |
| get_vesselC | Get detailed information about a specific vessel |
| 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. |
| 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. |
| get_vessel_emissionsB | Get EU MRV annual emissions reports for a vessel (CO2, fuel consumption). Only ships that report under EU MRV have data. |
| get_vessel_casualtiesC | Get marine casualty records for a vessel |
| get_vessel_positions_batchB | Get positions for multiple vessels at once by MMSI or IMO numbers |
| search_portsB | Search for ports by name, country, type, size, region, harbor size, or harbor use |
| get_portB | Get detailed information about a specific port by UN/LOCODE |
| 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. |
| get_port_eventsA | Get port events (arrivals/departures) for a specific port. Covers only the last 2 hours unless timeFrom is given. |
| 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. |
| 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. |
| search_port_events_by_portA | Search port events by port name. Covers only the last 2 hours unless timeFrom is given. |
| search_port_events_by_vesselA | Search port events by vessel name. Covers only the last 2 hours unless timeFrom is given. |
| get_vessel_last_port_eventA | Get the most recent port event (arrival or departure) for a vessel |
| list_emissionsA | List EU MRV annual emissions reports (ships calling at EU and EEA ports), with an optional reporting-year filter |
| 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. |
| 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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.