AIS Trail

Live ship positions, vessel history and port calls from AIS. Read-only, live tools need no key.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
81%
命名の品質
87%
ポイズニングのリスク
80%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainvessel_track 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~2,575トークン数(ツール定義)
~1022 B一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 2.01%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "ais": {
      "url": "https://api.aistrail.com/mcp"
    }
  }
}

リモートエンドポイント

https://api.aistrail.com/mcpstreamable-http

できること

ツール一覧

ツール(9)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢search_vessels(query, limit)

Find ships by name (or part of it), MMSI (9 digits) or IMO number (7 digits). Returns live ships first, then ships out of range with their last known position (up to 7 days). List results are compact rows (mmsi, name, category, flag (ISO code from the MMSI), lat, lon, speed_kn, course_deg, length_m, destination, age_s, status, source); call get_vessel for full details of one ship. Private vessels (pleasure craft, sailing vessels and Class B transponders without a valid IMO number) are never listed or looked up individually; area and nearby results report how many were left out (private_vessels).

入力スキーマ

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 3,
      "maxLength": 100,
      "description": "Ship name, MMSI (9 digits) or IMO (7 digits)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟢get_vessel(mmsi)

Everything known about one ship now: identity (name, IMO, call sign, flag, type, size), last position, speed, course, heading, navigational status, destination (port codes decoded) and ETA as given by the crew, how long ago it was heard, its track over the last 40 minutes, and the data sources to credit. flag (ISO code) and flag_country come from the MMSI: the flag of the radio licence, usually but not always the registry flag. dwt_estimate is an estimate from the AIS dimensions (tonnes, size class such as Panamax or VLCC, hull, draught used), not a registry value; null for tugs, pleasure craft and other types where deadweight does not apply.

入力スキーマ

{
  "type": "object",
  "properties": {
    "mmsi": {
      "type": "integer",
      "minimum": 1,
      "maximum": 999999999,
      "description": "9-digit MMSI"
    }
  },
  "required": [
    "mmsi"
  ],
  "additionalProperties": false
}
🟢vessels_in_area(min_lat, min_lon, max_lat, max_lon, ship_type, ...)

Ships heard in the last hour inside a box (at most 5° on each side), largest first. List results are compact rows (mmsi, name, category, flag (ISO code from the MMSI), lat, lon, speed_kn, course_deg, length_m, destination, age_s, status, source); call get_vessel for full details of one ship. Private vessels (pleasure craft, sailing vessels and Class B transponders without a valid IMO number) are never listed or looked up individually; area and nearby results report how many were left out (private_vessels).

入力スキーマ

