IMF Data MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IMF Data MCP Server show me the GDP growth for Germany from 2010 to 2020"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 toimfp, which targets the currentdata.imf.orgSDMX 3.0 API and is actively maintained.
Installation
Using uv (recommended)
uvx --from git+https://github.com/c-cf/imf-data-mcp imf-data-mcpUsing pip
pip install git+https://github.com/c-cf/imf-data-mcp.gitRelated 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 |
| List all ~155 IMF databases with their IDs |
| Filter databases by keyword (e.g. |
| List query dimensions for a database |
| List valid codes for a dimension, with optional search |
| 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 |
|
Producer Prices |
|
National Accounts (Annual) |
|
National Accounts (Quarterly) |
|
Balance of Payments |
|
Exchange Rates |
|
Commodity Prices |
|
Fiscal Monitor |
|
Gov. Finance Statistics |
|
Monetary Statistics |
|
Financial Soundness |
|
Trade in Services |
|
SDG Data |
|
Rate limits
The IMF API allows roughly 10 requests / 5 seconds. imfp handles
rate limiting and retries automatically.
Debugging
npx @modelcontextprotocol/inspector imf-data-mcpLicense
Apache 2.0
Available Tools
10 toolsfetch_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
Scored across 10 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for Financial Modeling Prep API with 250+ financial data tools
One API and MCP server for financial and economic data: markets, economics, companies and more.
MCP server for the Seline Analytics API
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA FastMCP-based server that provides data analysis tools for processing, analyzing, and visualizing data with an intuitive Streamlit web interface.2MIT
- FlicenseNot gradedqualityDmaintenanceFastMCP server for querying FRED financial and macroeconomic data, providing tools to search and retrieve economic indicators.-
- FlicenseNot gradedqualityDmaintenanceA FastMCP-based server that provides tools for API discovery and execution, hierarchical category management, and SQL query execution through the Model Context Protocol.-
- AlicenseAqualityCmaintenanceMCP server for accessing World Bank data, enabling indicator search, data retrieval, country comparisons, trend analysis, rankings, and chart generation.62MIT