Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Maritime Vessel Tracking

БесплатноНе проверен

Maritime Vessel Tracking — Model Context Protocol server

GitHubEmbed

Описание

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

  1. vessel_position_lookup — AIS position by IMO, MMSI, or vessel name
  2. ship_particulars_lookup — Technical specs by IMO number
  3. port_arrival_eta — ETA with port congestion scoring
  4. going_dark_detection — AIS blackout monitoring
  5. route_anomaly_detection — Route deviation analysis
  6. 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 suggestion fields
  • 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:

  1. HTTP server for readiness probe — listens on the port from Actor.getStartupEnv().PORT, responds 200 OK to GET / within 60 seconds of startup. This is the Apify readiness probe requirement.

  2. 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 use response.send() which silently fails in standby mode.

  3. 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 profiling
  • university-research-mcp — institution reports, patent landscapes
  • patent-search-mcp — patent search, citation analysis
  • healthcare-compliance-mcp — FDA MAUDE, 510(k), clinical trial screening
  • tech-scouting-report-mcp — competitive intelligence, technology analysis

Cross-sell triggers from maritime workflows:

  • Vessel involved in port logistics → academic-research-mcp for shipping lane optimization research
  • Ship technology analysis → patent-search-mcp for vessel propulsion patents
  • Sanctions evasion investigation → healthcare-compliance-mcp for trade compliance frameworks

Troubleshooting

MCP endpoint not responding

  1. Check actor is running: apify actors ls | grep maritime
  2. Verify actor is public: curl https://maritime-vessel-tracking-mcp.apify.actor/mcp
  3. 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:


License

MIT License. See LICENSE for details.


Credits

Data Sources:

Built on:


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

from github.com/red-cars-io/maritime-vessel-tracking-mcp

Установка Maritime Vessel Tracking

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/red-cars-io/maritime-vessel-tracking-mcp

FAQ

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

Compare Maritime Vessel Tracking with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории ai