{
  "type": "object",
  "properties": {
    "min_lat": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "min_lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "max_lat": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "max_lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "ship_type": {
      "type": "string",
      "enum": [
        "cargo",
        "tanker",
        "passenger",
        "hsc",
        "fishing",
        "service",
        "pleasure",
        "other"
      ],
      "description": "Optional type filter"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "min_lat",
    "min_lon",
    "max_lat",
    "max_lon"
  ],
  "additionalProperties": false
}
🟢vessels_near(lat, lon, mmsi, radius_nm, limit)

Ships heard in the last hour within a radius (at most 50 nautical miles) of a point or of another ship, nearest first. List results are compact rows (mmsi, name, category, flag (ISO code from the MMSI), lat, lon, speed_kn, course_deg, length_m, destination, age_s, status, source); call get_vessel for full details of one ship. Private vessels (pleasure craft, sailing vessels and Class B transponders without a valid IMO number) are never listed or looked up individually; area and nearby results report how many were left out (private_vessels).

入力スキーマ

{
  "type": "object",
  "properties": {
    "lat": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "mmsi": {
      "type": "integer",
      "description": "Use this ship's position as the centre instead of lat/lon"
    },
    "radius_nm": {
      "type": "number",
      "minimum": 0.1,
      "maximum": 50,
      "default": 5
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢vessel_track(mmsi, from, to, resolution)

Where a ship has been between two times (UTC, ISO 8601), from the AIS Trail archive. Needs an AIS Trail API key sent by the MCP client as the HTTP header 'Authorization: Bearer ap_live_…' (keys at https://aistrail.com); clients that cannot add headers (OAuth-only web connectors) cannot use it yet. Resolution: raw (up to 24 h per call), 1m (up to 7 days) or 1h (up to 366 days); at most 200 points per call, as rows of [time, lat, lon, speed_kn, course_deg]. The plan's history depth, credits (as on the track endpoint: 1 per vessel-day) and rate limit apply, and the 24-hour delay on recent data on plans without live data. sources_through gives, per source, the time up to which the archive holds its data; pending_days lists days in the range a source has not delivered yet, so no points on those days does not mean the ship was absent.

入力スキーマ

{
  "type": "object",
  "properties": {
    "mmsi": {
      "type": "integer",
      "minimum": 1,
      "maximum": 999999999
    },
    "from": {
      "type": "string",
      "maxLength": 40,
      "description": "Start, e.g. 2026-10-01T00:00:00Z"
    },
    "to": {
      "type": "string",
      "maxLength": 40,
      "description": "End, e.g. 2026-10-02T00:00:00Z"
    },
    "resolution": {
      "type": "string",
      "enum": [
        "raw",
        "1m",
        "1h"
      ],
      "default": "1m"
    }
  },
  "required": [
    "mmsi",
    "from",
    "to"
  ],
  "additionalProperties": false
}
🟢data_status

How many ships are live now (live_ships_private: how many of them are private vessels, counted only), how many are known from the last 7 days, the date range of the history archive per source with available_until (the latest time vessel_track can return for that source on plans without live data), and the service status: ok or degraded, with reason codes in reasons.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
🟢find_port(query, country, locode, limit)

Find ports by name (or part of it), UN/LOCODE (e.g. NLRTM) or two-letter country code (e.g. NL) in the port reference (World Port Index and UN/LOCODE ports): id (for port_calls), name, country, UN/LOCODE, position, harbor size (World Port Index ports only) and the radius of the port area used to detect port calls. At most 20 ports, larger harbors first. No API key needed.

入力スキーマ

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 64,
      "description": "Port name"
    },
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code"
    },
    "locode": {
      "type": "string",
      "minLength": 5,
      "maxLength": 6,
      "description": "UN/LOCODE"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢vessel_port_calls(mmsi, imo, from, to)

Port calls of a ship between two times (UTC, ISO 8601), from the AIS Trail archive: port, arrival, departure, draught on arrival and departure, cargo estimate (loaded, ballast or unchanged, from the draught change), previous and next port. Give mmsi or imo. A port call starts when the ship stops for at least 15 minutes inside a port area and ends when it leaves; departure is null while it is still in port. Needs an AIS Trail API key sent by the MCP client as the HTTP header 'Authorization: Bearer ap_live_…'. At most 100 port calls per call and at most 366 days; the plan's history depth, credits (1 per port call returned), rate limit and 24-hour delay (on plans without live data) apply.

入力スキーマ

{
  "type": "object",
  "properties": {
    "mmsi": {
      "type": "integer",
      "minimum": 1,
      "maximum": 999999999
    },
    "imo": {
      "type": "integer",
      "minimum": 1000000,
      "maximum": 9999999
    },
    "from": {
      "type": "string",
      "maxLength": 40,
      "description": "Start, e.g. 2026-09-01T00:00:00Z"
    },
    "to": {
      "type": "string",
      "maxLength": 40,
      "description": "End, e.g. 2026-10-01T00:00:00Z"
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false
}
🟢port_calls(port_id, from, to, event)

Ships that called at one port between two times (UTC, ISO 8601), from the AIS Trail archive: ship (with its flag from the MMSI), arrival, departure, draught on arrival and departure, cargo estimate, previous and next port. Get the port_id from find_port. event: any (in port at any time in the range, default), arrival or departure. Needs an AIS Trail API key sent by the MCP client as the HTTP header 'Authorization: Bearer ap_live_…'. At most 100 port calls per call and at most 366 days; the plan's rules and credits (1 per port call returned) apply as for vessel_port_calls.

入力スキーマ

{
  "type": "object",
  "properties": {
    "port_id": {
      "type": "integer",
      "minimum": 1,
      "maximum": 99999999
    },
    "from": {
      "type": "string",
      "maxLength": 40,
      "description": "Start, e.g. 2026-09-01T00:00:00Z"
    },
    "to": {
      "type": "string",
      "maxLength": 40,
      "description": "End, e.g. 2026-09-02T00:00:00Z"
    },
    "event": {
      "type": "string",
      "enum": [
        "any",
        "arrival",
        "departure"
      ],
      "default": "any"
    }
  },
  "required": [
    "port_id",
    "from",
    "to"
  ],
  "additionalProperties": false
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 9 件