UN Sustainable Development Goals (SDG) Indicators MCP — UN Statistics Division. Provides access to UN SDG indicators, goals, targets, geographic areas, and time-series data via the UN Statistics Division API.
Server defines 5 tools with clear verb-noun naming (list_*, get_*) and reasonable descriptions (avg 180 chars). All tools have input schemas with type declarations. However, critical gaps: (1) output schemas are completely undocumented, LLMs cannot plan downstream calls or extract fields; (2) parameter descriptions lack format/constraint details (e.g., 'goal' accepts '1-17' but description doesn't specify validation); (3) no error handling guidance, API failures return raw HTTP errors with no recovery hints; (4) no pagination support despite list_* tools potentially returning large datasets; (5) tool descriptions reference external series codes ('SI_POV_DAY1') without explaining how to discover them. Naming is solid (verb_noun pattern, action-clear), but schema and error handling are production gaps.
Get observations for an SDG series in a geographic area over a time range. seriesCode comes from list_indicators/list_series; areaCode is an M49 code from list_geoareas. Returns { data: [...] } where each observation has value, timePeriodStart, geoAreaName, source, footnotes, etc.
List geographic areas with their M49 area codes (e.g. 1 = World, 4 = Afghanistan, 8 = Albania). Pass an M49 code as areaCode in get_series_data.
List the 17 UN Sustainable Development Goals (code, title, description). Optionally drill into one goal to get its targets and indicators.
The queryable catalog of SDG indicators. Each indicator (e.g. "1.1.1") nests its data series with their series codes (e.g. "SI_POV_DAY1"). Use a series code as seriesCode in get_series_data.
Flat list of all SDG data series (series code + description + goal/target/indicator it belongs to). Series codes are what you pass to get_series_data. Use this when you want the raw series list rather than the indicator-nested view from list_indicators.
Output schemas completely undocumented. No tool declares what fields it returns, forcing LLMs to guess structure and preventing chaining.
No error handling guidance. Raw HTTP errors (e.g., '404 Not Found') provide no recovery hints. LLMs cannot self-correct or retry intelligently.
Parameter 'goal' in list_goals lacks validation constraints. Description says 'Optional goal code 1-17' but no enum or pattern enforces this. LLMs may pass invalid values.
List tools (list_indicators, list_series, list_geoareas) have no pagination support. Large result sets will blow context windows. No limit, offset, or cursor parameters.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Tool descriptions reference external codes ('SI_POV_DAY1', 'M49') without explaining discovery workflow. LLMs must infer that list_indicators/list_geoareas must be called first.