Data source: WHO GHO OData API
Overview
WHO GHO (Global Health Observatory) wraps WHO GHO OData API, handling authentication, pagination, and rate limits for you. This tutorial covers all 5 tools with working code examples you can copy and run.
Prerequisites
- Sign up at https://context.gnist.ai/signup for a free API key (100 calls/day).
- Choose your integration method: MCP protocol or REST API.
Connect via MCP
Add to your MCP client config (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"gnist-who-gho": {
"url": "https://context.gnist.ai/mcp/who-gho/",
"headers": {
"Gnist-API-Key": "YOUR_API_KEY"
}
}
}
}
Tools (5)
search_health_indicators
Search for WHO health indicators by keyword. The Global Health Observatory contains 2000+ indicators covering diseases, risk factors, health systems, mortality, and more. Use this to discover indicator codes before calling get_health_indicator_data(). Returns: count and list of indicators with code and name.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | required | Search term (e.g. 'life expectancy', 'malaria', 'tuberculosis', 'obesity'). |
max_results | integer | optional | Maximum number of indicators to return. (default: 25) |
curl -X POST "https://context.gnist.ai/mcp/who-gho/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_health_indicators", "arguments": {"query": "'life"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/who-gho/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'query': "'life"},
'name': 'search_health_indicators'}},
)
print(resp.json())
get_health_indicator_data
Get data for a specific WHO health indicator. Returns time series data optionally filtered by country, year range, and sex. Each observation includes the numeric value, display value (may include confidence intervals), and dimensional breakdowns. Args: indicator_code: WHO GHO indicator code. Use search_health_indicators() to find codes. country: ISO alpha-3 country code. Omit for all countries. year_from: Start year (inclusive). year_to: End year (inclusive). sex: Filter by sex: 'male', 'female', or 'both'. max_results: Maximum data points to return. Returns: indicator code, observation count, source, and observations list.
| Parameter | Type | Required | Description |
|---|---|---|---|
indicator_code | string | required | WHO GHO indicator code (e.g. 'WHOSIS_000001' for life expectancy). Use search_health_indicators() to find codes. |
country | any | optional | ISO alpha-3 country code (e.g. 'NOR', 'USA', 'GBR'). Omit for all countries. |
year_from | any | optional | Start year (inclusive). |
year_to | any | optional | End year (inclusive). |
sex | any | optional | Filter by sex: 'male', 'female', or 'both'. |
max_results | integer | optional | Maximum data points to return. (default: 500) |
curl -X POST "https://context.gnist.ai/mcp/who-gho/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_health_indicator_data", "arguments": {"indicator_code": "'WHOSIS_000001'"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/who-gho/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'indicator_code': "'WHOSIS_000001'"},
'name': 'get_health_indicator_data'}},
)
print(resp.json())
compare_countries_health
Compare countries on a specific health indicator. Returns the latest available value for each country, making it easy to benchmark health outcomes across nations. Includes both sexes by default when available. Args: indicator_code: WHO GHO indicator code to compare. countries: List of ISO alpha-3 country codes. year: Specific year. Omit for latest available. Returns: indicator, year filter, and per-country latest values with all observations.
| Parameter | Type | Required | Description |
|---|---|---|---|
indicator_code | string | required | WHO GHO indicator code to compare across countries. |
countries | list[string] | required | List of ISO alpha-3 country codes (e.g. ['NOR', 'SWE', 'DNK', 'FIN']). |
year | any | optional | Specific year to compare. Omit for latest available. |
curl -X POST "https://context.gnist.ai/mcp/who-gho/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "compare_countries_health", "arguments": {"indicator_code": "example", "countries": "['NOR'"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/who-gho/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'countries': "['NOR'", 'indicator_code': 'example'},
'name': 'compare_countries_health'}},
)
print(resp.json())
get_country_health_profile
Get a comprehensive health profile for a country. Returns latest values across 12 key health indicators: life expectancy, healthy life expectancy, infant/child/maternal mortality, obesity, alcohol, tobacco, physician density, nurse density, health expenditure, and UHC coverage index. Args: country: ISO alpha-3 country code. Returns: country, source, and list of 12 indicator snapshots with latest values.
| Parameter | Type | Required | Description |
|---|---|---|---|
country | string | required | ISO alpha-3 country code (e.g. 'NOR', 'USA', 'GBR', 'JPN'). |
curl -X POST "https://context.gnist.ai/mcp/who-gho/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_country_health_profile", "arguments": {"country": "'NOR'"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/who-gho/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'country': "'NOR'"},
'name': 'get_country_health_profile'}},
)
print(resp.json())
report_feedback
Report a bug, feature request, or general feedback for this data source. Use this when something doesn't work as expected, when you'd like a new feature, or when you have suggestions for improvement. Args: feedback: Describe the issue or suggestion. feedback_type: One of 'bug', 'feature_request', or 'general'.
| Parameter | Type | Required | Description |
|---|---|---|---|
feedback | string | required | |
feedback_type | string | optional | (default: general) |
curl -X POST "https://context.gnist.ai/mcp/who-gho/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "report_feedback", "arguments": {"feedback": "example"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/who-gho/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'feedback': 'example'}, 'name': 'report_feedback'}},
)
print(resp.json())
Common Patterns
Use
search_health_indicators to find items, then get_health_indicator_data to get full details. This two-step pattern is common for exploring data before drilling down.Several tools support
limit, offset, or page parameters. Start with small limits during development, then increase for production queries.FAQ
What data does WHO GHO (Global Health Observatory) provide?
WHO Global Health Observatory — 2000+ health indicators covering diseases, mortality, risk factors, health systems, and UHC coverage across 194 member states. It exposes 5 tools: search_health_indicators, get_health_indicator_data, compare_countries_health, get_country_health_profile, report_feedback.
What do I need to get started?
A Gnist API key (free tier: 100 calls/day). Sign up at https://context.gnist.ai/signup.
What format does the WHO GHO (Global Health Observatory) API return?
JSON, via either MCP protocol (JSON-RPC 2.0) or REST API.