MCP server for WHO Global Health Observatory + Disease Outbreak News (unaffiliated).
Server has 11 tools with consistent naming (verb_noun pattern: search_, list_, get_, resolve_, compare_) and all have descriptions. However, descriptions are often terse (10-50 chars) and lack actionable context for LLM selection. Input schemas are present but sparse, most parameters lack type constraints (enums, ranges). Output schemas are not documented. Error handling returns JSON with error fields but lacks recovery guidance. No tool annotations (readOnlyHint, destructiveHint). Composition is reasonable (single responsibility per tool), but parameter descriptions are minimal and do not explain dependencies or constraints.
Compare one GHO indicator across two countries; check overlap_years and comparison_notes—latest years may differ.
Fetch a full DON record by its Id (UUID).
Fetch the latest INFORM Risk Index for a country (requires WHO_SENTINEL_HDX_APP_ID environment variable).
List recent Disease Outbreak News items (newest first). Optionally filter by disease keyword.
Get current server metrics: HTTP request count, tool call counts, and rate limit status.
List countries from the full WHO GHO RegionCountry table (cached). Optional substring/code filter.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract required fields. E.g., search_gho_indicators returns {indicators, truncated_to} but structure of indicator objects is not specified.
Parameter descriptions are minimal (10-30 chars) and lack actionable constraints. E.g., 'query' param in search_gho_indicators has no guidance on format, length, or expected keywords. 'limit' params lack min/max bounds.
No enum constraints on string parameters. 'language' in list_gho_indicator_dimensions defaults to 'EN' but valid values are not enumerated. LLMs may pass invalid language codes.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Browse entity sets exposed by GET /api (Indicator, RegionCountry, and thousands of per-indicator collections).
List OData dimensions for an indicator (e.g. COUNTRY, YEAR) from GHO IndicatorDimension.
Resolve a country name or ISO3 using the full GHO RegionCountry registry (includes WHO region fields).
Search WHO GHO indicators by keyword (IndicatorName contains query). Returns IndicatorCode rows.
Research-oriented DON + GHO synthesis (not outbreak response or clinical use). Refuses by default if IndicatorName has no keyword overlap with the disease query; pass confirm_indicator=True to override.
Error responses lack recovery guidance. _err_out() returns {error, error_type, traceback} but does not suggest next steps. E.g., 'Country not found. Try list_gho_countries() to see available options.'
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not declared in the schema, forcing LLMs to infer safety from descriptions.