Maritime Vessel Tracking
БесплатноНе проверенMaritime Vessel Tracking — Model Context Protocol server
Описание
Maritime Vessel Tracking — Model Context Protocol server
README
Real-time AIS vessel tracking, ship particulars, port ETAs, going-dark detection, route anomaly detection, and sanctions screening — all in one MCP server. No API key required.
Track any vessel at sea using its IMO number, MMSI, or name. Get current position, speed, heading, and destination. Look up ship technical data including deadweight, gross tonnage, year built, and flag state. Calculate port arrival ETAs with congestion scores. Detect vessels that have stopped broadcasting AIS (going dark). Analyze route deviations from expected paths. Screen vessels against OFAC, EU, and UN sanctions lists.
Quick Start
MCP Configuration (Claude Desktop)
Add to your ~/.claude/config.json or claude_desktop_config.json:
{
"mcpServers": {
"maritime-vessel-tracking": {
"command": "npx",
"args": ["-y", "@apify/maritime-vessel-tracking-mcp"],
"env": {}
}
}
}
Or connect directly to the live MCP endpoint:
{
"mcpServers": {
"maritime-vessel-tracking": {
"url": "https://maritime-vessel-tracking-mcp.apify.actor/mcp"
}
}
}
Test the Connection
// Claude Desktop: press Cmd+K to open MCP tools, search "vessel"
What Data Can You Extract?
The Maritime Vessel Tracking MCP provides six specialized tools that cover the full lifecycle of vessel intelligence — from real-time position tracking to sanctions compliance.
Real-Time AIS Position Data
Every vessel over 300 gross tons broadcasts AIS (Automatic Identification System) signals. This MCP retrieves current AIS broadcasts including:
- Latitude and longitude — precise position in decimal degrees
- Speed over ground — in knots
- Heading (true) — compass direction in degrees
- Destination port — reported destination from AIS broadcast
- Timestamp — when the position was last broadcast
Ship Particulars
Technical specifications for any vessel by IMO number:
- Deadweight tonnage (DWT) — maximum weight the ship can carry
- Gross tonnage (GT) — measure of ship volume
- Year built — construction date
- Ship type — Oil Tanker, Bulk Carrier, Container Ship, etc.
- Flag state — country of registration and flag code
Port Arrival ETA
Calculated estimated time of arrival combining vessel speed with port congestion data:
- ETA in ISO 8601 format — precise arrival time
- Distance in nautical miles — from current position to destination
- Port congestion score — 1-10 scale based on USCG PSC inspection rates
- Congestion details — explanation of factors affecting the score
Going-Dark Detection
Vessels that suddenly stop broadcasting AIS are a primary indicator of sanctions evasion and dark fleet operations. This tool identifies:
- Last known position — where the vessel was last seen
- Time since last broadcast — how long the vessel has been silent
- Risk indicators — flags for vessels requiring further investigation
- PSC detention history — USCG Port State Control inspection results
Route Anomaly Detection
Compare vessel movement against expected routes or established shipping lanes:
- Deviation distance — how far the vessel is from expected route in nautical miles
- Anomaly score — LOW, MEDIUM, or HIGH
- Flagged waypoints — specific coordinates where deviations occurred
- Shipping lane analysis — comparison against major established routes
Sanctions Screening
Ship-level screening against OFAC SDN, EU Consolidated, and UN Security Council lists:
- Match status — CLEAR, POSSIBLE, or REVIEW
- Risk indicators — flag state, vessel age, ship type
- Recommended action — based on risk level
- List sources — which sanctions lists were checked
Why Use This Tool?
No API keys required. Unlike VesselFinder or other commercial AIS providers, this MCP uses free data sources (MyShipTracking.com, Equasis.org, USCG PSC) that don't require API authentication. Perfect for prototyping, research, and low-volume production workloads.
AI agent native. Built from the ground up for MCP clients — Claude, Cursor, Windsurf, and any LLM that supports the Model Context Protocol. The 6-tool framework maps directly to maritime intelligence workflows that AI agents encounter in shipping compliance, logistics, and research.
Production-grade reliability. 120-second timeout per source with graceful degradation. If one data source fails, the MCP returns partial results rather than a complete failure. Structured error responses with actionable suggestion fields.
Sanctions compliance ready. The sanctions_screening tool provides ship-level screening combining flag state, vessel age, and ship type into an overall risk assessment. For official compliance workflows, results include recommended actions and disclaimer text.
Open architecture. All data sources are public or free-tier APIs. No proprietary lock-in. The MCP can be extended to add VesselFinder credits for real-time satellite AIS in v2.
Features
6 Specialized Maritime Intelligence Tools
- vessel_position_lookup — AIS position by IMO, MMSI, or vessel name
- ship_particulars_lookup — Technical specs by IMO number
- port_arrival_eta — ETA with port congestion scoring
- going_dark_detection — AIS blackout monitoring
- route_anomaly_detection — Route deviation analysis
- sanctions_screening — OFAC/EU/UN ship-level screening
Universal Vessel Identification
- IMO number (7 digits) — primary identifier
- MMSI number (9 digits) — maritime communications identity
- Vessel name — partial match search supported
Real-Time AIS Data
- Position updated from AIS broadcast network
- Speed and heading in standard maritime units
- Destination port reporting
- Historical track analysis
Port Intelligence
- 11 major ports with congestion scores
- Haversine distance calculation in nautical miles
- ETA based on current speed and distance
Route Analysis
- Point-to-line distance algorithm for route deviation
- Major shipping lane database (Suez, Singapore Strait, Panama, North Atlantic, Indian Ocean)
- Custom route input for specific analysis
Sanctions Screening
- 3-tier risk model: CLEAR, POSSIBLE, REVIEW
- Flag state monitoring (high-risk flags: KP, IR, SY, CU)
- Vessel age factor (25+ years = elevated scrutiny)
- Ship type risk assessment
Graceful Error Handling
- Partial results when sources fail
- Actionable error messages with
suggestionfields - Structured JSON responses with status indicators
- 120-second timeout per data source
Input Parameters
The MCP accepts parameters per tool. All tools accept imo as the primary identifier.
Global Parameters
| Parameter | Type | Description |
|---|---|---|
imo |
string | IMO ship number (7 digits, e.g., 9215420) |
mmsi |
string | Maritime Mobile Service Identity (9 digits, e.g., 477123456) |
vessel_name |
string | Vessel name for partial match search |
Tool-Specific Parameters
| Tool | Required Parameters | Optional Parameters |
|---|---|---|
vessel_position_lookup |
one of imo, mmsi, vessel_name | — |
ship_particulars_lookup |
imo | — |
port_arrival_eta |
imo, destination_port | — |
going_dark_detection |
imo | — |
route_anomaly_detection |
imo | expected_route |
sanctions_screening |
imo | — |
Example API Call
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "ship_particulars_lookup",
"arguments": {
"imo": "9215420"
}
},
"id": 1
}
Use Cases
Use Case 1: Pre-Voyage Sanctions Compliance Check
An AI agent automating shipping logistics receives a booking request for a vessel. Before confirming the contract, it runs a sanctions_screening to ensure the vessel isn't on any sanctions list.
// Tool: sanctions_screening
// Input: { "imo": "9215420" }
// Output:
{
"status": "success",
"vessel_imo": "9215420",
"vessel_name": "Ever Given",
"sanctions_screening": {
"match_status": "CLEAR",
"list_sources": ["OFAC SDN", "EU Consolidated", "UN Security Council"],
"risk_indicators": [],
"match_details": "No sanctions list matches identified",
"recommended_action": "PROCEED: Standard due diligence applies"
},
"generated_at": "2026-04-27T12:00:00.000Z"
}
Use Case 2: Real-Time Fleet Position Monitoring
A fleet manager needs to track 5 vessels across the Indian Ocean. The agent loops through each IMO and calls vessel_position_lookup.
// Tool: vessel_position_lookup
// Input: { "imo": "9215420" }
// Output:
{
"status": "success",
"source": "myshiptracking.com",
"query": "9215420",
"position": {
"latitude": 33.5421,
"longitude": 45.3219,
"speed_knots": 14.2,
"heading_degrees": 127,
"destination": "Rotterdam",
"source": "MyShipTracking.com AIS broadcast",
"timestamp": "2026-04-27T11:45:00.000Z"
}
}
Use Case 3: Port ETA with Congestion Aware Routing
A shipping coordinator needs to know when a vessel will arrive at Rotterdam and how congested the port is.
// Tool: port_arrival_eta
// Input: { "imo": "9215420", "destination_port": "Rotterdam" }
// Output:
{
"status": "success",
"vessel_imo": "9215420",
"destination_port": "Rotterdam",
"current_position": {
"latitude": 33.5421,
"longitude": 45.3219,
"speed_knots": 14.2,
"heading_degrees": 127
},
"eta": "2026-05-03T08:30:00.000Z",
"distance_nm": 3452,
"congestion_score": 7,
"congestion_details": "High traffic, average PSC detention rate 3.2%",
"source": "Combined: MyShipTracking.com (AIS) + USCG PSC (psc.emszone.com)"
}
Use Case 4: Detecting Dark Fleet Activity
A compliance analyst suspects a vessel has stopped broadcasting to evade sanctions detection. The agent calls going_dark_detection.
// Tool: going_dark_detection
// Input: { "imo": "9215420" }
// Output:
{
"status": "success",
"vessel_imo": "9215420",
"last_known_position": {
"latitude": 33.5421,
"longitude": 45.3219,
"speed_knots": 0,
"heading_degrees": null,
"destination": null
},
"going_dark_indicators": {
"risk_score": 0,
"indicators": [{
"indicator": "last_position_available",
"value": "vessel currently visible in AIS network",
"risk": "low"
}],
"recommendation": "Normal operation. Continue monitoring."
},
"data_sources": [
"MyShipTracking.com (AIS broadcast)",
"USCG PSC (psc.emszone.com) inspection records"
]
}
Use Case 5: Route Deviation Alert
An analyst investigating a potential ship-to-ship transfer needs to know if a vessel deviated from its expected route.
// Tool: route_anomaly_detection
// Input: {
"imo": "9215420",
"expected_route": [[33.5, 45.3], [25.0, 55.0], [20.0, -10.0]]
}
// Output:
{
"status": "success",
"vessel_imo": "9215420",
"current_position": {
"latitude": 22.5431,
"longitude": 60.1234,
"speed_knots": 12.5
},
"expected_route_provided": true,
"route_analysis": {
"deviation_nm": 127,
"anomaly_score": "HIGH",
"flagged_waypoints": [{
"waypoint": 1,
"distance_nm": 127,
"coordinates": [25.0, 55.0]
}],
"is_within_expected_route": false
},
"anomaly_score": "HIGH",
"flagged_waypoints": [...],
"source": "MyShipTracking.com AIS data"
}
MCP Tools Reference
vessel_position_lookup
Purpose: Look up current AIS position of a vessel.
When to call: "Where is vessel IMO 9215420 right now?" or "What is the current position of the Ever Given?"
Price: $0.05 per call
AI prompt example: "Check the current position of the vessel with IMO 9215420. I need its latitude, longitude, speed, heading, and destination."
{
"name": "vessel_position_lookup",
"description": "Look up current AIS position of a vessel by IMO, MMSI, or vessel name. Returns latitude, longitude, speed, heading, destination, and last updated timestamp.",
"inputSchema": {
"type": "object",
"properties": {
"imo": { "type": "string", "description": "IMO ship number (7 digits)" },
"mmsi": { "type": "string", "description": "MMSI (9 digits)" },
"vessel_name": { "type": "string", "description": "Vessel name for partial match" }
}
}
}
ship_particulars_lookup
Purpose: Look up ship technical particulars by IMO.
When to call: "What are the specifications of vessel IMO 9215420?" or "Get the deadweight, gross tonnage, and flag state for this ship."
Price: $0.05 per call
AI prompt example: "Look up the ship particulars for IMO 9215420. I need the deadweight tonnage, gross tonnage, year built, ship type, and flag state."
{
"name": "ship_particulars_lookup",
"description": "Look up ship technical particulars by IMO number.",
"inputSchema": {
"type": "object",
"properties": {
"imo": { "type": "string", "description": "IMO ship number (7 digits)", "pattern": "^[0-9]{7}$" }
},
"required": ["imo"]
}
}
port_arrival_eta
Purpose: Calculate ETA and port congestion score.
When to call: "When will vessel IMO 9215420 arrive at Rotterdam?" or "What's the congestion score for Singapore port right now?"
Price: $0.10 per call
AI prompt example: "Calculate the ETA for vessel IMO 9215420 to arrive at Rotterdam. Include the port congestion score."
{
"name": "port_arrival_eta",
"description": "Calculate estimated time of arrival at a destination port with congestion score.",
"inputSchema": {
"type": "object",
"properties": {
"imo": { "type": "string", "description": "IMO ship number (7 digits)" },
"destination_port": { "type": "string", "description": "Port name or code" }
},
"required": ["imo", "destination_port"]
}
}
going_dark_detection
Purpose: Detect vessels that stopped broadcasting AIS.
When to call: "Has vessel IMO 9215420 gone dark?" or "Is this vessel still broadcasting its position?"
Price: $0.10 per call
AI prompt example: "Check if vessel IMO 9215420 has gone dark — stopped broadcasting AIS. Provide the last known position and time since last transmission."
{
"name": "going_dark_detection",
"description": "Detect vessels that have stopped broadcasting AIS.",
"inputSchema": {
"type": "object",
"properties": {
"imo": { "type": "string", "description": "IMO ship number (7 digits)" }
},
"required": ["imo"]
}
}
route_anomaly_detection
Purpose: Compare expected vs actual route, flag deviations.
When to call: "Did vessel IMO 9215420 deviate from its expected route?" or "Are there any anomalies in this vessel's track?"
Price: $0.15 per call
AI prompt example: "Analyze the route of vessel IMO 9215420. Did it deviate from its expected path? Flag any suspicious waypoints."
{
"name": "route_anomaly_detection",
"description": "Compare expected route vs actual AIS track, flag deviations.",
"inputSchema": {
"type": "object",
"properties": {
"imo": { "type": "string", "description": "IMO ship number (7 digits)" },
"expected_route": { "type": "array", "description": "Array of waypoints [[lat,lon],...]" }
},
"required": ["imo"]
}
}
sanctions_screening
Purpose: Screen vessel against OFAC, EU, UN sanctions lists.
When to call: "Is vessel IMO 9215420 on any sanctions list?" or "Screen this vessel for OFAC compliance before confirming the booking."
Price: $0.15 per call
AI prompt example: "Screen vessel IMO 9215420 against OFAC, EU, and UN sanctions lists. Provide the match status and any risk indicators."
{
"name": "sanctions_screening",
"description": "Screen vessel against OFAC, EU, and UN sanctions lists at ship level.",
"inputSchema": {
"type": "object",
"properties": {
"imo": { "type": "string", "description": "IMO ship number (7 digits)" }
},
"required": ["imo"]
}
}
Output Example
Complete JSON output from ship_particulars_lookup:
{
"status": "success",
"source": "equasis.org",
"imo": "9215420",
"particulars": {
"vessel_name": "EVER GIVEN",
"flag_state": "Panama (PA)",
"ship_type": "Container Ship",
"gross_tonnage": 220940,
"deadweight_tons": 198936,
"year_built": 2018,
"data_source": "Equasis.org",
"last_updated": "2026-04-27T12:00:00.000Z"
}
}
Complete output from port_arrival_eta:
{
"status": "success",
"vessel_imo": "9215420",
"destination_port": "Rotterdam",
"current_position": {
"latitude": 33.5421,
"longitude": 45.3219,
"speed_knots": 14.2,
"heading_degrees": 127
},
"eta": "2026-05-03T08:30:00.000Z",
"distance_nm": 3452,
"congestion_score": 7,
"congestion_details": "High traffic, average PSC detention rate 3.2%",
"source": "Combined: MyShipTracking.com (AIS) + USCG PSC (psc.emszone.com)"
}
Pricing
No API key required — all tools use free data sources.
| Tool | Price per Call |
|---|---|
vessel_position_lookup |
$0.05 |
ship_particulars_lookup |
$0.05 |
port_arrival_eta |
$0.10 |
going_dark_detection |
$0.10 |
route_anomaly_detection |
$0.15 |
sanctions_screening |
$0.15 |
Pricing is set via Apify's Pay-Per-Event (PPE) model. Prices are denominated in USD and cover Apify infrastructure costs. All prices are at v1.0 — future versions with real-time satellite AIS (VesselFinder) may have credit-based pricing.
How It Works
Architecture
The Maritime Vessel Tracking MCP is built on Apify's standby-node template. It combines:
HTTP server for readiness probe — listens on the port from
Actor.getStartupEnv().PORT, responds 200 OK toGET /within 60 seconds of startup. This is the Apify readiness probe requirement.MCP handleRequest function — exported from
src/main.js, receives tool calls via the MCP protocol, processes them, and returns{ content: [{ type: 'text', text: JSON.stringify(result) }] }. Note: does NOT useresponse.send()which silently fails in standby mode.Actor.run in standby mode — the actor runs in standby mode, waiting for MCP traffic via the Apify gateway.
Data Sources
| Source | URL | Data | Cost |
|---|---|---|---|
| MyShipTracking | myshiptracking.com | AIS position, speed, heading, destination | Free (no API key) |
| Equasis | equasis.org | Ship particulars, flag state, ship type | Free (public) |
| USCG PSC | psc.emszone.com | Port congestion, PSC detention records | Free (public) |
MCP Protocol Flow
Claude Desktop
│
▼ MCP request (JSON-RPC 2.0)
Apify Gateway (maritime-vessel-tracking-mcp.apify.actor/mcp)
│
▼ standby mode
src/main.js handleRequest({ request, log })
│
├──► MyShipTracking.com (AIS data)
├──► Equasis.org (ship particulars)
└──► USCG PSC psc.emszone.com (port data)
│
▼ returns { content: [...] }
Apify Gateway
│
▼ MCP response
Claude Desktop
Error Handling
Each tool implements 120-second timeout per data source. If a source fails:
{
"status": "error",
"message": "Connection timeout after 120s",
"fallback": "Free AIS data may have rate limits. Try again in 60 seconds."
}
Partial results are returned when some sources succeed. For example, if ship_particulars_lookup finds the vessel name but not the year built, it returns what it found with a note.
API Endpoints
MCP Endpoint
https://maritime-vessel-tracking-mcp.apify.actor/mcp
Apify Actor
https://console.apify.com/actors/maritime-vessel-tracking-mcp
Direct API (for advanced users)
# List actor
curl https://api.apify.com/v2/acts/red-cars/maritime-vessel-tracking-mcp \
-H "Authorization: Bearer $APIFY_API_TOKEN"
# Get actor details
curl "https://api.apify.com/v2/acts/maritime-vessel-tracking-mcp?token=$APIFY_API_TOKEN"
Related Actors
Fleet members in the Research Intelligence Cluster:
academic-research-mcp— literature search, grant discovery, researcher profilinguniversity-research-mcp— institution reports, patent landscapespatent-search-mcp— patent search, citation analysishealthcare-compliance-mcp— FDA MAUDE, 510(k), clinical trial screeningtech-scouting-report-mcp— competitive intelligence, technology analysis
Cross-sell triggers from maritime workflows:
- Vessel involved in port logistics →
academic-research-mcpfor shipping lane optimization research - Ship technology analysis →
patent-search-mcpfor vessel propulsion patents - Sanctions evasion investigation →
healthcare-compliance-mcpfor trade compliance frameworks
Troubleshooting
MCP endpoint not responding
- Check actor is running:
apify actors ls | grep maritime - Verify actor is public:
curl https://maritime-vessel-tracking-mcp.apify.actor/mcp - Check readiness probe:
curl https://maritime-vessel-tracking-mcp.apify.actor/
Position data not available
Cause: Vessel may be out of terrestrial AIS range (satellite-only coverage areas).
Solution: For real-time satellite AIS, v2 will integrate VesselFinder credits. For now, the tool returns a message suggesting retry or use of specific IMO for direct lookup.
Rate limiting
Cause: Free data sources may have rate limits.
Solution: Wait 60 seconds between calls. For high-volume use cases, consider VesselFinder API integration in v2.
IMO format rejected
Cause: IMO must be exactly 7 digits.
Solution: Validate IMO format before calling. Pattern: ^[0-9]{7}$.
Port not in congestion database
Cause: Port is not in the 11 major ports with scores.
Solution: The tool returns a default score of 5 (moderate congestion) with a message that the port wasn't found. ETA calculation uses Haversine distance even without port coordinates.
Feedback
Report issues or request features:
- GitHub Issues: github.com/red-cars-io/maritime-vessel-tracking-mcp/issues
- Apify Community: community.apify.com
License
MIT License. See LICENSE for details.
Credits
Data Sources:
- MyShipTracking.com — AIS data
- Equasis.org — ship particulars database
- USCG PSC — port state control inspections
Built on:
- Apify Platform — actor hosting and MCP gateway
- Model Context Protocol — AI agent communication standard
Changelog
v1.0 (2026-04-27)
- Initial release
- 6 tools: vessel_position_lookup, ship_particulars_lookup, port_arrival_eta, going_dark_detection, route_anomaly_detection, sanctions_screening
- 3 data sources: MyShipTracking.com, Equasis.org, USCG PSC
- Free tier only (no API keys required)
- Standby mode MCP architecture
SEO & LLM Optimization
Установка Maritime Vessel Tracking
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/red-cars-io/maritime-vessel-tracking-mcpFAQ
Maritime Vessel Tracking MCP бесплатный?
Да, Maritime Vessel Tracking MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Maritime Vessel Tracking?
Нет, Maritime Vessel Tracking работает без API-ключей и переменных окружения.
Maritime Vessel Tracking — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Maritime Vessel Tracking в Claude Desktop, Claude Code или Cursor?
Открой Maritime Vessel Tracking на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
автор: modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
автор: xuzexin-hzCompare Maritime Vessel Tracking with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории ai
