MCP server for Africa API — access data on all 54 African countries through Claude
Africa API MCP demonstrates solid fundamentals: all 8 tools have clear verb-noun naming (list_, get_, query_), comprehensive descriptions (100-200 chars typical), and explicit Zod schemas with type constraints. Tool annotations (READ_ONLY) are properly declared. However, several parameter descriptions lack actionable detail (e.g., 'Sort field' without specifying valid values), and output schemas are not formally documented, responses are returned as JSON strings without declared field structures. Error handling is present but generic (HTTP status codes without recovery guidance). The server correctly uses structured content attachment for JSON responses, but lacks pagination metadata (total count, next_cursor) in list operations.
Get detailed information about a specific African country including coordinates, borders, currencies, and languages
Get a curated profile for a country — key macro, demographic, and economic indicators
Get real-time signals for a country — macro snapshot, market data, FX rates, power status, humanitarian alerts
Get detailed metadata about a specific indicator including description, unit, source, and available years
Rank African countries by a specific indicator for a given year — great for comparisons
List all 54 African countries with key facts (capital, region, area, currencies, languages)
Output schemas not formally documented. Tools return JSON strings with structuredContent attachment, but no declared field structure (e.g., what fields does list_countries return? What is the structure of country objects?). LLMs cannot plan downstream operations without knowing response shape.
Parameter descriptions lack actionable constraints. 'Sort field' (list_countries) does not specify valid values (name, region, area?). 'Filter by category' (list_indicators) does not enumerate categories. LLMs cannot self-correct invalid inputs without explicit enums or patterns.
Pagination metadata missing. list_countries and list_indicators accept page/per_page but do not document total count or next_cursor in response. Large result sets risk context window exhaustion without clear pagination guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2025-06-18+ | v2 |
List all available data indicators (127+) across categories like GDP, population, health, education, agriculture, energy, climate
Query time-series observations for any combination of countries and indicators
Error messages are generic HTTP status codes without recovery guidance. 'HTTP 401' does not tell the LLM to check AFRICA_API_KEY or how to obtain one. Error handling should categorize failures (retryable, user-fixable, fatal) and suggest next steps.
query_data parameter design is complex and error-prone. Accepts both country_code (single) and country_codes (comma-separated), metric_key and metric_keys, year and start_year/end_year. Undocumented mutual exclusivity and overlapping semantics invite misuse. Consider separate tools or clearer parameter relationships.