@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 er
  • 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).
  • ports_near — Find NGA World Port Index ports within a radius of a lat/lon point, sorted nearest first, with distance in km.

Regenerated from source · build October 27, 2026