@pipeworx/world-port-index
Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/world-port-index’s. Install: one-click buttons
Connect to just the @pipeworx/world-port-index pack
https://gateway.pipeworx.io/world-port-index/mcp — only @pipeworx/world-port-index’s own tools, nothing else in the catalog.
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 3
Port facilities, depths, anchorages and navigational detail for ~2,950 ports worldwide — lookup by name/UN-LOCODE/WPI number, radius search from a lat/lon point, and listing by country.
Tools
port_lookup(name | unlocode | wpi_number)— resolve one port and return its WPI number, coordinates, harbor size/type, channel/anchorage/cargo-pier depths, and facility flags (pilotage, tugs, drydock, railway). Refuses with an error if nothing matches; returns a short candidate list if a name matches more than one port.ports_near(latitude, longitude, radius_km?, limit?)— ports within a radius of a point, nearest first, with distance in km.ports_by_country(country, harbor_size?, limit?)— ports for a country (name or ISO 3166-1 alpha-2 code), optionally filtered by harbor size (V=Very small, S=Small, M=Medium, L=Large).
Auth
Keyless. The pack reads its dataset from a Pipeworx-side store (see “Data sources” below) and makes no outbound calls at request time.
Data sources
- U.S. National Geospatial-Intelligence Agency (NGA), Maritime Safety Information, World Port Index (Pub. 150) — the standard reference for port facilities, depths, and navigational characteristics worldwide. US federal government data; public domain.
This pack does not bake its data into the gateway bundle — a first
version did, and a 1.7MB baked table pushed the gateway’s JS bundle over its
hard size ceiling, blocking every lane’s deploy (fleet #3061, 2026-10-14).
Instead it reads a single JSON object out of the shared pipeworx-datasets
R2 bucket at request time, cached in Worker-isolate memory for several hours
so only a cold isolate pays the fetch. scripts/refresh-ports.mjs fetches
NGA’s live feed, trims it, and writes that object locally; an operator with
R2 write access runs the wrangler r2 object put command it prints to
publish it (never run by this script itself). If the R2 object isn’t
published yet, or the binding isn’t configured on a deployment, every tool
returns a available: false note rather than throwing or going silently
empty. Every real response carries data_as_of. Depth fields
(channelDepth, anchorageDepth, cargoPierDepth, oilTerminalDepth) are
in meters as published by NGA; null means NGA records no data for that
category, not zero depth. harborTypeCode and shelterCode are passed
through as NGA’s own Pub 150 codes rather than decoded, since only the
harbor-size code (V/S/M/L) has an unambiguous, well-documented mapping.
Tools
- port_lookup — Look up a port in the NGA World Port Index by name, UN/LOCODE, or WPI number. Returns WPI number, coordinates, harbor size/type, channel/anchorage/cargo-pier depths, and facilities. Refuses with an er
- ports_near — Find NGA World Port Index ports within a radius of a lat/lon point, sorted nearest first, with distance in km.
- ports_by_country — List NGA World Port Index ports for a country (name or ISO 3166-1 alpha-2 code), optionally filtered by harbor size (V/S/M/L).
Tools
port_lookup— Look up a port in the NGA World Port Index by name, UN/LOCODE, or WPI number. Returns WPI number, coordinates, harbor size/type, channel/anchorage/cargo-pier depths, and facilities. Refuses with an erports_by_country— List NGA World Port Index ports for a country (name or ISO 3166-1 alpha-2 code), optionally filtered by harbor size (V/S/M/L).ports_near— Find NGA World Port Index ports within a radius of a lat/lon point, sorted nearest first, with distance in km.