unicefstats-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_indicatorsA | Search UNICEF child development indicators by keyword. Returns indicator codes, names, and categories. Use the returned Examples: "mortality", "breastfeeding", "education", "child labour", "stunting" v1.1.0 advisory layer (additive to v0.9.0/v1.0.0 ambiguity_flag):
|
| list_categoriesA | List all UNICEF indicator categories (thematic groups). Categories correspond to SDMX dataflows: CME (child mortality), NUTRITION, EDUCATION, CHILD_PROTECTION, WASH, HIV_AIDS, etc. Use this to browse available topics before searching for specific indicators. |
| list_countriesA | List countries available in the UNICEF database with ISO3 codes. Optionally filter by region name (case-insensitive partial match). Use the iso3 values in get_data(). |
| get_indicator_infoA | Get full metadata for a UNICEF indicator. Returns description, category, dataflow, and SDMX API details. Use this before calling get_data() to understand what the indicator measures and which disaggregation filters (sex, age, wealth_quintile, residence) apply. |
| lookup_by_codeA | Strict canonical lookup of a UNICEF indicator by its exact code. Use this INSTEAD of search_indicators when you already have a UNICEF indicator code (e.g. CME_MRY0T4, IM_DTP3, ED_15-24_LR). Do NOT pass natural-language descriptions, synonyms, or partial names — this tool is canonical-only. Two-tool separation introduced in v0.9.0 to give the LLM a self-describing choice at tool-selection time:
Returns the same canonical metadata shape as get_indicator_info on success. On unknown code, returns an error with an explicit abstain_instruction directing the model to stop — NOT to fall back to search_indicators (which would re-enter the loop that 96% of v9 Arm B stuck queries hit). Returns:
|
| get_temporal_coverageA | Check what years of data are available for a UNICEF indicator. Fetches a small sample to determine the time range. Lightweight — does not fetch all observations. Use before get_data() to pick a year range. |
| get_dataA | Fetch UNICEF data for an indicator and one or more countries. Returns annual observations from the UNICEF SDMX API. Use format="compact" (default) for a clean 5-column table; use format="full" for all columns including disaggregation details and confidence bounds.
Genuinely ambiguous queries are refused with a disambiguation list. Examples: indicator='child mortality' → refused: pick CME_MRM0 / CME_MRY0 / CME_MRY0T4 / CME_MRY1T4 indicator='vaccination' → refused: pick IM_BCG / IM_DTP1/3 / IM_MCV1/2 Prefer passing the user's phrasing verbatim over guessing the code from
memory — that's where the v0.6.x had a documented failure mode (model
recalls
Prefer passing the user's country name verbatim over guessing the ISO3 code from memory — that's where v0.6.0 had a documented failure mode. v0.6.0 server-side hardening: this tool also performs a pre-flight
year-frontier check. If Disaggregation filters (v1.2.0):
sex: "_T" (total, default), "M" (male), "F" (female).
age: SDMX AGE code such as "Y0T4", "Y15T19", "Y15T24". The age codelist
depends on the indicator's dataflow — call When any non- Validation: filters are checked against the indicator's actual primary
dataflow before the SDMX call. Unsupported (dim, value) pairs are
refused with a BREAKING CHANGE FROM v1.1.x: the typed Limit defaults to 200 rows — narrow your country/year filters or
increase limit (max 500) if you need more data. In |
| get_api_referenceA | Get the unicefdata package API reference for Python, R, or Stata. Returns function signatures, parameter descriptions, and usage examples. Use this when you need to write code that uses the unicefdata package, or when the user wants to move from conversational exploration to reproducible scripts. |
| get_server_metadataA | Return machine-readable identity, provenance, and version information for this MCP server. Use this to verify you are connected to the authentic unicefstats-mcp server and to inspect its canonical identity, data source, and publisher information. No API call — returns local metadata only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| compare_indicators | Compare a UNICEF indicator across countries over time. Pre-built analysis workflow: fetches indicator metadata and data, then asks for a structured comparison including trends, regional patterns, and caveats. |
| write_unicefdata_code | Generate unicefdata code for a data analysis task. Takes a plain-language description of what the user wants to do and generates runnable code in Python, R, or Stata using the unicefdata package. |
| trend_analysis | Analyze the trend of a UNICEF indicator for a single country over time. Fetches the full time series and produces a structured trend assessment with annualized rate of change, inflection points, and policy context. |
| country_profile | Generate a child development profile for a country using key UNICEF indicators. Fetches the latest values for a curated set of child health, nutrition, education, and protection indicators and presents them as a country brief. |
| sdg_progress | Assess a country's progress on child-related SDG targets using UNICEF data. Maps UNICEF indicators to SDG targets (3.2, 2.2, 4.1) and reports whether the country is on track, needs acceleration, or is off-track. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| llm_instructions_resource | Workflow guide, DO/DON'T rules, and common mistakes for AI assistants. |
| categories_resource | All indicator categories with counts. |
| countries_resource | All country ISO3 codes and names. |
| system_prompt_resource | Recommended system prompt for AI assistants connecting to this MCP server. Loads at session start. Establishes the operating loop, the temporal-frontier check, and the anti-extrapolation directive that addresses the T2 hallucination failure mode (fabrication when the requested year is beyond the data frontier). Pattern adopted from the World Bank data360-mcp `data360://system-prompt` resource — same enforcement layer (skill / system prompt) where structural guardrails sit, not the tool-description layer (which is advisory). |
| context_resource | Runtime context — current date and year. The model needs to know what year "now" is to evaluate temporal queries. Without this, the model cannot reliably tell whether a user-requested year is forward of the data frontier (the T2 hallucination failure mode in the unicefstats-mcp benchmark — model fabricates values for future years 36% of the time when this context is missing). Pattern adopted from the World Bank data360-mcp `data360://context` resource. |
| glossary_resource | Key terms and abbreviations used in UNICEF data. |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jpazvd/unicefstats-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server