Nigerian data for AI agents — MCP servers for trade statistics, FX rates, bank-account resolve, electricity meter validation, administrative boundaries, states & LGAs, health facilities, World Bank / IMF / UN-SDG indicators, crypto tickers, and sanctions screening.
Nigeria MCP demonstrates solid tool design with consistent naming (verb_noun pattern), comprehensive parameter schemas with type constraints, and clear descriptions. All 11 tools follow action-verb naming (list_, get_, validate_, resolve_, find_). Descriptions average ~150 chars and explain purpose, prerequisites, and data sources. Parameters include proper type definitions, enums, and range constraints (e.g., lat/lng bounds, radius_km limits). However, output schemas are not explicitly documented in the source, only inferred from descriptions. Error handling guidance is minimal; tools lack recovery hints for common failures (e.g., 'if meter validation fails, check disco code with list_discos'). No tool annotations (readOnlyHint, idempotentHint) are visible in the code, despite all tools being read-only. Composition is strong: tools chain well (list_states → get_lgas, list_banks → resolve_bank_account, list_discos → validate_meter). Parameter naming is consistent and human-friendly (state, meter_number, lat/lng).
Find health facilities (hospitals, clinics, PHCs) near a WGS84 point, sorted by distance. Example: { lat: 6.44, lng: 3.41, radius_km: 10, limit: 10 }. Data: GRID3 health facilities, CC BY 4.0.
Look up a Nigerian administrative boundary (state, LGA or ward) by name. Returns the centroid, bounding box and attribution — not the full polygon. Example: { level: 'state', name: 'Lagos' }. Data: GRID3, CC BY 4.0.
Fetch one health facility by its id (as returned by find_facilities_near). Example: { id: 'HF001' }.
Get Naira (NGN) exchange rates vs major currencies — official (CBN) and parallel ('aboki') market where available. Each rate means 1 {quote} = {rate} {base} (e.g. 1 USD = 1550 NGN). Defaults to all NGN pairs; pass quote to filter. Parallel-market values are estimates, not official. Example: { quote: 'USD' }.
List the Local Government Areas of a Nigerian state. State matching is case-insensitive; use 'FCT' (or 'Abuja') for the Federal Capital Territory. Served from bundled reference data (fully offline). See list_states for valid state names.
Output schemas not documented in source code. Tool descriptions infer return structure but no explicit schema definitions visible for response fields, types, or pagination.
No tool annotations (readOnlyHint, idempotentHint, destructiveHint) visible in code. All 11 tools are read-only and idempotent but lack explicit MCP annotations to signal this to clients.
Error handling lacks recovery guidance. No tool description explains what to do if a lookup fails (e.g., 'if state not found, call list_states to see valid names').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2025-06-18+ | v2 |
List supported Nigerian banks with their codes. Use the returned code as bank_code for resolve_bank_account.
List supported Nigerian electricity distribution companies (DisCos) with their codes. Use a returned code as the disco for validate_meter.
List Nigeria's 36 states plus the FCT with the number of Local Government Areas in each. Served from bundled reference data (fully offline). Use get_lgas for a state's LGA names.
Resolve a WGS84 point to the Nigerian state, LGA and (where mapped) ward containing it — the reverse-geocode primitive other lookups compose on. Example: { lat: 6.43, lng: 3.42 }. Data: GRID3, CC BY 4.0.
Resolve a Nigerian bank account (10-digit NUBAN + bank code) to its registered account name. Use list_banks to look up a bank's code. Example: { account_number: '0123456789', bank_code: '058' }.
Validate an electricity meter (read-only) and return the registered customer name/address and DisCo. Provide the meter number, DisCo code (see list_discos) and meter type. Does NOT buy power or pay bills. Example: { meter_number: '45010101010', disco: 'EKEDC', meter_type: 'prepaid' }.
Parameter descriptions lack format/constraint details. E.g., 'bank_code' description says 'e.g. 058' but does not state if it must be 3 digits or if leading zeros are required.
No pagination or result-limit documentation for list tools. list_states, list_banks, list_discos descriptions do not state max result count or whether pagination is supported.