SkillAgentSearch skills...

who-gho-mcp-server

Query WHO Global Health Observatory data — 3,059 indicators across 194 member states with country, region, year, and sex filters via MCP. STDIO or Streamable HTTP.

Install / Use

claude mcp add cyanheads -- npx -y github:cyanheads/who-gho-mcp-server

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

83/100

Category

Marketing

Supported Platforms

Claude Code
Claude Desktop

Our assessment of who-gho-mcp-server

who-gho-mcp-server scores 83/100 on our quality scale, 458th of 573 Marketing skills we index.

Its MCP Server is 17 KB long, well organised into 31 sections with 11 code examples: a thorough specification that gives an agent plenty to work with.

It has 3 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
3/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 3 days ago, so who-gho-mcp-server is actively maintained.
  • It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

who-gho-mcp-server compared with similar skills

All 4 of these similar skills score higher than who-gho-mcp-server; compare them before choosing.

SkillScoreStarsUpdatedFormat
who-gho-mcp-server (this skill)by cyanheads8333d agoMCP Server
Agent-Reachby Panniantong100106.0k4d agoCLAUDE.md
headroomby headroomlabs-ai10078.2ktodayCLAUDE.md
CowAgentby zhayujie10047.7ktodayCLAUDE.md
Scraplingby D4Vinci10090.3ktodayMCP Server

Frequently asked questions

How do I install who-gho-mcp-server?
Run claude mcp add cyanheads -- npx -y github:cyanheads/who-gho-mcp-server. The install tabs above show the steps for each supported agent.
Which AI agents does who-gho-mcp-server work with?
It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
Is who-gho-mcp-server safe to use?
It is Apache-2.0-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is who-gho-mcp-server still maintained?
The repository was last updated 3 days ago, so who-gho-mcp-server is actively maintained.
<div align="center"> <h1>@cyanheads/who-gho-mcp-server</h1> <p><b>Query WHO Global Health Observatory data — 3,102 indicators across 194 member states with country, region, year, and sex filters via MCP. STDIO or Streamable HTTP.</b> <div>6 Tools • 4 Data Resources • 1 Skill</div> </p> </div> <div align="center">

Version License Docker MCP SDK npm TypeScript Bun

</div> <div align="center">

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

Public Hosted Server: https://who-gho.caseyjhand.com/mcp

</div>

Overview

Global health statistics from the WHO Global Health Observatory: 3,102 indicators across 194 member states. Search indicators and query data by country, region, income group, sex, and year.

Tools

| Tool | Description | |:---|:---| | who_search_indicators | Search the GHO indicator catalog by keyword in indicator names | | who_list_indicators | Browse the full indicator catalog with pagination | | who_get_indicator_metadata | Fetch indicator names and dimension types, processing 10 codes per call with continuation for larger batches | | who_list_dimensions | List all dimension type codes available in the GHO API | | who_list_dimension_values | List valid codes and labels for a dimension type (COUNTRY, REGION, SEX, etc.) | | who_query_indicator_data | Query data rows for an indicator with spatial, temporal, and dimension filters |

Resources

| Resource | Description | |:---|:---| | who://indicator/{indicatorCode}/metadata | Indicator name and supported filter dimensions for a single code | | who://dimension/{dimensionCode}/values | First 100 values for a dimension type | | who://dimension/{dimensionCode}/values{?limit,offset} | One explicit page of a dimension type's values | | who://dimension/{dimensionCode}/values{?limit,offset,parentCode} | One explicit page, narrowed to a parent code |

Each mirrors data also reachable via who_get_indicator_metadata and who_list_dimension_values — useful for clients that inject resources as context but don't call tools.

Agent skill

who-gho-guide covers dimension-position discovery, complete country comparisons, and countries versus regional aggregates. It ships with plugin installs, npm, Docker, and the MCPB bundle. MCP clients can discover its SKILL.md through resources/list or the io.modelcontextprotocol/skills extension (skills/list, skills/get, and resources/directory/read); the server also exposes the skill://{+path} resource template.

Capability reference

who_search_indicators <sub>tool</sub>

  • Each whitespace-separated word must match a substring in the indicator name, in any order; no stemming or fuzzy expansion. If names have no matches, an exact indicator-code lookup is attempted.
  • Returns indicator codes and display names for use with who_query_indicator_data
  • Offset-based pagination (offset, default 0) with limit default 20, max 100; reports totalCount, hasMore, pageInfo, nextOffset
  • An offset at or beyond totalCount returns an empty page; a no_results error is raised only when nothing matches at all

who_list_indicators <sub>tool</sub>

  • No keyword required — browse the 3,102-indicator catalog
  • Offset-based pagination via limit (default 50, max 500) and offset
  • Returns totalCount and hasMore for iteration

who_get_indicator_metadata <sub>tool</sub>

  • Accepts up to 1,000 indicator codes and processes the first 10 in parallel; submit returned unprocessedCodes next. With GHO_CLAMP_LIMITS=false, batches over 10 are rejected.
  • Returns the full indicator name and supported dimension types (e.g. COUNTRY, SEX, REGION, AGEGROUP) for each resolved code
  • Indicators with no dimension listing upstream return dimensions: [] plus a dimensionsNote pointing at a sample data row's dimension type/value pairs. Metadata does not identify dimension positions.
  • Codes resolving to neither a catalog entry nor dimension rows land in notFound; the call fails when no processed code resolves and no unprocessed codes remain

