@pipeworx/worldpop
Connect: https://gateway.pipeworx.io/worldpop/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
WorldPop (University of Southampton) 100 m gridded population estimates, 2000-2020, summed over any polygon you supply. Answers “how many people live inside this boundary” for arbitrary geometry — a catchment, a flood extent, a service area — where census tables only answer for official administrative units.
Tools
worldpop_stats_polygon(geojson, year?, dataset?, runasync?)— total population inside a GeoJSON Polygon/MultiPolygon.worldpop_datasets()— the population surfaces the stats service exposes.worldpop_task_status(taskid)— state and result of one async job.
Auth
Keyless. WorldPop asks for fair use (roughly 1,000 calls/day) and no registration.
Data sources
- https://api.worldpop.org/v1/services — dataset list (
wpgppoppopulation count,wpgpasage and sex structures). - https://api.worldpop.org/v1/services/stats — submit a polygon job.
- https://api.worldpop.org/v1/tasks/{taskid} — collect the result.
Two traps this pack absorbs:
The stats call is ASYNCHRONOUS and answers 200 either way. Submitting
returns {"status":"created","taskid":...} with no population in it — a caller
that reads that as the answer gets a silent zero. worldpop_stats_polygon
polls /tasks/{id} until status is finished (12 attempts, ~1.5 s apart;
a city-sized polygon finishes in about 3 s) and returns the taskid regardless,
so nothing is lost if the polling window expires.
A GeoJSON Feature is rejected. WorldPop’s validator accepts only a bare
geometry and answers "Invalid GeoJSON: ... is not valid under any of the given schemas" — as a 200 on the task, with error: true, not as an HTTP error.
Every mapping tool hands you a Feature, so normaliseGeometry unwraps
Feature and FeatureCollection before the call.
Tools
- worldpop_stats_polygon — Total population inside any polygon you draw, from WorldPop 100 m gridded population estimates (University of Southampton), for any year 2000-2020. Pass a GeoJSON Polygon or MultiPolygon in WGS84 and
- worldpop_datasets — List the WorldPop datasets and services the stats API exposes — which population surfaces (total counts, age/sex structures) can be summed over a polygon, with the description of what each covers. Key
- worldpop_task_status — Check or collect a WorldPop stats job by its task id. WorldPop runs polygon statistics asynchronously; pass the taskid returned by worldpop_stats_polygon (with runasync) to get the state and, once fin
Tools
worldpop_datasets— List the WorldPop datasets and services the stats API exposes — which population surfaces (total counts, age/sex structures) can be summed over a polygon, with the description of what each covers. Keyworldpop_stats_polygon— Total population inside any polygon you draw, from WorldPop 100 m gridded population estimates (University of Southampton), for any year 2000-2020. Pass a GeoJSON Polygon or MultiPolygon in WGS84 andworldpop_task_status— Check or collect a WorldPop stats job by its task id. WorldPop runs polygon statistics asynchronously; pass the taskid returned by worldpop_stats_polygon (with runasync) to get the state and, once fin