Give Claude, Cursor, ChatGPT, or any MCP-compatible assistant direct access to real-time AIS tracking, fleet data, port congestion, and IMO CII emissions scoring — no custom integration code.
Overview
The Model Context Protocol lets AI assistants call external tools directly in conversation. Instead of stale training data, your AI fetches live vessel positions, fleet status, and port congestion by asking a question.
Example: ask Claude "Where is IMO 9873888 right now?" and it calls track-vessel-tool automatically.
Live AIS positions, fleet status, and port congestion — not a training-data snapshot.
Ask "Which of my fleet's vessels are near Rotterdam?" and get a real answer, not a stale guess.
MCP calls use your existing plan. Each tool call counts as one API request, like any REST call.
18 tools
Every tool maps 1:1 to a REST endpoint — same params, same response shape. Authenticate with Authorization: Bearer or X-API-Key, not a key in the URL.
Search the vessel catalog by name, IMO, ship type, flag, DWT, or year built.
Current position, position history, active route, and last port visits.
Vessels within a radius of a latitude/longitude point.
Aggregated distance/speed/port-time analytics for a vessel, port, or fleet.
Batch look-up up to 100 vessels by IMO/MMSI in one call.
CO2 emissions and IMO CII carbon-intensity rating (A-E) for a vessel.
Live congestion snapshot and wait/berth-time stats for a port.
List and paginate the port catalog.
Full details for a single port, live-refreshed.
Vessels expected to arrive at a port.
Recent arrival/departure activity at a port.
Vessel particulars (name, type, flag, tonnage, dimensions) by IMO.
A vessel's latest route/voyage details by IMO.
Current position by IMO.
Current position by MMSI.
Live, real-time AIS position. Premium/credit-metered.
Vessels currently in a given port.
Last known position plus port-call history by MMSI.
Getting started
Server URL
Same URL for every client. Authenticate with the same X-API-Key or Authorization: Bearer credential you already use for the REST API — no OAuth flow to run.
initialize and tools/list work with no key at all, so an agent can see what's available before it has one. Only tools/call needs a real key.
Need a key first? Start a free trial, or if you're an autonomous agent, mint your own sandbox credential with no human filling out a form — see /auth.md.
curl -X POST https://mcp.vessels-api.com/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Connect your client
https://mcp.vessels-api.com/mcp.Authorization = Bearer YOUR_API_KEY, mark it Required.Request-header auth is an Anthropic beta with limited rollout — if your dialog has no Request headers section yet, use Claude Code below instead, which supports it for every account today.
One command — works today regardless of the Request-headers rollout:
claude mcp add --transport http vessels-api \
https://mcp.vessels-api.com/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
Add --scope project to share it via a checked-in .mcp.json instead of your personal user scope.
Settings → Tools & Integrations → MCP → New MCP Server opens
~/.cursor/mcp.json (global) or
.cursor/mcp.json (project) for you to edit directly — paste this in and restart Cursor:
{
"mcpServers": {
"vessels-api": {
"url": "https://mcp.vessels-api.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
https://mcp.vessels-api.com/mcp.Script it
The server is stateless — no initialize handshake or session id required, a direct tools/call is enough.
import httpx
import json
MCP_SERVER_URL = "https://mcp.vessels-api.com/mcp"
API_KEY = "YOUR_API_KEY"
def call_tool(name: str, arguments: dict) -> dict:
response = httpx.post(
MCP_SERVER_URL,
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {"name": name, "arguments": arguments},
},
timeout=30,
)
return response.json()
result = call_tool("track-vessel-tool", {"imo": "9873888"})
print(json.dumps(result, indent=2))
FAQ