who_list_dimensions <sub>tool</sub>

  • No inputs — returns every dimension type code and human-readable title in the GHO catalog
  • Common types: COUNTRY, REGION, SEX, WORLDBANKINCOMEGROUP, AGEGROUP
  • Use to discover codes before calling who_list_dimension_values

who_list_dimension_values <sub>tool</sub>

  • Returns codes and labels for the dimension's values (e.g. the 234 country entries, the 43 WHO region codes), plus optional parent-hierarchy fields (parentCode, parentLabel, parentDimension)
  • parent_code narrows hierarchical dimensions — dimension: "COUNTRY" with parent_code: "EUR" returns the 58 countries in the WHO European Region
  • Deterministic ordering by Code; offset-based pagination (offset) with limit default 100, max 500 — GHO (3,103 values) and DHSMICSGEOREGION (4,932) need paging
  • A parent_code that matches nothing returns an empty page for a known dimension; unknown dimensions fail even with a parent filter
  • An unpaired UTF-16 surrogate in dimension fails as a typed malformed_identifier validation error

who_query_indicator_data <sub>tool</sub>

  • Spatial filters are mutually exclusive per call: country_codes (WHO country codes, including historical entries), region_codes (WHO aggregate rows), or income_group_codes (World Bank aggregate rows) — supplying more than one is a validation error
  • year_from / year_to time range; sex (SEX_BTSX, SEX_FMLE, SEX_MLE) applies only when the indicator's first cross-cutting dimension is SEX. dim1_value, dim2_value, and dim3_value select observed positional values; discover positions from returned type/value pairs, not metadata. sex overrides dim1_value with a notice.
  • include_uncertainty (default true) adds low/high bounds; sort (year_desc default or year_asc) with a total row ordering so paging never repeats or drops rows
  • Offset-based pagination with limit default 200, max 1000; reports totalRows, hasMore, pageInfo, nextOffset
  • Typed failure reasons: indicator_not_found, no_data, ambiguous_spatial_filter, invalid_year_range, invalid_query, malformed_identifier

who://indicator/{indicatorCode}/metadata <sub>resource</sub>

  • Indicator name and supported filter dimensions as application/json
  • indicatorCode comes from who_search_indicators or who_list_indicators
  • Empty dimensions carries a dimensionsNote when the upstream dimension table lists none for the code, rather than reporting a missing indicator
  • Returns a 404 error only when the code resolves to neither a catalog name nor any dimension rows

who://dimension/{dimensionCode}/values <sub>resource</sub>

  • Bare URI returns the first 100 values for the dimension (dimensionCode from who_list_dimensions), as application/json
  • Registered separately from the two paged variants below because the MCP SDK's RFC 6570 matcher treats every URI query variable as required — one template cannot serve both a bare and a paged form
  • An unfiltered empty result means the dimension code does not exist

who://dimension/{dimensionCode}/values{?limit,offset} <sub>resource</sub>

  • limit (1–500) and offset must both be present in the URI — the query variables are required, not optional
  • Same page fields as the bare URI: totalCount, hasMore, nextOffset, and an optional notice
  • An offset at or beyond totalCount returns an empty page, not an error

who://dimension/{dimensionCode}/values{?limit,offset,parentCode} <sub>resource</sub>

  • Adds parentCode to narrow to one parent value, e.g. parentCode="EUR" for countries in the WHO European Region; limit, offset, and parentCode must all be present in the URI
  • A parentCode that matches nothing returns an empty page for a known dimension; unknown dimensions fail even with a parent filter
  • Same output shape as the bare and paged resources: dimension, values, totalCount, hasMore, nextOffset, notice

Features

Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.

WHO GHO-specific:

  • Full coverage of the WHO GHO OData API v2 — indicators, dimensions, dimension values, and data queries
  • Configurable base URL and service-operation deadline (GHO_BASE_URL, GHO_REQUEST_TIMEOUT_MS) for custom or mirrored deployments
  • Parallel metadata fan-out for multi-code indicator lookups
  • Deterministic, total row/value ordering — pagination never repeats or drops rows across pages

Agent-friendly output:

  • Tool descriptions encode the cross-tool workflow — agents discover the right call order (search → metadata → query) from descriptions alone
  • Structured pagination signaling (hasMore, nextOffset, pageInfo, and truncated on the data-query tool) so agents can decide whether to page further
  • Discriminated, typed error reasons with a recovery hint on every failure path
  • Distinct empty-page vs. not-found semantics — paging past the end, an unmatched filter, and a genuinely missing code each report differently instead of colliding into one generic empty result

Getting started

Public Hosted Instance

A public instance is available at https://who-gho.caseyjhand.com/mcp — no installation required. Point any MCP client at it via Streamable HTTP:

{
  "mcpServers": {
    "who-gho-mcp-server": {
      "type": "streamable-http",
      "url": "https://who-gho.caseyjhand.com/mcp"
    }
  }
}

Self-Hosted / Local

Add the following to your MCP client configuration file.

{
  "mcpServers": {
    "who-gho-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/who-gho-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TY

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars3
CategoryMarketing
Updated3d ago
Forks0

Languages

TypeScript

Trust signals

92/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 low