Vessel Traffic MCP
English |
ํ๊ตญ์ด |
ๆฅๆฌ่ช |
ไธญๆ
Vessel tracking and shipping schedules for AI agents.
Vessel Traffic MCP is a read-only Model Context Protocol (MCP) server
for vessel identity lookup, AIS-style positions, tracks, port calls,
carrier schedules, vessel schedules, and delay heuristics. It gives
Claude, ChatGPT, Codex, MCP Inspector, and other MCP clients one
normalized maritime-data tool surface.
Use it when an agent needs to:
- search/fetch vessel context through generic connector-style MCP tools;
- resolve a vessel from a name, MMSI, IMO, callsign, or bill-of-lading text;
- ask where a vessel is, where it has been, or which vessels are in an area;
- search container-shipping schedules by port pair or vessel;
- return the original provider and source URL with every live/public result;
- test maritime workflows safely before buying paid AIS or schedule APIs.
The project does not bypass provider terms, paywalls, CAPTCHA, or access
controls. Commercial providers are Bring Your Own Key (BYOK), the default
test path is fixture-only, and this is not a navigation product.
Open source under the MIT license. Pre-1.0; APIs and tool
surfaces may change.
Contents
Install In An MCP Client
For Claude Desktop, Claude Code, Codex CLI, Cursor, VS Code, or any
stdio MCP client, use the npm package:
{
"mcpServers": {
"vessel-traffic-mcp": {
"command": "npx",
"args": ["-y", "@tools-mcp/vessel-traffic-mcp"],
"env": {
"VESSEL_MCP_TRANSPORT": "stdio",
"VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS": "myshiptracking,tradlinx,aisfriends"
}
}
}
}
Then restart the client and try:
Find the current position of EVER GIVEN. Include source.provider and source.landingUrl.
Search carrier schedules from KRPUS to NLRTM. Include the source URL.
Full client setup lives in
docs/runbooks/clients.md, and Codex
details live in docs/runbooks/codex.md.
Source-checkout config snippets are in
Shared MCP Config Snippets.
Marketplace and AI-client submission helpers live in
llms-install.md, LAUNCHGUIDE.md,
and assets/logo-400.png.
Agent Discovery Page
The public landing page for assistant-agent search and install snippets is:
https://tools-mcp.github.io/vessel-traffic-mcp/
Use that URL when sharing the project as a vessel AIS MCP, ship tracking
MCP, ChatGPT MCP, Codex MCP, Claude MCP, or Gemini MCP server.
The page includes a golden prompt for the EVER GIVEN scenario and client
snippets for local stdio and remote Streamable HTTP setup.
Assistant services do not automatically discover arbitrary MCP servers. The
operator must connect this MCP first; after that, the tool descriptions,
search/fetch wrappers, and vessel-specific tools give the agent a clear
path from a ship-name prompt to source-attributed results.
What It Exposes
| Area | Read-only tools |
|---|
| Search-style connector flow | search, fetch |
| Vessel identity | vessel_search, vessel_name_resolve, document_vessel_lookup |
| AIS-style movement | vessel_position, vessel_area, vessel_track |
| Port activity | port_calls |
| Shipping schedules | carrier_schedule_search, vessel_schedule, schedule_delay_predict |
| Provider setup | provider_status, data_sources, credential_profiles, provider_onboarding |
Every live or public-provider response must expose provenance:
source.provider and source.landingUrl. The project is designed to
route users back to the original service, not to hide or rebrand the
data source.
Provider Model
| Provider group | How it is enabled | Notes |
|---|
| Fixture | default | deterministic tests and demos; no network, accounts, or API keys |
| Public opt-in | VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS=myshiptracking,tradlinx,aisfriends | public web adapters with source attribution |
| BYOK commercial/community APIs | VESSEL_MCP_ENABLE_BYOK_PROVIDERS=... plus VESSEL_MCP_PROFILE_* env vars | user-owned credentials only; secrets are redacted from logs, errors, and MCP responses |
| Remote deployment | VESSEL_MCP_TRANSPORT=http | Streamable HTTP at /mcp; set VESSEL_MCP_AUTH_TOKEN for Authorization: Bearer <token> |
Use the provider_onboarding MCP tool to inspect provider signup URLs,
required env vars, configured profile status, and validation steps. It
is read-only and never creates accounts, accepts terms, solves CAPTCHA,
completes email verification, sets payment details, or issues API keys.
Responsible Use And Third-Party Rights
This project is provided as open-source infrastructure for public-interest
interoperability, workflow testing, and source-attributed maritime data access.
It does not grant any right to copy, redistribute, rebrand, bypass, or misuse
third-party services, databases, maps, trademarks, copyrighted material, API
responses, or provider content.
Users are responsible for how they configure and operate the software, including
their compliance with applicable law, provider terms, account permissions,
rate limits, data licenses, and internal company policies. Do not use this
project to bypass authentication, paywalls, CAPTCHA, access controls, robots
policies, or commercial restrictions.
The authors and contributors respect the rights and terms of all referenced
services and data providers. Live and public-provider responses are designed
to preserve attribution through source.provider and source.landingUrl and
to route users back to the original source. If a rights holder, service
operator, or affected party reports a substantiated concern, the maintainers
will review it promptly and, where appropriate, modify, disable, or remove the
affected adapter, documentation, fixture, or reference.
The software is provided under the MIT license, without warranty. Nothing in
this README is legal advice or a substitute for reviewing the terms that apply
to your own use case.
Help Spread
If this could help someone building MCP tools, shipping/logistics software,
or AI workflows around maritime data, share the repository and ask for real
workflow feedback. A copy/paste sharing kit lives in
docs/marketing/help-us-spread.md.
Useful help includes trying the npm install, posting a tailored community
write-up, requesting a provider adapter, or explaining a real forwarding,
trade, port-call, vessel ETA, or carrier-schedule workflow.
From Source
git clone https://github.com/tools-mcp/vessel-traffic-mcp.git
cd vessel-traffic-mcp
npm ci
npm run lint
npm test
npm run build
VESSEL_MCP_TRANSPORT=stdio \
VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS=myshiptracking,tradlinx,aisfriends \
npm start
The default verification gate uses sanitized fixtures only. It does not
call paid or live providers and does not require API keys, accounts, or
network access.
For a local visual check with ship-name input and a map:
Open http://127.0.0.1:8787 and search EVER GIVEN or MMSI
353136000.
Remote HTTP Setup
For remote MCP clients, run Streamable HTTP at /mcp with public
/health:
export VESSEL_MCP_TRANSPORT=http
export VESSEL_MCP_HTTP_HOST=127.0.0.1
export VESSEL_MCP_HTTP_PORT=8765
export VESSEL_MCP_AUTH_TOKEN="<a-strong-random-token-you-generated>"
npm run start:http
curl -sf "http://127.0.0.1:8765/health"
MCP requests require Authorization: Bearer <token> when
VESSEL_MCP_AUTH_TOKEN is set. See
docs/runbooks/streamable-http-server.md
and docs/runbooks/deployment-https.md.
Current Distribution
Launch copy and directory submission material live in
docs/marketing.
Star History

