# io.github.cyanheads/who-gho-mcp-server (remote · who-gho.caseyjhand.com)

WHO Global Health Observatory — 3,059 indicators across 194 member states.

- Trust score: 69/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `who-gho.caseyjhand.com`: 69/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-who-gho-mcp-server/who-gho.md), [page](https://verifymcp.io/servers/cyanheads-who-gho-mcp-server/who-gho)
- npm · `@cyanheads/who-gho-mcp-server`: 35/100, [markdown](https://verifymcp.io/servers/cyanheads-who-gho-mcp-server/cyanheads-who-gho-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-who-gho-mcp-server/cyanheads-who-gho-mcp-server)

## Channel facts

- Endpoint: `https://who-gho.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.14`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 66/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 6 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 68/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1273 tokens (~212/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http cyanheads-who-gho-mcp-server https://who-gho.caseyjhand.com/mcp
```

### Codex

```toml
[mcp_servers.cyanheads-who-gho-mcp-server]
url = "https://who-gho.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-who-gho-mcp-server": {
      "type": "remote",
      "url": "https://who-gho.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-who-gho-mcp-server --url https://who-gho.caseyjhand.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-who-gho-mcp-server:
    url: "https://who-gho.caseyjhand.com/mcp"
```

### Other

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

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 68, +2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 66, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 64, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 64)

First indexed and scored.

## MCP tools (6)

### `who_list_dimensions` (~75 tokens)

List GHO Dimension Types

List all dimension type codes and human-readable titles available in the WHO Global Health Observatory API. Use this to discover valid dimension codes before calling who_list_dimension_values. Common dimensions include COUNTRY, REGION, SEX, WORLDBANKINCOMEGROUP, and AGEGROUP, but many additional types exist — this tool exposes them all.

Output parameters:

- `dimensions` (array): All available dimension types in the GHO catalog.

### `who_list_dimension_values` (~121 tokens)

List GHO Dimension Values

List valid codes and labels for a WHO GHO dimension type such as COUNTRY, REGION, SEX, WORLDBANKINCOMEGROUP, or AGEGROUP. Use this to discover valid filter values before calling who_query_indicator_data, or to confirm the correct ISO code for a country. Use who_list_dimensions to discover all available dimension type codes.

Input parameters:

- `dimension` (string, required): Dimension type code. Use who_list_dimensions to discover all available codes. Common values: COUNTRY, REGION, SEX, WORLDBANKINCOMEGROUP, AGEGROUP.

Output parameters:

- `dimension` (string): The requested dimension type code.
- `values` (array): Valid values for this dimension type.

### `who_search_indicators` (~139 tokens)

Search WHO GHO Indicators

Search the WHO Global Health Observatory indicator catalog by keyword in the indicator name. Returns indicator codes and names for use with who_query_indicator_data. The search uses a substring match on indicator names — try terms like "life expectancy", "immunization", "mortality", "diabetes", or "HIV". If results are truncated, refine the query or use who_list_indicators to browse by offset.

Input parameters:

- `limit` (integer): Maximum number of indicators to return. Default 20, max 100.
- `query` (string, required): Keyword to search in indicator names, e.g. "life expectancy" or "tuberculosis".

Output parameters:

- `effectiveQuery` (string): Keyword used for the catalog search, as received by the server.
- `indicators` (array): Matching indicators up to the requested limit.
- `notice` (string): Present when the limit was reached and more results exist. Suggests how to get additional results.
- `totalCount` (number): Total indicators matching the query in the catalog, before the limit is applied.

### `who_list_indicators` (~93 tokens)

List WHO GHO Indicators

Browse the WHO Global Health Observatory indicator catalog with pagination. Use when you want to explore indicators without a keyword, or to page through the full catalog. Use who_search_indicators when you have a keyword to narrow the results.

Input parameters:

- `limit` (integer): Number of indicators to return per page. Default 50, max 500.
- `offset` (integer): Zero-based offset for pagination. Default 0.

Output parameters:

- `hasMore` (boolean): True when more indicators exist beyond the current page.
- `indicators` (array): Indicators for the requested page.
- `pageInfo` (string): Human-readable page position, e.g. "offset 0, showing 50 of 3059". Use to construct the next offset.
- `totalCount` (number): Total number of indicators in the GHO catalog.

### `who_get_indicator_metadata` (~138 tokens)

Get WHO GHO Indicator Metadata

Fetch metadata for one or more WHO GHO indicator codes: the full indicator name and the dimensions it supports (e.g. COUNTRY, REGION, SEX, YEAR, WORLDBANKINCOMEGROUP, AGEGROUP). Call this before querying data with who_query_indicator_data to confirm which filter dimensions are valid for a given indicator. Accepts up to 10 codes per call. Codes with no metadata are reported in the notFound array rather than causing an error.

Input parameters:

- `indicator_codes` (array, required): One to ten indicator codes, e.g. ["WHOSIS_000001", "MDG_0000000026"].

Output parameters:

- `indicators` (array): Metadata for each code that returned results.
- `notFound` (array): Indicator codes that returned no metadata — they may not exist in the GHO catalog.

### `who_query_indicator_data` (~633 tokens)

Query WHO GHO Indicator Data

Query data rows for a single WHO GHO indicator with optional spatial, temporal, and dimension filters. Returns rows with numeric values, uncertainty intervals (Low/High), and spatial/time metadata. This is the primary data-fetching tool in the find-then-query workflow: use who_search_indicators to find the indicator code, optionally call who_get_indicator_metadata to confirm which filter dimensions are valid, then call this tool. Spatial filters are mutually exclusive per call: provide only one of country_codes, region_codes, or income_group_codes — mixing them triggers an error. Omitting all spatial filters returns all geographies (may be large; use limit to cap). The sex filter only applies when the indicator uses SEX as its first cross-cutting dimension — if not, the filter returns empty rows; check who_get_indicator_metadata first if uncertain.

Input parameters:

- `country_codes` (array): ISO 3166-1 alpha-3 country codes to filter on, e.g. ["JPN","USA","BRA"]. Mutually exclusive with region_codes and income_group_codes.
- `dim1_value` (string): Value filter for indicators whose first cross-cutting dimension is not SEX (e.g. an AGEGROUP code like "YEARS05-14"). Ignored when sex is also provided.
- `include_uncertainty` (boolean): Include Low and High uncertainty interval bounds in output. Default true.
- `income_group_codes` (array): World Bank income group codes, e.g. ["WB_HI","WB_LMI","WB_LI","WB_UMI"]. Use who_list_dimension_values with dimension="WORLDBANKINCOMEGROUP" to see all valid codes. Mutually exclusive with country_co…
- `indicator_code` (string, required): Indicator code to query, e.g. "WHOSIS_000001". Use who_search_indicators to find codes.
- `limit` (integer): Maximum number of data rows to return. Default 200, max 1000.
- `region_codes` (array): WHO region codes to filter on, e.g. ["AFR","EUR","AMR","EMR","SEAR","WPR"]. Returns the aggregate row for each named WHO region — not per-country rows within it. To get country-level data for a regio…
- `sex` (string): Filter on sex dimension: SEX_BTSX (both sexes), SEX_FMLE (female), SEX_MLE (male). Only applies when the indicator uses SEX as its first cross-cutting dimension.
- `year_from` (integer): Start year (inclusive) for the time range filter, e.g. 2015.
- `year_to` (integer): End year (inclusive) for the time range filter, e.g. 2023.

Output parameters:

- `appliedFilters` (object): Filters that were applied to the query.
- `notice` (string): Present when the limit was reached and not all rows were returned. Explains how to retrieve additional rows.
- `rows` (array): Data rows matching the query.
- `totalCount` (number): Alias of totalRows for cross-tool consistency — total rows before the limit.
- `totalRows` (number): Total row count matching the query on the server (before the limit is applied).
- `truncated` (boolean): True when the result was capped at the requested limit.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-who-gho-mcp-server/who-gho#diagnostics

## Score history

- 2026-08-03: 69
- 2026-08-02: 68
- 2026-08-01: 68
- 2026-07-31: 68
- 2026-07-30: 66
- 2026-07-29: 66
- 2026-07-28: 65
- 2026-07-27: 64
- 2026-07-26: 64

## Links

- Remote endpoint: https://who-gho.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/who-gho-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-who-gho-mcp-server/who-gho/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-who-gho-mcp-server/who-gho/changelog.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-who-gho-mcp-server/who-gho
