@pipeworx/global-fishing-watch
Connect: https://gateway.pipeworx.io/global-fishing-watch/mcp · Install: one-click buttons
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
Global Fishing Watch API v3 — AIS-derived vessel identity, at-sea events (apparent fishing, encounters, loitering, port visits, AIS gaps) and aggregated apparent fishing effort.
Tools
gfwfish_vessels_search(query, datasets?, limit?, offset?, _apiKey)— vessel identity by name, MMSI, IMO or call sign.gfwfish_events(start_date, end_date, vessel_id?, event_type?, limit?, offset?, _apiKey)— events over a date range.gfwfish_4wings_report(bbox, start_date, end_date, group_by?, temporal_resolution?, spatial_resolution?, datasets?, _apiKey)— apparent fishing effort aggregated over a bounding box.
Auth
BYO only today. Every v3 endpoint requires a Bearer token; there is no keyless or demo path. Tokens are free for non-commercial use after registration at https://globalfishingwatch.org/our-apis/tokens.
The platform env var is PLATFORM_GFW_FISHING_TOKEN, declared on the manifest
entry with byoExpected: true because no token is provisioned. Remove
byoExpected in the same change that lands the secret. Distinct from
PLATFORM_GFW_KEY, which is Global Forest Watch — different organisation,
different API, similar abbreviation.
licence: non-commercial is set on the pack: GFW data is free for
non-commercial use and commercial use needs their permission.
Data sources
- https://gateway.api.globalfishingwatch.org/v3/vessels/search
- https://gateway.api.globalfishingwatch.org/v3/events
- https://gateway.api.globalfishingwatch.org/v3/4wings/report (POST; the region geometry goes in the body, the resolution/grouping in the query string)
A 401 from this API proves nothing about the path. An unauthenticated
request to any path — including one that does not exist, verified against
/v3/zzz-not-a-path on 2026-09-17 — answers 401 {"error":"invalid token"}.
So the endpoint shapes above are taken from GFW’s published v3 documentation
and have NOT been confirmed against a live token; the first caller with a real
key should check the response field names (entries, total) before trusting
them.
Multi-value parameters use indexed square brackets: datasets[0]=...,
vessels[0]=....
Tools
- gfwfish_vessels_search — Search the Global Fishing Watch vessel identity database by name, MMSI, IMO or call sign. Returns each matching vessel with its GFW vessel id (pass it to gfwfish_events), flag state, gear type, regist
- gfwfish_events — Global Fishing Watch vessel events over a date range — apparent fishing, encounters between vessels at sea, loitering, port visits and AIS gaps (transmission switched off). Each event carries its posi
- gfwfish_4wings_report — Aggregate apparent fishing effort (hours) from Global Fishing Watch over a bounding box and date range, grouped by flag state, gear type or vessel. This is the AIS-derived fishing-pressure layer behin
Tools
gfwfish_4wings_report— Aggregate apparent fishing effort (hours) from Global Fishing Watch over a bounding box and date range, grouped by flag state, gear type or vessel. This is the AIS-derived fishing-pressure layer behingfwfish_events— Global Fishing Watch vessel events over a date range — apparent fishing, encounters between vessels at sea, loitering, port visits and AIS gaps (transmission switched off). Each event carries its posigfwfish_vessels_search— Search the Global Fishing Watch vessel identity database by name, MMSI, IMO or call sign. Returns each matching vessel with its GFW vessel id (pass it to gfwfish_events), flag state, gear type, regist