ecb-mcp
ecb-mcp
European Central Bank data for AI agents. Exchange rates, interest rates, yield curves, inflation, money supply, and 100+ more datasets from the ECB — directly inside Claude, Cursor, Windsurf, or any MCP client.
No API key. No registration. No config. Just npx ecb-mcp.
Why
The ECB publishes 100+ statistical datasets via a free, public API — exchange rates for 40+ currencies, key interest rates, yield curves, HICP inflation, monetary aggregates, banking statistics, and much more.
But the API uses SDMX, a format nobody memorizes. You need to know dataflow IDs, dimension key structures, and query syntax just to get a single number.
ecb-mcp translates natural questions into the right SDMX queries. Your AI agent asks "What's the current EUR/USD rate?" and gets a clean answer from live ECB data. No SDMX knowledge required.
Related MCP server: NexusForge EU Finance
Quick Start
Add to your MCP client config:
{
"mcpServers": {
"ecb": {
"command": "npx",
"args": ["-y", "ecb-mcp"]
}
}
}That's it. No API key, no environment variables, no account creation.
Where to add this config
Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or%APPDATA%\Claude\claude_desktop_config.json(Windows)Claude Code:
claude mcp add ecb-mcp -- npx -y ecb-mcpCursor: Settings > MCP Servers
Windsurf:
~/.windsurf/config.json
What you can ask
Once installed, just ask your AI agent questions in natural language:
"What's the current EUR/USD exchange rate?"
"Show me ECB interest rate changes since 2022"
"What's the eurozone inflation rate?"
"Convert 5000 USD to GBP using ECB rates"
"What's the 10-year euro area government bond yield?"
"How has M3 money supply grown over the past year?"
"What ECB datasets are available about bank lending?"
"Explain the structure of the EXR dataset"
Tools
get_exchange_rates
EUR reference rates for 40+ currencies. Daily, monthly, or annual. The same rates used by European institutions and businesses.
"What's the EUR/USD rate?"
"Show me EUR/GBP rates for the last 30 days"
"EUR/JPY monthly averages for 2024"get_interest_rates
The ECB's key policy rates — the ones that move markets and drive eurozone monetary policy.
"What is the current ECB deposit facility rate?"
"Show me the history of ECB rate changes"
"When did the ECB last change the main refinancing rate?"get_yield_curve
Euro area government bond yield curve. AAA-rated sovereign spot rates from 3 months to 30 years.
"What's the 10-year euro area yield?"
"Show me the 2-year yield over the past 6 months"
"Compare 5Y and 10Y yields since January"get_inflation
HICP inflation — the official eurozone inflation measure. Available for the euro area as a whole or individual countries.
"What's the current eurozone inflation rate?"
"Germany's inflation over the past year"
"Compare inflation in France vs Spain"get_money_supply
Euro area monetary aggregates (M1, M2, M3). Outstanding amounts or annual growth rates.
"What's the current M3 money supply?"
"M1 growth rate over the past year"
"How has M3 evolved since 2020?"convert_currency
Convert any amount between currencies using official ECB reference rates. Supports EUR-direct, inverse, and cross-currency conversions (e.g., USD to GBP via EUR triangulation).
"Convert 1000 EUR to USD"
"How much is 500 GBP in JPY?"
"What was 10000 USD worth in CHF on 2025-01-15?"search_datasets
Search across all 100+ ECB statistical datasets by keyword. The ECB publishes far more than exchange rates — banking statistics, balance of payments, government debt, payment systems, insurance data, and much more.
"What ECB datasets are about bank lending?"
"Find datasets related to government debt"
"What data does the ECB publish about payments?"explain_dataset
Understand any ECB dataset's structure — its dimensions, valid values, and how to query it. This is the key to unlocking the full 100+ datasets beyond the built-in tools.
"Explain the EXR dataset structure"
"What dimensions does the BSI dataset have?"
"What are the valid currency codes?"Data Source
All data comes directly from the ECB Data Portal API (SDMX 2.1 REST).
No intermediary, no proxy — live data from the European Central Bank
No authentication or API key required
Exchange rates updated daily at 16:00 CET
Other datasets updated at various frequencies (monthly, quarterly)
Configuration
ecb-mcp works with zero configuration. Optional settings:
Environment Variable | Default | Description |
|
| API base URL. Only change this if you're proxying the ECB API. |
| — | Set to any value to enable debug logging to stderr. |
Development
git clone https://github.com/scka-de/ecb-mcp.git
cd ecb-mcp
npm install
npm test # unit tests (fixtures, no API calls)
INTEGRATION=true npm test # integration tests (live ECB API)
npm run build # compile to dist/
npm run dev # run in dev mode
npm run lint # check code styleHow It Works
ecb-mcp translates your AI agent's natural language questions into SDMX series key queries against the ECB API. For example, when Claude asks for the EUR/USD rate, ecb-mcp:
Builds the SDMX key:
D.USD.EUR.SP00.AFetches CSV from
https://data-api.ecb.europa.eu/service/data/EXR/D.USD.EUR.SP00.A?format=csvdataParses the response and returns clean, human-readable data
For dataset discovery, ecb-mcp fetches and parses XML metadata from the ECB's structure definition endpoints, letting your agent explore all 100+ datasets without knowing SDMX.
License
MIT
Available Tools
8 toolsconvert_currencyA
Convert an amount between currencies using ECB reference rates.
Supports EUR to any currency, any currency to EUR, and cross-currency conversion (e.g. USD to GBP) via EUR triangulation. Uses the latest ECB reference rate, or a rate from a specific date.
Examples of questions this tool answers:
"Convert 1000 EUR to USD"
"How much is 500 GBP in EUR?"
"Convert 250 USD to JPY"
"What was 1000 EUR worth in CHF on 2025-01-15?"
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount to convert | |
| from | Yes | Source currency code (e.g. "EUR", "USD", "GBP") | |
| to | Yes | Target currency code (e.g. "EUR", "USD", "GBP") | |
| date | No | Specific date for the rate (YYYY-MM-DD). Uses latest if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively explains key behaviors: the tool uses ECB reference rates, supports EUR-based conversions and triangulation, works with latest or historical rates, and handles specific date queries. However, it doesn't mention error conditions, rate limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and concise. It starts with a clear purpose statement, provides operational details in a compact format, and includes helpful examples that demonstrate real-world usage without unnecessary elaboration. Every sentence serves a clear purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a conversion tool with no annotations and no output schema, the description provides strong context about the ECB source, triangulation method, and date handling. The examples effectively illustrate usage patterns. However, without an output schema, some information about return format would be helpful, though the examples partially compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters thoroughly. The description adds some context about currency code examples and the date parameter's default behavior, but doesn't provide significant additional semantic value beyond what's in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('convert an amount between currencies') and resources ('using ECB reference rates'). It distinguishes itself from sibling tools like 'get_exchange_rates' by focusing on conversion rather than rate retrieval, and explicitly mentions the triangulation method for cross-currency conversions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool through the examples section, which shows it answers conversion questions. It also implicitly distinguishes from siblings by not being for retrieving datasets, exchange rates, or other financial data, making it clear this is for conversion operations specifically.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_datasetA
Explain the structure of any ECB dataset — dimensions, valid values, and example queries.
Use this after search_datasets to understand what a dataset contains and how to query it. Returns the dataset's dimensions, their valid values (codes), and an example series key. Works for all 100+ ECB datasets, not just the ones with dedicated tools.
Examples of questions this tool answers:
"What dimensions does the EXR dataset have?"
"What are the valid currency codes in the exchange rate dataset?"
"How do I query the BSI (balance sheet) dataset?"
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_id | Yes | Dataset ID (e.g. "EXR", "FM", "ICP", "YC", "BSI"). Use search_datasets to find IDs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes what the tool returns ('dimensions, valid values, example series key') and its scope ('all 100+ ECB datasets'), but lacks details on error handling, rate limits, or authentication requirements. The behavioral disclosure is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose in the first sentence. The bulleted examples are helpful but slightly verbose. Overall, it's efficient with little waste, though it could be slightly more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (1 parameter, no output schema, no annotations), the description is mostly complete. It covers purpose, usage, and output content well, but lacks details on behavioral aspects like errors or limits. The absence of an output schema is partially compensated by describing return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'dataset_id' well-documented in the schema. The description adds minimal value beyond the schema by mentioning example IDs (e.g., 'EXR', 'FM') and referencing search_datasets for discovery, but doesn't provide additional syntax or format details. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('explain the structure', 'understand what a dataset contains') and resources ('ECB dataset', 'dimensions, valid values, example queries'). It distinguishes from sibling tools by focusing on dataset metadata rather than data retrieval or conversion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Use this after search_datasets to understand what a dataset contains') and provides clear alternatives by mentioning sibling tools in examples (e.g., 'EXR dataset' relates to get_exchange_rates). It also clarifies scope ('Works for all 100+ ECB datasets, not just the ones with dedicated tools').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_exchange_ratesA
Get EUR exchange rates from the European Central Bank.
Returns daily, monthly, or annual reference rates for a currency pair against EUR. The ECB publishes reference rates for ~40 currencies at 16:00 CET each business day.
Examples of questions this tool answers:
"What is the current EUR/USD exchange rate?"
"Show me EUR/GBP rates for the last week"
"What was the EUR/JPY rate in January 2025?"
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Target currency code (e.g. "USD", "GBP", "JPY", "CHF"). Use "+" for multiple: "USD+GBP" | |
| frequency | No | D=daily (default), M=monthly average, A=annual average | |
| startPeriod | No | Start date (YYYY-MM-DD, YYYY-MM, or YYYY) | |
| endPeriod | No | End date (YYYY-MM-DD, YYYY-MM, or YYYY) | |
| lastNObservations | No | Return only the last N data points |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and adds valuable behavioral context beyond what the schema provides. It discloses that rates are published at '16:00 CET each business day' (timing constraint) and mentions the scope ('~40 currencies'), which helps set expectations about availability and freshness. No contradictions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It starts with the core purpose, adds important behavioral context, then provides concrete example questions that illustrate usage without wasting words. Every sentence earns its place by adding value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only data retrieval tool with no output schema, the description provides good context about data source, timing, and scope. The example questions effectively demonstrate the tool's capabilities. However, without annotations or output schema, it could benefit from mentioning the return format or data structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description doesn't add any parameter-specific semantics beyond what's in the schema descriptions (e.g., it doesn't explain date format nuances or the '+' syntax further). Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('Get') and resource ('EUR exchange rates from the European Central Bank'), distinguishing it from siblings like convert_currency (which likely performs conversion) and other economic data tools. It specifies the data source (ECB) and type of rates (reference rates for ~40 currencies).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool through example questions that demonstrate appropriate use cases (e.g., 'What is the current EUR/USD exchange rate?'). However, it doesn't explicitly state when NOT to use it or mention alternatives like convert_currency for actual currency conversion versus just getting rates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inflationA
Get HICP inflation data from the ECB — the official eurozone inflation measure.
Returns the Harmonised Index of Consumer Prices (HICP) as published by Eurostat via the ECB. Available as annual rate of change (%) or index level, for the euro area or individual countries.
Examples of questions this tool answers:
"What is the current eurozone inflation rate?"
"Show me Germany's inflation over the past year"
"Compare inflation in France vs Italy"
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Country code: "U2" for euro area (default), "DE", "FR", "IT", "ES", etc. | |
| measure | No | annual_rate = year-over-year % change (default), index = price index level | |
| startPeriod | No | Start date (YYYY-MM, or YYYY) | |
| endPeriod | No | End date (YYYY-MM, or YYYY) | |
| lastNObservations | No | Return only the last N data points |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It adequately describes what data is returned (HICP inflation data) and the source (ECB/Eurostat), but lacks information about rate limits, authentication requirements, data freshness, error conditions, or response format. The description doesn't contradict any annotations (none exist).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It begins with the core purpose, adds details about data formats and scope, then provides concrete usage examples. Every sentence serves a purpose, though the example section could be slightly more concise. The information is front-loaded with the most important details first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a data retrieval tool with 5 parameters and no output schema, the description provides adequate context about what data is available and example use cases. However, without annotations covering behavioral aspects and no output schema describing the return format, there are significant gaps in understanding how to interpret results or handle potential issues.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing comprehensive parameter documentation. The description adds minimal value beyond the schema, mentioning 'annual rate of change (%) or index level' and 'euro area or individual countries' which are already covered in the schema's enum and descriptions. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('Get') and resource ('HICP inflation data from the ECB'), distinguishing it from siblings like get_exchange_rates or get_interest_rates. It identifies this as 'the official eurozone inflation measure' and specifies what data is returned (Harmonised Index of Consumer Prices).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance through three concrete example questions that demonstrate when to use this tool: for current eurozone inflation rates, country-specific inflation over time, and cross-country comparisons. This clearly differentiates it from sibling tools that handle currency conversion, interest rates, or dataset searches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_interest_ratesA
Get key ECB interest rates — the rates that drive eurozone monetary policy.
Returns the ECB's main policy rates: Main Refinancing Operations (MRO), Deposit Facility, and Marginal Lending Facility. These are the rates the ECB sets at its Governing Council meetings.
Examples of questions this tool answers:
"What is the current ECB deposit facility rate?"
"Show me the history of ECB interest rate changes"
"When did the ECB last change its main refinancing rate?"
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Rate type: "MRO" (main refinancing), "deposit_facility", or "marginal_lending" | |
| startPeriod | No | Start date (YYYY-MM-DD, YYYY-MM, or YYYY) | |
| endPeriod | No | End date (YYYY-MM-DD, YYYY-MM, or YYYY) | |
| lastNObservations | No | Return only the last N data points |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It explains what data is returned (ECB policy rates) and mentions historical data capabilities, but doesn't disclose behavioral traits like rate limits, authentication requirements, data freshness, or error conditions. The description adds value but doesn't fully compensate for the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with purpose first, then details, then concrete examples. Each sentence adds value, though the examples section could be slightly more concise. The front-loading of the core purpose is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a data retrieval tool with no annotations and no output schema, the description provides adequate context about what data is returned and sample use cases. However, it doesn't describe the return format, data structure, or potential limitations. Given the 4 parameters and lack of output schema, more completeness would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 4 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema descriptions. It implies date range and filtering capabilities through the examples, but doesn't provide additional semantic context about parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get key ECB interest rates' with specific resources identified (MRO, Deposit Facility, Marginal Lending Facility). It distinguishes from siblings by focusing specifically on ECB policy rates rather than exchange rates, inflation, or other economic data tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about what questions this tool answers (ECB rate queries), but doesn't explicitly state when to use this versus alternatives like 'get_yield_curve' or 'get_exchange_rates'. The examples help clarify the scope but don't provide explicit exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_money_supplyA
Get euro area monetary aggregates (M1, M2, M3) from the ECB.
Returns monetary aggregate data as outstanding amounts (EUR millions) or annual growth rates. M1 = currency in circulation + overnight deposits. M2 = M1 + short-term deposits. M3 = M2 + repos + money market funds + debt securities up to 2 years.
Examples of questions this tool answers:
"What is the current M3 money supply in the euro area?"
"Show me M1 growth rate over the past year"
"How has M3 evolved since 2020?"
| Name | Required | Description | Default |
|---|---|---|---|
| aggregate | No | Monetary aggregate: "M1", "M2", or "M3" (default) | |
| measure | No | outstanding = EUR millions (default), growth_rate = annual % change | |
| country | No | Country code: "U2" for euro area (default), or specific country like "DE", "FR" | |
| startPeriod | No | Start date (YYYY-MM, or YYYY) | |
| endPeriod | No | End date (YYYY-MM, or YYYY) | |
| lastNObservations | No | Return only the last N data points |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses what data is returned ('outstanding amounts or annual growth rates') and provides definitions of M1/M2/M3 aggregates. However, it doesn't mention behavioral aspects like rate limits, authentication requirements, data freshness, or error conditions that would be important for an agent to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It starts with the core purpose, explains return options, defines key terms (M1/M2/M3), and provides concrete examples - every sentence adds value. The information is front-loaded with the most important details first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no annotations and no output schema, the description provides adequate context about what the tool does and examples of use cases. However, it lacks information about return format structure, error handling, and other behavioral aspects that would help an agent use it effectively, especially given the absence of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds some value by explaining what M1/M2/M3 represent and providing example use cases, but doesn't add parameter-specific semantics beyond what's already in the comprehensive schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get euro area monetary aggregates (M1, M2, M3) from the ECB.' It specifies the verb ('Get'), resource ('monetary aggregates'), source ('ECB'), and distinguishes it from siblings by focusing on money supply data rather than exchange rates, inflation, or other economic indicators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context through examples of questions the tool answers, indicating it should be used for queries about M1/M2/M3 money supply levels or growth rates. However, it doesn't explicitly state when NOT to use this tool or mention alternatives among the sibling tools for related economic data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_yield_curveA
Get euro area government bond yield curve data from the ECB.
Returns spot rates from the ECB's AAA-rated government bond yield curve. Available maturities range from 3 months to 30 years. Updated daily.
Examples of questions this tool answers:
"What is the current 10-year euro area yield?"
"Show me the 2-year yield over the past 6 months"
"What was the 5-year spot rate in March 2024?"
| Name | Required | Description | Default |
|---|---|---|---|
| maturity | No | Bond maturity: "3M", "6M", "1Y", "2Y", "5Y", "10Y" (default), "15Y", "20Y", "30Y" | |
| issuerType | No | Issuer rating: "AAA" (default) or "all_gov" for all government bonds | |
| startPeriod | No | Start date (YYYY-MM-DD, YYYY-MM, or YYYY) | |
| endPeriod | No | End date (YYYY-MM-DD, YYYY-MM, or YYYY) | |
| lastNObservations | No | Return only the last N data points |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that data is 'updated daily' and specifies available maturities and issuer types, adding useful context. However, it does not mention potential rate limits, error conditions, or authentication needs, leaving gaps in behavioral understanding for a data retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with core functionality, followed by details and examples. Each sentence adds value without redundancy, such as stating data source, maturity range, update frequency, and illustrative use cases, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description does a good job covering the tool's purpose, parameters, and usage context. It could improve by detailing return format or error handling, but it adequately informs an agent for a data query tool with clear parameters and examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by specifying 'Available maturities range from 3 months to 30 years' and clarifying the data source and rating context, which enhances understanding beyond the schema's parameter descriptions, justifying a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'euro area government bond yield curve data from the ECB' and specifies it returns 'spot rates from the ECB's AAA-rated government bond yield curve.' This distinguishes it from sibling tools like get_exchange_rates or get_inflation by focusing on bond yields, with specific examples reinforcing the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through example questions like 'What is the current 10-year euro area yield?' but does not explicitly state when to use this tool versus alternatives such as get_interest_rates or search_datasets. It provides context for bond yield queries but lacks direct guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_datasetsA
Search the ECB's 100+ statistical datasets by keyword.
Returns matching dataset IDs and names. Use this to discover what data the ECB publishes. After finding a dataset, use explain_dataset to learn its structure, or use the specific data tools (get_exchange_rates, get_interest_rates, etc.) for common queries.
Examples of questions this tool answers:
"What ECB datasets are available about inflation?"
"Does the ECB publish data about bank lending?"
"What datasets cover government debt?"
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword (e.g. "inflation", "exchange", "lending", "payment", "insurance") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly describes the search functionality and return format (matching dataset IDs and names), but doesn't mention limitations like result count, pagination, search scope, or error conditions. The behavioral information provided is adequate but lacks depth about operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with clear paragraph separation: purpose statement, usage guidance, and concrete examples. Every sentence adds value - no redundant information. It's front-loaded with the core functionality and appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (search operation with 1 parameter), no annotations, and no output schema, the description provides good contextual coverage. It explains the tool's role in the workflow, distinguishes it from siblings, and gives usage examples. However, it doesn't describe the output format in detail (just 'matching dataset IDs and names'), which would be helpful since there's no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already fully documents the single 'query' parameter. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score of 3 for adequate but not enhanced parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('Search') and resource ('ECB's 100+ statistical datasets'), and distinguishes it from siblings by explaining it returns dataset IDs and names for discovery. It explicitly differentiates from data retrieval tools like get_exchange_rates and metadata tools like explain_dataset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('to discover what data the ECB publishes') versus alternatives ('use explain_dataset to learn its structure, or use the specific data tools... for common queries'). It includes three concrete example questions that demonstrate appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v0.1.1- First observed
convert_currency - First observed
explain_dataset - First observed
get_exchange_rates - First observed
get_inflation - First observed
get_interest_rates - First observed
get_money_supply - First observed
get_yield_curve - First observed
search_datasets
TDQS
Each tool has a clearly distinct purpose targeting different ECB data domains (currency conversion, exchange rates, inflation, interest rates, money supply, yield curves, dataset search, and dataset explanation). There is no overlap in functionality—for example, convert_currency handles conversions while get_exchange_rates provides raw rate data, and search_datasets and explain_dataset are complementary discovery tools.
All tool names follow a consistent verb_noun pattern with snake_case (e.g., convert_currency, get_exchange_rates, search_datasets). The verbs are appropriate and predictable (convert, explain, get, search), making the set easy to navigate and understand at a glance.
With 8 tools, the server is well-scoped for providing ECB data access. It covers core economic indicators (exchange rates, inflation, interest rates, money supply, yield curves) plus essential utilities (conversion, dataset search/explanation). Each tool earns its place without redundancy, fitting the typical 3-15 tool range for a focused domain.
The tool surface is complete for the ECB data domain, offering full lifecycle coverage: discovery (search_datasets, explain_dataset), retrieval (get_* tools for key datasets), and utility (convert_currency for derived calculations). There are no obvious gaps—agents can find, understand, and query all major ECB data types without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Macroeconomic and FX time-series data for AI agents: indicators, calendars, COT, forex, commodities.
FRED macro data, Treasury yields, FX rates & macro indicators for AI agents. Pay-per-query via x402.
Macro data for AI agents: GDP, inflation, unemployment and more (World Bank, US BLS). No keys.
51Macro data for AI agents: GDP, inflation, unemployment and more (World Bank, US BLS). No keys.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMacro economic intelligence MCP — 13 tools powered by 86 FRED series + ECB data covering Fed rates, inflation (CPI/PCE), yield curve, GDP, recession probability, and regime classification. Every response ES256K signed.1-
- AlicenseAqualityCmaintenanceEuropean financial data for AI agents — ECB interest rates, Eurostat inflation, GDP and unemployment by country. Zero API key needed.6741MIT
- AlicenseAqualityAmaintenanceCentral Bank of Russia (CBR) data for AI agents — daily and historical currency rates, key rate, inflation, and macro statistics. Five typed MCP tools, in-memory TTL cache, MIT-licensed, no API key required.52MIT
- AlicenseNot gradedqualityBmaintenanceEU Crop Intelligence MCP Server — Yield forecasts, weather analysis, and phenology models for 15 countries. AI agent-native, multi-source intelligence (NASA POWER, Eurostat, Open-Meteo).MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/scka-de/ecb-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server