Skip to main content
Glama
IMF Data MCP Server

IMF Data MCP Server

by c-cf

IMF Data MCP

A Model Context Protocol server for IMF economic data, built on imfp and the IMF SDMX API at data.imf.org.

v0.2.0 — Breaking change: The old server called dataservices.imf.org, which the IMF decommissioned in 2025. All requests timed out as a result. This version migrates to imfp, which targets the current data.imf.org SDMX 3.0 API and is actively maintained.


Installation

Using uv (recommended)

uvx --from git+https://github.com/c-cf/imf-data-mcp imf-data-mcp

Using pip

pip install git+https://github.com/c-cf/imf-data-mcp.git

Related MCP server: self-mcp-server

Claude Desktop configuration

{
  "mcpServers": {
    "imf": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/c-cf/imf-data-mcp", "imf-data-mcp"]
    }
  }
}

Or, if installed via pip:

{
  "mcpServers": {
    "imf": {
      "command": "imf-data-mcp"
    }
  }
}

Available tools

Tool

Description

imf_list_databases

List all ~155 IMF databases with their IDs

imf_search_databases

Filter databases by keyword (e.g. "inflation", "trade")

imf_get_parameter_defs

List query dimensions for a database

imf_get_parameter_codes

List valid codes for a dimension, with optional search

imf_fetch_data

Fetch time series data with year range and dimension filters


Typical workflow

1. imf_search_databases(keyword="consumer price")
   → CPI, CPI_WCA, ...

2. imf_get_parameter_defs(database_id="CPI")
   → country, index_type, coicop_1999, frequency, ...

3. imf_get_parameter_codes(database_id="CPI", parameter="country", search="austria")
   → AUT

4. imf_fetch_data(
       database_id="CPI",
       start_year=2015, end_year=2023,
       filters={"country": ["AUT"], "frequency": ["M"]}
   )

Common database IDs

Topic

ID

Consumer Prices

CPI

Producer Prices

PPI

National Accounts (Annual)

ANEA

National Accounts (Quarterly)

QNEA

Balance of Payments

BOP_AGG

Exchange Rates

ER_2026_JAN_VINTAGE

Commodity Prices

PCPS

Fiscal Monitor

FM

Gov. Finance Statistics

GFS_COFOG

Monetary Statistics

MFS_CBS, MFS_MA, MFS_IR

Financial Soundness

FSIC

Trade in Services

ITS

SDG Data

SDG


Rate limits

The IMF API allows roughly 10 requests / 5 seconds. imfp handles rate limiting and retries automatically.


Debugging

npx @modelcontextprotocol/inspector imf-data-mcp

License

Apache 2.0

Available Tools

10 tools
fetch_bop_dataA
Retrieves compact format time series data from the BOP database based on the input parameters.

Args:
    freq (str): Frequency (e.g., "A" for annual, "Q" for quarterly, "M" for monthly).
    country (str): Country code, multiple country codes can be connected with "+".
    indicator (str): Indicator code.
    start (str | int): Start year.
    end (str | int): End year.

Returns:
    str: Description of the queried data. Do not perform further analysis or retry if the query fails.

Inputs: freq (required), country (required), indicator (required), start (required), +1 more.

fetch_cdis_dataB
Retrieves compact format time series data from the CDIS database based on the input parameters.

Args:
    freq (str): Frequency (e.g., "A" for annual).
    country (str): Country code, multiple country codes can be connected with "+".
    indicator (str): Indicator code.
    counterpart (str): Counterpart country code.
    start (str | int): Start year.
    end (str | int): End year.

Returns:
    str: Description of the queried data. Do not perform further analysis or retry if the query fails.

Inputs: freq (required), country (required), indicator (required), counterpart (required), +2 more.

fetch_cpis_dataA
Retrieves compact format time series data from the CPIS database based on the input parameters.

Args:
    freq (str): Frequency (e.g., "A" for annual).
    country (str): Country code, multiple country codes can be connected with "+".
    indicator (str): Indicator code.
    counter_country (str): Counterpart country code.
    start (str | int): Start year.
    end (str | int): End year.

Returns:
    str: Description of the queried data. Do not perform further analysis or retry if the query fails.

Inputs: freq (required), country (required), indicator (required), counter_country (required), +2 more.

