MCP server exposing public Ghana data (Ghana Stock Exchange prices and company directory, Bank of Ghana treasury data, IMF macroeconomic indicators, Ghana Statistical Service StatsBank) to AI tools.
Ghana Data MCP demonstrates solid tool design with consistent naming conventions (verb_noun pattern), comprehensive parameter descriptions, and well-documented schemas. All 14 tools have clear descriptions (avg ~250 chars, well within 10-1024 range). Input schemas use Zod with type definitions and descriptions. However, output schemas are partially documented, some tools return structured content but lack explicit outputSchema declarations in registration. Error handling is present but generic (describeError utility). Tool composition is excellent: tools chain naturally (search → get history), and responses include necessary IDs for downstream calls. Security is strong: no credentials in parameters, read-only operations throughout. Main gaps: output schemas not formally declared in all tool registrations, and some parameter descriptions could be more prescriptive about constraints (e.g., exact date formats for gss_get_data periods).
Bank of Ghana Treasury and central-bank bill rates from the weekly tender, oldest first. Two series: `treasury` for Treasury bills and `central-bank` for central-bank bills. Rates are annual percentage yields.
Bank of Ghana interbank reference rates for the Ghana cedi against 19 currencies, with bid, offer and mid for each. These are the official interbank reference rates, not retail or forex-bureau rates, which are usually worse and differ by provider. Rates are cedis per unit of the foreign currency. Without `days` this returns the latest published day. With `days` it returns the historical series, which BoG publishes back to January 1996 — pass a `currency` too for long windows, since the full table is very large. Rates before 1 July 2007 are in OLD cedis and are about 10,000 times larger, because Ghana redenominated and BoG does not adjust the series; never compare or chart across that date without saying so.
Bank of Ghana interbank money-market interest rates, oldest first. Four separate series, chosen with `series`: `daily` is the daily interbank weighted average; `weekly` is its weekly average, dated by week ending; `reverse-repo` and `depo` are the Bank of Ghana's standing facility rates, which sit either side of the Monetary Policy Committee's policy rate. This is NOT the MPC policy rate itself, which BoG publishes separately and this server does not cover.
List of issuers admitted to the Ghana Fixed Income Market (GFIM), with their latest coupon and maturity dates.
Output schemas not formally declared in tool registrations. Tools return structured content via structuredContent field, but outputSchema is not visible in registerTool calls. This prevents clients from validating responses and LLMs from planning downstream operations with certainty.
Period format constraints for gss_get_data (startPeriod/endPeriod) are documented in description ('2023M01', '2023Q1', '2019') but lack formal regex or enum constraints. LLMs may pass invalid formats like '2023-01-01' or '01/2023'.
Error responses use generic describeError utility without categorization (retryable vs user-fixable vs fatal). Errors like 'Invalid period' or 'Company not found' lack recovery guidance (e.g., 'Try gss_describe_table to see valid periods').
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Daily history of the Ghana Stock Exchange's main market index (GSE Composite Index), oldest first. Prices are in Ghana cedis (GHS).
Daily price history for one company listed on the Ghana Stock Exchange, oldest first. Takes a GSE share code (e.g. MTNGH, GCB, TOTAL) — use gse_search_company first if you only have a company name. Prices are in Ghana cedis (GHS). Note that `high`/`low` are the rolling 52-week high and low, not the day's intraday range, which GSE does not publish.
Ranks every security on the Ghana Stock Exchange by performance over a window, or compares a named basket. Use this for "best performing stocks", "biggest fallers", "most actively traded", or any comparison of two or more companies — it covers the whole exchange in ONE request, so never loop gse_get_stock_history over symbols to build a comparison yourself. Sort by percentReturn (default), priceChange, volume or valueTraded; every one of those is reported for every result regardless of which you sort by. Prices are Ghana cedis (GHS). IMPORTANT: GSE publishes a row for every listed security every trading day whether or not it traded, carrying the last close forward when it did not — so securities that never traded in the window are excluded by default, and any result where tradingDays is below quotedDays has a return resting partly on a stale price. Check startIsCarriedForward before describing a move as having happened during the window.
Search the Ghana Stock Exchange company directory by name or share code. Returns the share code needed for gse_get_stock_history, plus the company's sector and market.
Returns one table's filterable dimensions with every value each accepts, plus which periods are currently published. Call this when gss_get_data reports a value it could not resolve, or when you need to know exactly what a table can be sliced by. Dimension values must be passed to gss_get_data as spelled here.
Official Ghana macroeconomic data from StatsBank, oldest period first. Pick a `table`, then narrow it: `latest` for the most recent N periods, `startPeriod`/`endPeriod` for a range, or `periods` for named ones. `filters` slices the non-time dimensions — CPI by region and product, trade by product class and tradeflow, credit by borrowing sector, and so on; call gss_describe_table for the exact values a table accepts. Rows carry `provisional: true` where GSS has not finalized the period, which happens on the most recent GDP years; always report those as provisional rather than settled.
Lists the official StatsBank macroeconomic tables published by the Ghana Statistical Service, optionally filtered by keyword or sector. Use this to find the right `table` id for gss_describe_table or gss_get_data. Covers inflation (national and all 16 regions), GDP, public debt, fiscal accounts, money and credit, interest rates, banking soundness, merchandise trade, balance of payments, industrial production and fuel consumption.
Time series for one or more IMF indicators, for Ghana and — optionally — other countries, regions or analytical groups, oldest first. Use imf_list_indicators first if you don't already know the indicator code — codes like NGDP_RPCH are not guessable from the name. Most indicators include IMF's OWN forward projections alongside historical actuals; each row's `isProjection` says which — always tell the user when a figure quoted is a projection rather than an outturn. Coverage varies a lot: some indicators run 1980-2031, some cover only a handful of recent years, and not every indicator has data for every country. Region/group aggregates (e.g. Sub-Saharan Africa, ECOWAS) exist for some indicators and not others — this is not something to guess at, check `rowCount`.
Search the IMF DataMapper indicator catalog by keyword — matches against the label, description and dataset (e.g. "gdp", "inflation", "debt", "current account"). Returns each match's `id`, which is what to pass to imf_get_indicator_history. Omit `query` to browse the catalog. Covers ~130 macroeconomic and financial indicators spanning the World Economic Outlook and several other IMF datasets.
Returns ok plus the server version. Useful for confirming connectivity.
ping tool is present but deprecated in MCP spec (removed as of 2026-07-28). While functional, it should be removed or replaced with a health check resource.
gse_rank_stocks and gss_get_data accept array parameters (symbols, indicators, countries, periods) but lack explicit limits. Unbounded arrays could cause performance issues or context window exhaustion. Rubric baseline: max 10 items per array parameter.