Languages
Agent Prompt
Use this prompt when asking another coding agent to install the MCP:
Install and configure https://github.com/tools-mcp/vessel-traffic-mcp
as a local stdio MCP server on this machine.
Read README.md and llms.txt first. Clone the repository, run `npm ci`,
run `npm run build`, then add the MCP server to the local MCP client
using an absolute path to `dist/index.js`.
Use `VESSEL_MCP_TRANSPORT=stdio` and enable public providers with
`VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS=myshiptracking,tradlinx,aisfriends`.
Do not commit local MCP client config files, env files, API keys,
cookies, HAR files, browser sessions, or raw captures. Do not copy
credentials from another machine.
After restarting the MCP client, verify with:
1. Ask for EVER GIVEN current position and include the source URL.
2. Ask for a KRPUS to NLRTM carrier schedule and include the source URL.
ํ๊ตญ์ด
๊ฐ์
vessel-traffic-mcp๋ MCP ํด๋ผ์ด์ธํธ๊ฐ ํ๊ฐ๋ ํด์ด/์ ๋ฐ ๋ฐ์ดํฐ
์์ค๋ฅผ ์ฝ๊ธฐ ์ ์ฉ ๋๊ตฌ๋ก ์กฐํํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ฒ์
๋๋ค.
์ ๋ฐ๋ช
, MMSI, IMO, ํธ์ถ๋ถํธ ๊ธฐ๋ฐ ๊ฒ์, ์ต์ ์์น ์กฐํ, ์์ญ ์กฐํ,
ํญ๋ง ํธ์ถ, ์ ์ฌ ์ค์ผ์ค, ์ ๋ฐ๋ณ ์ค์ผ์ค, ์ค์ผ์ค ์ง์ฐ ํ๋จ์ ์ ๊ณตํฉ๋๋ค.
์ค์๊ฐ ๋๋ ๊ณต๊ฐ provider ์๋ต์ ๋ฐ๋์ source.provider์
source.landingUrl์ ํฌํจํด์ผ ํฉ๋๋ค. ์ด ํ๋ก์ ํธ์ ๋ชฉ์ ์ ์
์๋น์ค ์ ์
๊ณผ ์ถ์ฒ ๋
ธ์ถ์ ์ ๊ณตํ๋ ๊ฒ์ด๋ฉฐ, ์ถ์ฒ๋ฅผ ์จ๊ธฐ๊ฑฐ๋
์ฌ๋ธ๋๋ฉํ๋ ๊ฒ์ด ์๋๋๋ค.
๊ณต์ ๋ฅผ ๋์์ค ์ฌ๋์๊ฒ ๋ณด๋ผ ์งง์ ๋ฌธ๊ตฌ์ ์ปค๋ฎค๋ํฐ์ฉ ๊ธ ์ด์์
docs/marketing/help-us-spread.md์
์ ๋ฆฌ๋์ด ์์ต๋๋ค.
๋น ๋ฅธ ์์
git clone https://github.com/tools-mcp/vessel-traffic-mcp.git
cd vessel-traffic-mcp
npm install
npm run lint
npm test
npm run build
๊ธฐ๋ณธ ๊ฒ์ฆ์ sanitize๋ fixture๋ง ์ฌ์ฉํฉ๋๋ค. ์ ๋ฃ provider๋ live
provider๋ฅผ ํธ์ถํ์ง ์์ผ๋ฉฐ API ํค, ๊ณ์ , ๋คํธ์ํฌ ์ ๊ทผ์ด ํ์ํ์ง
์์ต๋๋ค.
๋ก์ปฌ MCP ์ค์
๋ก์ปฌ ๋ฐ์คํฌํฑ/CLI ํด๋ผ์ด์ธํธ์์๋ stdio transport๋ฅผ ์ฌ์ฉํฉ๋๋ค.
VESSEL_MCP_TRANSPORT=stdio npm start
Codex CLI, Claude Desktop, Claude Code ์ค์ ์
๊ณตํต MCP ์ค์ ์์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์ ์ฒด ํด๋ผ์ด์ธํธ ์ค์ ์ docs/runbooks/clients.md,
Codex ์ ์ฉ ์ค์ ์ docs/runbooks/codex.md์
์ ๋ฆฌ๋์ด ์์ต๋๋ค.
์๊ฒฉ MCP ์ค์
์๊ฒฉ MCP ํด๋ผ์ด์ธํธ๋ Streamable HTTP /mcp ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
/health๋ ๊ณต๊ฐ health check์
๋๋ค.
export VESSEL_MCP_TRANSPORT=http
export VESSEL_MCP_HTTP_HOST=127.0.0.1
export VESSEL_MCP_HTTP_PORT=8765
export VESSEL_MCP_AUTH_TOKEN="<a-strong-random-token-you-generated>"
npm run start:http
VESSEL_MCP_AUTH_TOKEN์ ์ค์ ํ ๊ฒฝ์ฐ MCP ์์ฒญ์๋
Authorization: Bearer <token>์ด ํ์ํฉ๋๋ค. ๋ฐฐํฌ ๋ฌธ์๋
docs/runbooks/deployment-https.md๋ฅผ
์ฐธ๊ณ ํ์ธ์.
๊ณต๊ฐ Provider
๋ธ๋ผ์ฐ์ ์บก์ฒ ๊ธฐ๋ฐ ๊ณต๊ฐ adapter๋ ๋ช
์์ ์ผ๋ก ์ผ์ผ ํฉ๋๋ค.
VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS=myshiptracking,tradlinx,aisfriends npm start
myshiptracking: ์ ๋ฐ ์๋์์ฑ, ์ ํ MMSI ๊ธฐ๋ฐ ์ต์ ์์น, ์ง๋ ์์ญ ์กฐํ.
tradlinx: FCL/LCL ์ ์ฌ ์ค์ผ์ค ์กฐํ.
aisfriends: ๊ณต๊ฐ ์ง๋ bounding-box ๊ธฐ๋ฐ ์์ญ ์์น ์กฐํ. ์ ๋ฐ๋ช
๊ฒ์์ ์ง์ํ์ง ์์ต๋๋ค.
shipfinder: ๋ช
์์ provider ๋ผ์ฐํ
์ฉ ์ ๋ฐ ์๋์์ฑ ๋ฐ ์์ธ API ํํ.
์๋ต์๋ ํญ์ ์ ์ถ์ฒ provider์ ์ฌ์ฉ์๊ฐ ์ด ์ ์๋ ์ถ์ฒ URL์
ํฌํจํฉ๋๋ค.
BYOK Provider
์ ๋ฃ/credential ๊ธฐ๋ฐ provider๋ BYOK ๋ฐฉ์์ผ๋ก๋ง ์ฌ์ฉํฉ๋๋ค. ์ค์ ํค๋
๋ก๊ทธ, ์๋ฌ, MCP ์๋ต์ ๋
ธ์ถ๋์ง ์์ต๋๋ค.
export VESSEL_MCP_PROFILE_MARINETRAFFIC__API_KEY="<your-key>"
export VESSEL_MCP_ENABLE_BYOK_PROVIDERS="marinetraffic,vesselfinder,aisstream,aishub,barentswatch,searates-schedules,routescanner-connect,vesselapi,datadocked,datalastic,globalfishingwatch"
ํ์ฌ credential ๊ธฐ๋ฐ์ผ๋ก ๋ฐํ์ ๋ฑ๋ก ๊ฐ๋ฅํ provider๋ marinetraffic,
vesselfinder, aisstream, aishub, barentswatch,
searates-schedules, routescanner-connect, vesselapi, datadocked, datalastic, globalfishingwatch์
๋๋ค. ๊ธฐ๋ณธ credential profile์ด
์ค์ ๋ provider๋ ์๋์ผ๋ก ๋ฑ๋ก๋ฉ๋๋ค.
์์ธํ ๋ด์ฉ์ docs/runbooks/credential-profiles.md์
docs/runbooks/operator.md๋ฅผ ์ฐธ๊ณ ํ์ธ์.
provider_onboarding MCP ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด provider๋ณ ๊ฐ์
URL, ํ์ํ
env var, ํ์ฌ credential ์ค์ ์ฌ๋ถ, ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ด ๋๊ตฌ๋ ์ฝ๊ธฐ ์ ์ฉ์ด๋ฉฐ ๊ณ์ ์์ฑ, ์ฝ๊ด ๋์, CAPTCHA, ์ด๋ฉ์ผ ์ธ์ฆ,
๊ฒฐ์ ์ ๋ณด ์ค์ , API ํค ๋ฐ๊ธ์ ๋์ ์ํํ์ง ์์ต๋๋ค.
์ฑ
์ ์๋ ์ฌ์ฉ ๋ฐ ์ 3์ ๊ถ๋ฆฌ
์ด ํ๋ก์ ํธ๋ ๊ณต์ต์ ์ํธ์ด์ฉ์ฑ, ์
๋ฌด ์๋ํ ์คํ, ์ถ์ฒ๊ฐ ํ์๋๋
ํด์ด/์ ๋ฐ ๋ฐ์ดํฐ ์ ๊ทผ์ ๋๊ธฐ ์ํด ์คํ์์ค๋ก ๊ณต๊ฐ๋์์ต๋๋ค. ์ด
ํ๋ก์ ํธ๋ ์ 3์ ์๋น์ค, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ง๋, ์ํ, ์ ์๋ฌผ, API ์๋ต,
provider ์ฝํ
์ธ ๋ฅผ ๋ณต์ , ์ฌ๋ฐฐํฌ, ์ฌ๋ธ๋๋ฉ, ์ฐํ, ์ค์ฉํ ๊ถ๋ฆฌ๋ฅผ ๋ถ์ฌํ์ง
์์ต๋๋ค.
์ํํธ์จ์ด๋ฅผ ์ด๋ป๊ฒ ์ค์ ํ๊ณ ์ฌ์ฉํ๋์ง๋ ์ฌ์ฉ์ ์ฑ
์์
๋๋ค. ์ฌ์ฉ์๋
๊ด๋ จ ๋ฒ๋ น, provider ์ฝ๊ด, ๊ณ์ ๊ถํ, rate limit, ๋ฐ์ดํฐ ๋ผ์ด์ ์ค, ๋ด๋ถ
ํ์ฌ ์ ์ฑ
์ ์ง์ ํ์ธํ๊ณ ์ค์ํด์ผ ํฉ๋๋ค. ์ธ์ฆ, ์ ๋ฃ ๊ธฐ๋ฅ, CAPTCHA,
์ ๊ทผ ์ ์ด, robots ์ ์ฑ
, ์์
์ ์ ํ์ ์ฐํํ๊ธฐ ์ํด ์ด ํ๋ก์ ํธ๋ฅผ
์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค.
์์ฑ์์ ๊ธฐ์ฌ์๋ ์ฐธ์กฐ๋ ๋ชจ๋ ์๋น์ค์ ๋ฐ์ดํฐ provider์ ๊ถ๋ฆฌ์ ์ฝ๊ด์
์กด์คํฉ๋๋ค. live/public provider ์๋ต์ source.provider์
source.landingUrl๋ก ์ ์ถ์ฒ๋ฅผ ํ์ํ๊ณ , ์ฌ์ฉ์๊ฐ ์ ์๋น์ค๋ฅผ ํ์ธํ ์
์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๊ถ๋ฆฌ์, ์๋น์ค ์ด์์, ๋๋ ๊ด๋ จ ๋น์ฌ์๊ฐ ๊ทผ๊ฑฐ
์๋ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๋ฉด maintainer๋ ์ ์ํ ๊ฒํ ํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ํด๋น
adapter, ๋ฌธ์, fixture, reference๋ฅผ ์์ , ๋นํ์ฑํ, ๋๋ ์ ๊ฑฐํ๊ฒ ์ต๋๋ค.
์ด ์ํํธ์จ์ด๋ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ณด์ฆ ์์ด ์ ๊ณต๋ฉ๋๋ค. ์ด README์
๋ฌธ๊ตฌ๋ ๋ฒ๋ฅ ์๋ฌธ์ด ์๋๋ฉฐ, ๊ฐ ์ฌ์ฉ ์ฌ๋ก์ ์ ์ฉ๋๋ ์ฝ๊ด๊ณผ ๋ฒ์ ์๋ฌด๋ฅผ
๊ฒํ ํ๋ ์ผ์ ๋์ฒดํ์ง ์์ต๋๋ค.
์์ด์ ํธ ์ค์ ํ๋กฌํํธ
๋ค๋ฅธ ์ฝ๋ฉ ์์ด์ ํธ์๊ฒ ์ด MCP๋ฅผ ์ค์นํ๊ฒ ํ ๋ ์ฌ์ฉํ ํ๋กฌํํธ์
๋๋ค.
https://github.com/tools-mcp/vessel-traffic-mcp ๋ฅผ ์ด ๋จธ์ ์ ๋ก์ปฌ
stdio MCP ์๋ฒ๋ก ์ค์นํ๊ณ ์ค์ ํด์ค.
๋จผ์ README.md์ llms.txt๋ฅผ ์ฝ์ด๋ผ. repo๋ฅผ cloneํ๊ณ `npm ci`,
`npm run build`๋ฅผ ์คํํ ๋ค, ๋ก์ปฌ MCP ํด๋ผ์ด์ธํธ ์ค์ ์
`dist/index.js`์ ์ ๋๊ฒฝ๋ก๋ฅผ ๋ฑ๋กํด๋ผ.
`VESSEL_MCP_TRANSPORT=stdio`๋ฅผ ์ฌ์ฉํ๊ณ ,
`VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS=myshiptracking,tradlinx,aisfriends`๋ฅผ ์ค์ ํด๋ผ.
๋ก์ปฌ MCP ํด๋ผ์ด์ธํธ ์ค์ ํ์ผ, env ํ์ผ, API ํค, ์ฟ ํค, HAR ํ์ผ,
๋ธ๋ผ์ฐ์ ์ธ์
, raw capture๋ ์ปค๋ฐํ์ง ๋ง๋ผ. ๋ค๋ฅธ ๋จธ์ ์ credential์
๋ณต์ฌํ์ง ๋ง๋ผ.
MCP ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์์ํ ๋ค ๋ค์์ผ๋ก ๊ฒ์ฆํด๋ผ:
1. EVER GIVEN ํ์ฌ ์์น๋ฅผ ์กฐํํ๊ณ ์ถ์ฒ URL์ ํจ๊ป ๋ณด์ฌ์ค.
2. KRPUS์์ NLRTM๊น์ง์ ์ ์ฌ ์ค์ผ์ค์ ์กฐํํ๊ณ ์ถ์ฒ URL์ ํจ๊ป ๋ณด์ฌ์ค.
ๆฅๆฌ่ช
ๆฆ่ฆ
vessel-traffic-mcp ใฏใMCP ใฏใฉใคใขใณใใใ่จฑๅฏใใใๆตทไบใใผใฟ
ใฝใผในใ่ชญใฟๅใๅฐ็จใงๅ็
งใใใใใฎใตใผใใผใงใใ
่นๅใMMSIใIMOใใณใผใซใตใคใณใซใใๆค็ดขใๆๆฐไฝ็ฝฎใใจใชใขๆค็ดขใ
ๅฏๆธฏๆ
ๅ ฑใ่นไผ็คพในใฑใธใฅใผใซใ่น่ถๅฅในใฑใธใฅใผใซใ้
ๅปถๅคๅฎใ
ๆไพใใพใใ
ใฉใคใใพใใฏๅ
ฌ้ provider ใฎๅฟ็ญใงใฏใsource.provider ใจ
source.landingUrl ใๅฟ
ใๅซใใพใใใใฎใใญใธใงใฏใใฏๅ
ใตใผใในใธ
ใฆใผใถใผใ่ชๅฐใใๅบๅ
ธใๆ็คบใใใใจใ็ฎ็ใจใใฆใใพใใ
ใฏใคใใฏในใฟใผใ
git clone https://github.com/tools-mcp/vessel-traffic-mcp.git
cd vessel-traffic-mcp
npm install
npm run lint
npm test
npm run build
ๆจๆบใฎๆค่จผใฏ sanitize ๆธใฟ fixture ใฎใฟใไฝฟใใพใใๆๆ provider ใ
live provider ใฏๅผใณๅบใใใAPI ใญใผใใขใซใฆใณใใใใใใฏใผใฏๆฅ็ถใ
ไธ่ฆใงใใ
ใญใผใซใซ MCP ่จญๅฎ
ใญใผใซใซใฎใในใฏใใใ/CLI ใฏใฉใคใขใณใใงใฏ stdio transport ใไฝฟใใพใใ
VESSEL_MCP_TRANSPORT=stdio npm start
Codex CLIใClaude DesktopใClaude Code ใฎ่จญๅฎใซใฏ
ๅ
ฑ้ MCP ่จญๅฎไพใไฝฟ็จใใฆใใ ใใใ
ใชใขใผใ MCP ่จญๅฎ
ใชใขใผใ MCP ใฏใฉใคใขใณใใงใฏ Streamable HTTP ใฎ /mcp ใไฝฟใใพใใ
/health ใฏๅ
ฌ้ health check ใงใใ
export VESSEL_MCP_TRANSPORT=http
export VESSEL_MCP_HTTP_HOST=127.0.0.1
export VESSEL_MCP_HTTP_PORT=8765
export VESSEL_MCP_AUTH_TOKEN="<a-strong-random-token-you-generated>"
npm run start:http
VESSEL_MCP_AUTH_TOKEN ใ่จญๅฎใใๅ ดๅใMCP ใชใฏใจในใใซใฏ
Authorization: Bearer <token> ใๅฟ
่ฆใงใใ
ๅ
ฌ้ Provider
ใใฉใฆใถใญใฃใใใฃ็ฑๆฅใฎๅ
ฌ้ adapter ใฏๆ็คบ็ใซๆๅนๅใใพใใ
VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS=myshiptracking,tradlinx,aisfriends npm start
myshiptracking: ่น่ถใชใผใใณใณใใชใผใใ้ธๆ MMSI ใใใฎๆๆฐไฝ็ฝฎใ
ๅฐๅณ็ฏๅฒๆค็ดขใ
tradlinx: FCL/LCL ใฎ่นไผ็คพในใฑใธใฅใผใซๆค็ดขใ
aisfriends: ๅ
ฌ้ๅฐๅณใฎ bounding-box ใใผในใฎใจใชใขไฝ็ฝฎๆค็ดขใ่นๅๆค็ดขใฏๆชๅฏพๅฟใ
shipfinder: ๆ็คบ็ provider ใซใผใใฃใณใฐ็จใฎ่น่ถๆค็ดขใจ่ฉณ็ดฐ API ๅฝข็ถใ
BYOK Provider
ๆๆใพใใฏ credential ใๅฟ
่ฆใช provider ใฏ BYOK ใฎใฟใงใใๅฎ้ใฎใญใผใฏ
ใญใฐใใจใฉใผใMCP ๅฟ็ญใซๅบใใพใใใ
export VESSEL_MCP_PROFILE_MARINETRAFFIC__API_KEY="<your-key>"
export VESSEL_MCP_ENABLE_BYOK_PROVIDERS="marinetraffic,vesselfinder,aisstream,aishub,barentswatch,searates-schedules,routescanner-connect,vesselapi,datadocked,datalastic,globalfishingwatch"
็พๅจ runtime ใงๆๅนๅใงใใ credentialed provider ใฏ marinetraffic,
vesselfinder, aisstream, aishub, barentswatch,
searates-schedules, routescanner-connect, vesselapi, datadocked, datalastic, globalfishingwatch ใงใใ
ใจใผใธใงใณใ่จญๅฎใใญใณใใ
ๅฅใฎใณใผใใฃใณใฐใจใผใธใงใณใใซ MCP ใ่จญๅฎใใใๅ ดๅใฎใใญใณใใใงใใ
https://github.com/tools-mcp/vessel-traffic-mcp ใใใใฎใใทใณใฎ
ใญใผใซใซ stdio MCP ใตใผใใผใจใใฆใคใณในใใผใซใใฆ่จญๅฎใใฆใใ ใใใ
ๆๅใซ README.md ใจ llms.txt ใ่ชญใใงใใ ใใใrepo ใ clone ใใ
`npm ci` ใจ `npm run build` ใๅฎ่กใใ`dist/index.js` ใฎ็ตถๅฏพใในใ
ใญใผใซใซ MCP ใฏใฉใคใขใณใใซ็ป้ฒใใฆใใ ใใใ
`VESSEL_MCP_TRANSPORT=stdio` ใไฝฟใใ
`VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS=myshiptracking,tradlinx,aisfriends` ใ่จญๅฎใใฆใใ ใใใ
ใญใผใซใซ MCP ใฏใฉใคใขใณใ่จญๅฎใenv ใใกใคใซใAPI ใญใผใCookieใHARใ
ใใฉใฆใถใปใใทใงใณใraw capture ใ commit ใใชใใงใใ ใใใไปใฎ
ใใทใณใใ credential ใใณใใผใใชใใงใใ ใใใ
ๅ่ตทๅๅพใEVER GIVEN ใฎ็พๅจไฝ็ฝฎใจๅบๅ
ธ URLใKRPUS ใใ NLRTM ใธใฎ
่นไผ็คพในใฑใธใฅใผใซใจๅบๅ
ธ URL ใ็ขบ่ชใใฆใใ ใใใ
ไธญๆ
ๆฆ่ง
vessel-traffic-mcp ๆฏไธไธชๅช่ฏป MCP ๆๅกๅจ๏ผ่ฎฉ MCP ๅฎขๆท็ซฏ่ฝๅค้่ฟ
็ปไธๅทฅๅ
ทๆฅๅฃ่ฎฟ้ฎๅทฒๆๆ็ๆตทไบๆฐๆฎๆฅๆบใ
ๅฎๆฏๆๆ่นๅใMMSIใIMOใๅผๅทๆ็ดข่น่ถ๏ผๆฅ่ฏขๆๆฐไฝ็ฝฎใๅบๅไฝ็ฝฎใ
ๆธฏๅฃ้ ๆณใๆฟ่ฟไบบ่ช็บฟ่ฎกๅใ่น่ถ่ฎกๅๅๅปถ่ฏฏๅคๆญใ
ๆๆๅฎๆถๆๅ
ฌๅผ provider ็ๅๅบ้ฝๅฟ
้กปๅ
ๅซ source.provider ๅ
source.landingUrlใๆฌ้กน็ฎ็จไบๅๅๅงๆๅกๅฏผๆตๅนถๆ็กฎๆพ็คบๅบๅค๏ผ่ไธๆฏ
้่ๆ้ๆฐๅ
่ฃ
ๆฐๆฎๆฅๆบใ
ๅฟซ้ๅผๅง
git clone https://github.com/tools-mcp/vessel-traffic-mcp.git
cd vessel-traffic-mcp
npm install
npm run lint
npm test
npm run build
้ป่ฎค้ช่ฏๅชไฝฟ็จๅทฒๆธ
ๆด็ fixture๏ผไธ่ฐ็จไป่ดนๆๅฎๆถ provider๏ผไนไธ้่ฆ
API keyใ่ดฆๅทๆ็ฝ็ป่ฎฟ้ฎใ
ๆฌๅฐ MCP ่ฎพ็ฝฎ
ๆฌๅฐๆก้ขๅ CLI ๅฎขๆท็ซฏไฝฟ็จ stdio transportใ
VESSEL_MCP_TRANSPORT=stdio npm start
Codex CLIใClaude DesktopใClaude Code ๅฏไฝฟ็จ
ๅ
ฑไบซ MCP ้
็ฝฎ็ๆฎตใ
่ฟ็จ MCP ่ฎพ็ฝฎ
่ฟ็จ MCP ๅฎขๆท็ซฏไฝฟ็จ Streamable HTTP /mcp๏ผ/health ๆฏๅ
ฌๅผๅฅๅบทๆฃๆฅใ
export VESSEL_MCP_TRANSPORT=http
export VESSEL_MCP_HTTP_HOST=127.0.0.1
export VESSEL_MCP_HTTP_PORT=8765
export VESSEL_MCP_AUTH_TOKEN="<a-strong-random-token-you-generated>"
npm run start:http
่ฎพ็ฝฎ VESSEL_MCP_AUTH_TOKEN ๅ๏ผMCP ่ฏทๆฑ้่ฆ
Authorization: Bearer <token>ใ
ๅ
ฌๅผ Provider
ๆต่งๅจๆ่ทๅพๅฐ็ๅ
ฌๅผ adapter ้่ฆๆพๅผๅฏ็จใ
VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS=myshiptracking,tradlinx,aisfriends npm start
myshiptracking: ่น่ถ่ชๅจๅฎๆใๆ้ๅฎ MMSI ๆฅ่ฏขๆๆฐไฝ็ฝฎใๅฐๅพ่ๅดๆฅ่ฏขใ
tradlinx: FCL/LCL ๆฟ่ฟไบบ่ช็บฟ่ฎกๅๆฅ่ฏขใ
aisfriends: ๅบไบๅ
ฌๅผๅฐๅพ bounding-box ็ๅบๅไฝ็ฝฎๆฅ่ฏข๏ผไธๆฏๆ่นๅๆ็ดขใ
shipfinder: ็จไบๆพๅผ provider ่ทฏ็ฑ็่น่ถๆ็ดขๅ่ฏฆๆ
API ๅฝข็ถใ
BYOK Provider
ไป่ดนๆ้่ฆ credential ็ provider ๅช่ฝไฝฟ็จ BYOKใ็ๅฎ key ไธไผๅบ็ฐๅจๆฅๅฟใ
้่ฏฏๆ MCP ๅๅบไธญใ
export VESSEL_MCP_PROFILE_MARINETRAFFIC__API_KEY="<your-key>"
export VESSEL_MCP_ENABLE_BYOK_PROVIDERS="marinetraffic,vesselfinder,aisstream,aishub,barentswatch,searates-schedules,routescanner-connect,vesselapi,datadocked,datalastic,globalfishingwatch"
ๅฝๅๅฏๅจ runtime ๅฏ็จ็ credentialed provider ๆฏ marinetraffic,
vesselfinder, aisstream, aishub, barentswatch,
searates-schedules, routescanner-connect, vesselapi, datadocked, datalastic, globalfishingwatchใ
Agent ่ฎพ็ฝฎๆ็คบ่ฏ
่ฎฉๅ
ถไป็ผ็ agent ๅฎ่ฃ
ๆญค MCP ๆถๅฏไฝฟ็จไปฅไธๆ็คบ่ฏใ
่ฏทๅฐ https://github.com/tools-mcp/vessel-traffic-mcp ๅฎ่ฃ
ๅนถ้
็ฝฎไธบๆฌๆบ
ๆฌๅฐ stdio MCP ๆๅกๅจใ
ๅ
้
่ฏป README.md ๅ llms.txtใclone ไปๅบ๏ผ่ฟ่ก `npm ci` ๅ
`npm run build`๏ผ็ถๅๅจๆฌๅฐ MCP ๅฎขๆท็ซฏไธญ็จ `dist/index.js` ็็ปๅฏน่ทฏๅพ
ๆณจๅๆๅกๅจใ
ไฝฟ็จ `VESSEL_MCP_TRANSPORT=stdio`๏ผๅนถ่ฎพ็ฝฎ
`VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS=myshiptracking,tradlinx,aisfriends`ใ
ไธ่ฆๆไบคๆฌๅฐ MCP ๅฎขๆท็ซฏ้
็ฝฎใenv ๆไปถใAPI keyใcookieใHAR ๆไปถใ
ๆต่งๅจ session ๆ raw captureใไธ่ฆไปๅ
ถไปๆบๅจๅคๅถ credentialsใ
้ๅฏ MCP ๅฎขๆท็ซฏๅ้ช่ฏ๏ผ
1. ๆฅ่ฏข EVER GIVEN ๅฝๅ่นไฝ๏ผๅนถๆพ็คบๆฅๆบ URLใ
2. ๆฅ่ฏข KRPUS ๅฐ NLRTM ็ๆฟ่ฟไบบ่ช็บฟ่ฎกๅ๏ผๅนถๆพ็คบๆฅๆบ URLใ
Shared Reference
Shared MCP Config Snippets
Codex CLI ~/.codex/config.toml:
[mcp_servers.vessel-traffic-mcp]
command = "node"
args = ["/absolute/path/to/vessel-traffic-mcp/dist/index.js"]
[mcp_servers.vessel-traffic-mcp.env]
VESSEL_MCP_TRANSPORT = "stdio"
VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS = "myshiptracking,tradlinx,aisfriends"
Claude Desktop / Claude Code config:
{
"mcpServers": {
"vessel-traffic-mcp": {
"command": "node",
"args": ["/absolute/path/to/vessel-traffic-mcp/dist/index.js"],
"env": {
"VESSEL_MCP_TRANSPORT": "stdio",
"VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS": "myshiptracking,tradlinx,aisfriends"
}
}
}
}
Provider Implementation Status
The PRD is intentionally broader than the adapters enabled by default.
Current status:
| Group | Runtime status | Providers |
|---|
| Default | enabled with no env | fixture |
| Public opt-in | VESSEL_MCP_ENABLE_PUBLIC_PROVIDERS | aisfriends, myshiptracking, shipfinder, tradlinx-schedule |
| Credentialed implemented | VESSEL_MCP_ENABLE_BYOK_PROVIDERS or configured default profile | marinetraffic, vesselfinder, aisstream, aishub, barentswatch, searates-schedules, routescanner-connect, vesselapi, datadocked, datalastic, globalfishingwatch |
| Planned schedule APIs | cataloged, not implemented | linescape-schedule-api |
| Not started commercial AIS | cataloged, not implemented | spire-maritime, orbcomm-commtrace |
| Discovery or enterprise review | cataloged only | openais, noaa-marinecadastre, iqax-bigschedules, cargosmart-schedule, poseidon-ais, ais-now, fleetmon, windward, polestar-global, spglobal-seaweb, lloyds-list-intelligence |
The structured source of truth is
config/provider-catalog.example.json
and the human-readable inventory is
docs/provider-catalog.md.
Local Vessel Map UI
For a local visual check with ship-name input and a map:
Open http://127.0.0.1:8787 and search EVER GIVEN or MMSI
353136000. The UI displays a map marker and a visible source link.
Registered read-only schedule tools:
carrier_schedule_search
vessel_schedule
schedule_delay_predict
Registered read-only provider/setup tools:
provider_status
data_sources
credential_profiles
provider_onboarding
Fixture-backed checks:
KRPUS์์ NLRTM์ผ๋ก ๊ฐ๋ ์ ์ฌ ์ค์ผ์ค์ ์กฐํํ๊ณ , ์ถ์ฒ URL๋ ๊ฐ์ด ๋ณด์ฌ์ค.
EVER GIVEN ์ ๋ฐ ์ค์ผ์ค์ ์กฐํํ๊ณ ETA ์ง์ฐ ์ฌ๋ถ๋ฅผ ๊ณ์ฐํด์ค.
Schedule-provider candidates are tracked in
docs/provider-catalog.md. Tradelinx has
an explicit opt-in carrier_schedule_search adapter backed by
sanitized browser-captured endpoint shapes documented in
docs/runbooks/schedule-api-capture-results.md.
Capture And Safety Boundary
This project does not aim to bypass commercial services. It supports:
- Official APIs and open-data feeds.
- User-provided API credentials and organization-level BYOK credential
profiles for paid providers.
- Sanitized HAR/network samples from operator-owned, authorized
browser sessions, only where allowed by service terms.
It must not store raw cookies, bearer tokens, API keys, private HAR
files, raw captures, or private browser sessions in the repository.
The full hard-rule list lives in AGENTS.md, and
security expectations are in SECURITY.md.
Authorized capture tooling is documented in
docs/runbooks/capture-execution.md.
The sanitized import command is npm run capture:import, and traffic
IR generation is npm run capture:ir.
Not for navigation. AIS data returned by configured providers may be
delayed, incomplete, or inaccurate. This project is not a
safety-critical navigation tool.
Project Layout
src/
capture/ sanitized capture fixture importer + traffic IR CLI
config/ credential profile loader, provider catalog
providers/ adapter interfaces, registry, router, rate limit, TTL cache
server/ MCP transports and tool handlers
tools/ read-only tool definitions
util/ structured logging and redaction helpers
test/ node:test deterministic tests; fixture-backed
docs/ PRD, TDD, provider catalog, and runbooks
Documentation
llms.txt โ compact agent-facing project brief.
docs/index.html โ static agent discovery page
published through GitHub Pages.
server.json โ MCP Registry metadata for the
io.github.tools-mcp/vessel-traffic-mcp namespace.
AGENTS.md โ project hard rules.
CODE_OF_CONDUCT.md โ collaboration
expectations.
docs/PRD.md โ product requirements.
docs/TDD.md โ technical design.
docs/provider-catalog.md โ provider
inventory and routing policy.
docs/runbooks/operator.md โ
end-to-end operator runbook.
docs/runbooks/clients.md โ client
setup for Claude Desktop, Claude Code, ChatGPT remote MCP, and MCP
Inspector.
docs/runbooks/codex.md โ Codex CLI MCP
wiring and Codex plugin metadata state.
docs/runbooks/credential-profiles.md
โ BYOK profile handling.
docs/runbooks/deployment-https.md
โ HTTPS deployment for the Streamable HTTP MCP endpoint.
docs/runbooks/release-checklist.md
โ pre-release safety checklist.
docs/runbooks/public-sharing.md
โ GitHub, MCP Registry, Smithery, Glama, PulseMCP, and launch-post
sharing checklist.
docs/runbooks/api-capture-reference-only.md
โ reference-only boundary for raw capture sessions.
docs/runbooks/browser-api-capture-results.md
โ sanitized browser capture results for vessel APIs.
docs/runbooks/schedule-api-capture-results.md
โ sanitized browser capture results for schedule APIs.
docs/discoverability.md โ package,
repository, and documentation discoverability contract.
Topics
vessel-traffic-mcp is intended to be findable from MCP and plugin
search surfaces. The same set is reflected in package.json keywords
and suggested GitHub topics.
- vessel AIS MCP
- ship tracking MCP
- MarineTraffic MCP
- Claude MCP (Claude Desktop, Claude Code)
- ChatGPT MCP (ChatGPT remote MCP connector)
- Codex plugin (Codex / OpenAI plugin / marketplace workflows)
- Gemini MCP (Gemini CLI and Gemini Code Assist)
- MCP / Model Context Protocol server
- AIS / vessel tracking / ship tracking
- BYOK paid-provider routing (MarineTraffic, VesselFinder, AISStream,
AISHub, BarentsWatch, SeaRates, Routescanner, VesselAPI, Data Docked,
and other catalog entries)
Contributing
Contributions are welcome. Please read
CONTRIBUTING.md first. The project has
non-negotiable safety rules around credentials, capture fixtures, and
the read-only contract.
Use GitHub Issues for bugs, provider requests, and authorized capture
reviews. Use GitHub Discussions for roadmap, integration, and
collaboration threads. The sharing checklist is in
docs/runbooks/public-sharing.md.
Security
Do not file a public GitHub issue for a suspected vulnerability. See
SECURITY.md for the private reporting channel.
License
MIT. See NOTICE for the not-for-navigation notice.