fetch_dot_dataB
Retrieves compact format time series data from the DOT database based on the input parameters.

Args:
    freq (str): Frequency (e.g., "A" for annual).
    country (str): Country code, multiple country codes can be connected with "+".
    indicator (str): Indicator code.
    counterpart (str): Counterpart country code.
    start (str | int): Start year.
    end (str | int): End year.

Returns:
    str: Description of the queried data. Do not perform further analysis or retry if the query fails.

Inputs: freq (required), country (required), indicator (required), counterpart (required), +2 more.

fetch_fsi_dataB
Retrieves compact format time series data from the FSI database based on the input parameters.

Args:
    freq (str): Frequency (e.g., "A" for annual).
    country (str): Country code, multiple country codes can be connected with "+".
    indicator (str): Indicator code.
    start (str | int): Start year.
    end (str | int): End year.

Returns:
    str: Description of the queried data. Do not perform further analysis or retry if the query fails.

Inputs: freq (required), country (required), indicator (required), start (required), +1 more.

fetch_gfsmab_dataB
Retrieves compact format time series data from the GFSMAB database based on the input parameters.

Args:
    freq (str): Frequency (e.g., "A" for annual).
    country (str): Country code, multiple country codes can be connected with "+".
    unit (str): Unit code XDC or XDC_R_B1GQ (Percent of GDP).
    indicator (str): Indicator code.
    start (str | int): Start year.
    end (str | int): End year.

Returns:
    str: Description of the queried data. Do not perform further analysis or retry if the query fails.

Inputs: freq (required), country (required), unit (required), indicator (required), +2 more.

fetch_ifs_dataA
Retrieves compact format time series data from the IFS database based on the input parameters.

Args:
    freq (str): Frequency (e.g., "A" for annual).
    country (str): Country code, multiple country codes can be connected with "+".
    indicator (str): Indicator code.
    start (str | int): Start year.
    end (str | int): End year.

Returns:
    str: Description of the queried data. Do not perform further analysis or retry if the query fails.

Inputs: freq (required), country (required), indicator (required), start (required), +1 more.

fetch_mfs_dataB
Retrieves compact format time series data from the MFS database based on the input parameters.

Args:
    freq (str): Frequency (e.g., "A" for annual).
    country (str): Country code, multiple country codes can be connected with "+".
    indicator (str): Indicator code.
    start (str | int): Start year.
    end (str | int): End year.

Returns:
    str: Description of the queried data. Do not perform further analysis or retry if the query fails.

Inputs: freq (required), country (required), indicator (required), start (required), +1 more.

list_countriesB
Returns a list of available countries for the specified dataset, read from the corresponding .json file in the local areas directory.

Args:
    dataset_id (str): Dataset ID, such as "IFS", "DOT", "BOP", etc.

Returns:
    list: List of countries.

Inputs: dataset_id (required).

list_indicatorsB
Returns a list of indicators for the specified dataset, read from the corresponding .json file in the local indicators directory.

Args:
    dataset_id (str): Dataset ID, such as "IFS", "DOT", "BOP", etc.

Returns:
    list: List of indicators.

Inputs: dataset_id (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 10 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose based on the dataset it targets (e.g., BOP, CDIS, CPIS, etc.), with no overlap in functionality. The two list tools (list_countries and list_indicators) are also distinct from the fetch tools, providing metadata support without ambiguity.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern: fetch_*_data for data retrieval tools and list_* for metadata tools. This predictable naming scheme makes it easy to understand each tool's function at a glance.

    Tool Count5/5

    With 10 tools, the server is well-scoped for an IMF data service. It includes 8 fetch tools for different datasets and 2 list tools for metadata, providing a balanced and focused set that covers core data access needs without being overwhelming.

    Completeness4/5

    The tool set provides comprehensive data retrieval across multiple IMF datasets and includes metadata listing tools, covering the essential read operations. A minor gap exists in lacking update, delete, or analysis tools, but this is reasonable for a data access server focused on fetching and listing.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      A FastMCP-based server that provides tools for API discovery and execution, hierarchical category management, and SQL query execution through the Model Context Protocol.
      -
    • A
      license
      A
      quality
      C
      maintenance
      MCP server for accessing World Bank data, enabling indicator search, data retrieval, country comparisons, trend analysis, rankings, and chart generation.
      6
      2
      MIT