Banxico MCP Server
The Banxico MCP Server provides programmatic access to Bank of Mexico economic data through MCP-compatible clients like Claude Desktop and Gemini CLI.
Capabilities:
Exchange Rates: Retrieve real-time and historical USD/MXN exchange rate data with customizable limits and date ranges (YYYY-MM-DD format)
Inflation Metrics: Access monthly, accumulated, or annual inflation data with configurable time periods
Interest Rates: Get current and historical CETES 28-day interest rates
Financial Indicators: Obtain UDIS (Investment Units) values and Banxico Reserve Assets data
Labor Market: Query current and historical unemployment rate data
Series Metadata: Access detailed information (title, description, date range) for specific data series
All queries return formatted data with dates and values, and historical data supports customizable limits on data points.
Click on "Install 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., "@Banxico MCP Serverwhat's the current USD to MXN exchange rate?"
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.
Banxico MCP Server
A Model Context Protocol (MCP) server for accessing the Bank of Mexico (Banxico) SIE API to retrieve USD/MXN exchange rate data and other economic indicators.
Features
Real-time Exchange Rates: Get the latest USD/MXN exchange rate from Banxico
Historical Data: Retrieve historical exchange rate data with customizable limits
Series Metadata: Access detailed information about economic data series
Date Range Queries: Get exchange rate data for specific date ranges
MCP Compatible: Works with Claude Desktop, Gemini CLI, and other MCP clients
Related MCP server: mcp-bcrp
Prerequisites
Python 3.10+ installed on your system
uvx (recommended) or uv package manager
Banxico API Token - Get one from Banxico SIE API
Installation Methods
Option 1: Direct from GitHub (Auto-Updates) ⭐ Recommended
This method automatically gets the latest updates when you restart your MCP client:
Configuration for MCP clients:
"banxico": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/cfocoder/banxico_mcp",
"banxico-mcp-server"
],
"env": {
"BANXICO_API_TOKEN": "your_token_here"
}
}No manual installation needed! uvx will automatically download and run the latest version.
Option 2: Download Single File (Manual Updates)
If you prefer to download the file locally:
Install uvx (if not already installed):
pip install uvDownload the server file:
curl -O https://raw.githubusercontent.com/cfocoder/banxico_mcp/main/banxico_mcp_server.pyConfiguration for MCP clients:
"banxico": { "command": "uvx", "args": [ "--python", "3.12", "--from", "fastmcp", "--with", "httpx", "--", "python", "/absolute/path/to/banxico_mcp_server.py" ], "env": { "BANXICO_API_TOKEN": "your_token_here" } }To get updates: Re-download the file when new features are added.
Option 3: Traditional Installation
Clone the repository:
git clone https://github.com/cfocoder/banxico_mcp.git cd banxico_mcpInstall dependencies:
pip install fastmcp httpxRun the server:
BANXICO_API_TOKEN=your_token_here python banxico_mcp_server.py
Deployment with Docker/Coolify
Deploy as HTTP MCP Server (Coolify, Docker, Cloud)
This MCP server can run as a persistent HTTP service:
docker run -p 3333:3333 \
-e BANXICO_API_TOKEN=xxx \
-e MCP_PORT=3333 \
cfocoder/banxico_mcpKey points:
✅ Not just uvx - Can run as a long-lived service
✅ HTTP endpoint -
/healthavailable for monitoring✅ Configurable port - Set via
MCP_PORTenvironment variable✅ Graceful shutdown - Responds to SIGTERM signals
✅ Perfect for Coolify - Simple Docker deployment
Quick Start with Docker Compose (Local Testing)
Clone and setup:
git clone https://github.com/cfocoder/banxico_mcp.git cd banxico_mcp cp .env.example .env # Edit .env with your BANXICO_API_TOKEN and desired MCP_PORTRun with Docker Compose:
docker-compose upTest the server:
curl http://localhost:8000/health
Deployment in Coolify (Oracle Cloud)
Push to GitHub - Coolify will pull from your repository
Create new Docker service in Coolify - Select "Docker" type
Configure environment variables:
BANXICO_API_TOKEN: Your Banxico API tokenMCP_PORT: Port number (default: 8000, change to avoid conflicts)
Expose port - Configure port mapping in Coolify dashboard
Health checks - Coolify will automatically use the
/healthendpoint
The Docker image will build automatically with production-ready features including health checks, non-root user, and graceful shutdown handling.
Configuration
Get Your Banxico API Token
Fill out the form to request an API token
You'll receive your token via email
Configure MCP Clients
The server works with any MCP-compatible client. Use Option 1 from "Installation Methods" above (auto-updates from GitHub) for the easiest setup.
For local configuration, use the uvx commands shown in Installation Methods and substitute your Banxico API token in the env section.
Available Tools
Tool | Description | Parameters |
| Get the most recent USD/MXN exchange rate | None |
| Get historical exchange rate data |
|
| Get metadata for a data series |
|
| Get data for specific date range |
|
| Get inflation data |
|
| Get UDIS (Investment Units) values |
|
| Get CETES 28-day interest rates |
|
| Get Banxico Reserve Assets data |
|
| Get unemployment rate data |
|
Usage Examples
Once configured with your MCP client, you can ask:
Exchange Rates:
"What's the current USD to MXN exchange rate?"
"Show me the USD/MXN exchange rate for the last 10 days"
"Get the exchange rate data from 2024-01-01 to 2024-01-31"
"What's the metadata for the USD/MXN series?"
Inflation Data:
"What's the current monthly inflation rate in Mexico?"
"Show me the annual inflation data for the last year"
"Get the accumulated inflation for the last 6 months"
Interest Rates:
"What are the current CETES 28-day rates?"
"Show me the CETES rates for the last month"
Financial Indicators:
"What are the current UDIS values?"
"Show me Banxico's reserve assets"
"Get the latest financial indicators from Banxico"
Labor Market:
"What's the current unemployment rate in Mexico?"
"Show me unemployment trends for the last year"
"How has unemployment changed over the last 2 years?"
API Reference
The server uses the Banxico SIE API with the following endpoints:
Exchange Rates:
Latest Data:
/series/SF63528/datos/oportunoHistorical Data:
/series/SF63528/datosSeries Metadata:
/series/SF63528Date Range:
/series/SF63528/datos/{start_date}/{end_date}
Inflation Data:
Monthly Inflation:
/series/SP30577/datosAccumulated Inflation:
/series/SP30579/datosAnnual Inflation:
/series/SP30578/datos
Financial Indicators:
UDIS:
/series/SP68257/datosCETES 28-day:
/series/SF282/datosBanxico Reserves:
/series/SF308843/datos
Labor Market:
Unemployment Rate:
/series/SL1/datos
Development
Project Structure
banxico-mcp-server/
├── Dockerfile # Production Docker image
├── docker-compose.yml # Local testing with Docker
├── .dockerignore # Docker build optimization
├── .env.example # Environment template
├── banxico_mcp_server.py # Main MCP server
├── pyproject.toml # Package configuration
├── README.md # This file
├── LICENSE # MIT License
├── CONTRIBUTING.md # Development guidelines
└── docs/
└── EXTENDING.md # Guide for adding new endpointsTesting
To test the server without an MCP client:
# Set your token
export BANXICO_API_TOKEN=your_token_here
# Run the server with a timeout to test startup
timeout 5s python banxico_mcp_server.py && echo "Server starts successfully"Adding New Tools
See EXTENDING.md for detailed instructions on adding new Banxico API endpoints.
Troubleshooting
Common Issues
"BANXICO_API_TOKEN environment variable not set"
Ensure your API token is properly configured in the MCP client settings
"Failed to retrieve data"
Check your internet connection
Verify your API token is valid
Ensure the Banxico API is accessible
Server doesn't start
Verify Python 3.10+ is installed
Check that uvx or required dependencies are available
Debug Mode
Run with debug logging:
BANXICO_API_TOKEN=your_token PYTHONPATH=. python -c "
import logging
logging.basicConfig(level=logging.DEBUG)
from banxico_mcp_server import mcp
mcp.run()
"Contributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Bank of Mexico (Banxico) for providing the SIE API
Model Context Protocol for the protocol specification
FastMCP for the excellent MCP server framework
Related Projects
Available Tools
9 toolsget_banxico_reserves_dataB
Get Banxico Reserve Assets data.
Args: limit: Maximum number of recent data points (default: 30)
Returns: Current and historical Banxico reserve assets data
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It states the tool 'Get[s]' data, implying a read-only operation, but doesn't clarify aspects like authentication needs, rate limits, data freshness, or error handling. For a data-fetching tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
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 concise, using clear sections ('Args:', 'Returns:') without unnecessary details. Every sentence adds value: the first states the purpose, and the subsequent lines explain parameters and returns efficiently. It's front-loaded with the core functionality, making it easy to scan and understand.
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 low complexity (1 parameter, no nested objects) and the presence of an output schema (which handles return value documentation), the description is reasonably complete. It covers the purpose, parameter semantics, and return scope. However, the lack of usage guidelines and behavioral details (e.g., data source or update frequency) prevents a perfect score, as these could aid the agent in contextual decisions.
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 description adds meaningful context for the single parameter 'limit' by explaining it as 'Maximum number of recent data points (default: 30).' This clarifies its purpose beyond the schema's technical definition. With 0% schema description coverage, the description fully compensates, providing essential semantic information that aids correct 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 Banxico Reserve Assets data.' This specifies the verb ('Get') and resource ('Banxico Reserve Assets data'), making it immediately understandable. However, it doesn't differentiate this tool from its siblings (like get_cetes_28_data or get_inflation_data) beyond the specific data type, which prevents a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools, context for selecting reserve assets data over other economic indicators, or any prerequisites. The agent must infer usage from the tool name alone, which is insufficient for effective decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cetes_28_dataB
Get CETES 28-day interest rate data from Banxico.
Args: limit: Maximum number of recent data points (default: 30)
Returns: Current and historical CETES 28-day rates
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It mentions that the tool retrieves 'current and historical' data, which implies read-only behavior, but it does not cover important aspects such as rate limits, authentication requirements, data freshness, or error handling. For a tool with no annotations, this leaves significant gaps in understanding its operational behavior.
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 concise, with a clear purpose statement followed by 'Args' and 'Returns' sections. Every sentence adds value without redundancy, making it easy to scan and understand quickly. The front-loaded purpose statement ensures the main function is immediately clear.
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 low complexity (1 optional parameter) and the presence of an output schema (which handles return values), the description is reasonably complete. It covers the purpose, parameter semantics, and return scope adequately. However, it lacks behavioral details (e.g., rate limits) and usage guidelines, which slightly reduces completeness for a tool with no annotations.
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 description adds meaningful context for the single parameter 'limit' by explaining it as 'Maximum number of recent data points (default: 30)', which clarifies its purpose beyond the schema's technical definition. Since schema description coverage is 0%, the description compensates well by providing this semantic information, though it could be more detailed (e.g., explaining what 'recent' means).
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 CETES 28-day interest rate data from Banxico.' It specifies the verb ('Get'), resource ('CETES 28-day interest rate data'), and source ('Banxico'), which is specific and actionable. However, it does not explicitly distinguish this tool from its siblings (e.g., get_inflation_data, get_unemployment_data), which would require a 5.
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 no guidance on when to use this tool versus alternatives. It does not mention any context, prerequisites, or exclusions, and it does not reference sibling tools like get_date_range_data or get_usd_mxn_historical_data. This lack of usage guidance makes it unclear in what scenarios this tool is preferred over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_date_range_dataB
Get exchange rate data for a specific date range.
Args: start_date: Start date in YYYY-MM-DD format end_date: End date in YYYY-MM-DD format series_id: The series ID (default: SF63528 for USD/MXN)
Returns: Exchange rate data for the specified date range
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | ||
| end_date | Yes | ||
| series_id | No | SF63528 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 mentions the tool retrieves data (implied read-only) and specifies a default series_id, but lacks details on permissions, rate limits, error handling, or response format beyond a vague 'Exchange rate data.' For a data-fetching tool with no annotations, this is insufficient.
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 purpose stated first. The Args and Returns sections are structured but slightly verbose; every sentence adds value, though 'Returns:' could be more concise. Overall, it's efficient with minimal waste.
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 3 parameters with 0% schema coverage and an output schema (implied by 'Has output schema: true'), the description is moderately complete. It explains parameters well but lacks behavioral context (e.g., authentication, errors). The output schema should cover return values, so the vague 'Exchange rate data' is acceptable, but overall gaps remain.
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 0%, so the description must compensate. It adds meaning by explaining each parameter: start_date and end_date formats (YYYY-MM-DD) and series_id's default value (SF63528 for USD/MXN). This clarifies beyond the bare schema, though it doesn't detail what series_id represents or list alternatives.
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 exchange rate data for a specific date range.' It specifies the verb ('Get'), resource ('exchange rate data'), and scope ('date range'). However, it doesn't explicitly differentiate from siblings like 'get_usd_mxn_historical_data' or 'get_latest_usd_mxn_rate', which appear related.
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?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention sibling tools, prerequisites, or exclusions. It simply states what the tool does without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inflation_dataB
Get inflation data from Banxico.
Args: inflation_type: Type of inflation data ('monthly', 'accumulated', 'annual') limit: Maximum number of recent data points (default: 12)
Returns: Formatted inflation data with percentages
| Name | Required | Description | Default |
|---|---|---|---|
| inflation_type | No | monthly | |
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 mentions the return format ('Formatted inflation data with percentages') but lacks critical details like data source reliability, update frequency, error handling, or rate limits. For a data-fetching tool, this is insufficient behavioral context.
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 stated first followed by parameter and return details. The structure is clear, though the 'Args' and 'Returns' sections could be integrated more smoothly into prose.
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 (2 parameters, no annotations, but with an output schema), the description is partially complete. It covers purpose and parameters adequately but lacks behavioral context and usage guidelines. The output schema existence reduces the need to detail return values, but overall gaps remain.
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 description adds meaningful semantics for both parameters: it explains that 'inflation_type' specifies the data type (with examples) and 'limit' controls the number of recent data points. Since schema description coverage is 0%, this compensates well, though it doesn't fully document all possible values or constraints (e.g., valid ranges for 'limit').
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 action ('Get') and resource ('inflation data from Banxico'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its siblings (like get_unemployment_data or get_usd_mxn_historical_data) beyond specifying the data type, which prevents a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or contexts where other tools might be more appropriate, leaving the agent without usage direction beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_usd_mxn_rateA
Get the latest USD/MXN exchange rate from Banxico.
Returns: The most recent USD/MXN exchange rate with date
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 discloses the return format (rate with date) but lacks behavioral details such as rate limits, authentication needs, data freshness, or error handling. This is a significant gap for a tool with zero annotation coverage.
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 front-loaded with the core purpose in the first sentence, followed by a concise return statement. Every sentence earns its place with no wasted words, making it highly efficient and well-structured.
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 simplicity (0 parameters, output schema exists), the description is adequate but incomplete. It covers the purpose and return values, but without annotations, it misses key behavioral context like reliability or constraints. The output schema reduces the need to explain returns, but gaps remain.
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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description adds value by specifying the data source (Banxico) and return content, which goes beyond the schema. Baseline is 4 for zero parameters.
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 specific action ('Get the latest USD/MXN exchange rate') and the source ('from Banxico'), distinguishing it from sibling tools like 'get_usd_mxn_historical_data' which handles historical data. It precisely identifies both the verb and resource.
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 context by specifying 'latest' exchange rate, suggesting this tool is for current data rather than historical ranges (handled by 'get_usd_mxn_historical_data'). However, it lacks explicit guidance on when not to use it or alternatives for other financial data like reserves or inflation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_series_metadataB
Get metadata for a Banxico series.
Args: series_id: The series ID to get metadata for (default: SF63528 for USD/MXN)
Returns: Series metadata including title, description, and date range
| Name | Required | Description | Default |
|---|---|---|---|
| series_id | No | SF63528 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states this is a 'Get' operation but doesn't mention whether it requires authentication, has rate limits, returns errors for invalid series IDs, or has any side effects. The return format is mentioned but without details about structure or potential null values.
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 with clear sections (Args, Returns). The first sentence states the core purpose, followed by parameter and return details. No wasted words, though the structure could be more integrated rather than sectioned.
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 simple single-parameter tool with output schema, the description covers the basics but has gaps. It explains what the tool does and the parameter, but doesn't address authentication needs, error conditions, or how this metadata tool relates to the sibling data retrieval tools. The presence of an output schema reduces the need to detail 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?
With 0% schema description coverage, the description provides crucial context about the series_id parameter - explaining it's 'The series ID to get metadata for' and providing a specific default example ('SF63528 for USD/MXN'). This adds meaningful semantics beyond what the bare schema provides, though it doesn't explain what constitutes a valid series ID format.
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 action ('Get metadata') and resource ('for a Banxico series'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this metadata retrieval tool from sibling data retrieval tools like 'get_banxico_reserves_data' or 'get_usd_mxn_historical_data'.
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 no guidance on when to use this tool versus alternatives. With multiple sibling tools for Banxico data, there's no indication whether this should be used before/after other tools, or how it complements them. The default parameter hint is useful but doesn't constitute usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_udis_dataB
Get UDIS (Investment Units) data from Banxico.
Args: limit: Maximum number of recent data points (default: 30)
Returns: Current and historical UDIS values
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'Current and historical UDIS values' but lacks details on behavioral traits such as data freshness, rate limits, authentication needs, error handling, or whether it's a read-only operation. This is a significant gap for a data-fetching tool with no annotation coverage.
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, starting with the core purpose, followed by clear 'Args' and 'Returns' sections. Every sentence earns its place by providing essential information without redundancy, making it efficient and well-structured.
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 low complexity (1 parameter, no nested objects) and the presence of an output schema (which handles return values), the description is reasonably complete. It covers purpose, parameter semantics, and return scope, though it lacks behavioral context and usage guidelines, which are minor gaps in this context.
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 description adds meaningful semantics for the 'limit' parameter, explaining it as 'Maximum number of recent data points (default: 30)', which clarifies its purpose beyond the schema's basic type and default. With 0% schema description coverage and 1 parameter, this compensates well, though it doesn't detail data recency or ordering.
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 verb ('Get') and resource ('UDIS (Investment Units) data from Banxico'), making the purpose specific and understandable. It distinguishes from some siblings by focusing on UDIS data rather than reserves, exchange rates, or other economic indicators, though it doesn't explicitly differentiate from all similar data-fetching tools like 'get_date_range_data'.
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 no guidance on when to use this tool versus alternatives. With siblings like 'get_date_range_data' and 'get_historical_data' tools, it's unclear if this tool is for UDIS-specific data, if it has date range limitations, or if other tools might overlap. No explicit when/when-not or alternative usage is mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unemployment_dataB
Get unemployment rate data from Banxico.
Args: limit: Maximum number of recent data points (default: 24 for 2 years of monthly data)
Returns: Current and historical unemployment rate data
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It mentions the tool returns 'Current and historical unemployment rate data,' which implies a read-only operation, but doesn't cover critical aspects like rate limits, authentication needs, data freshness, or error handling. For a data-fetching tool with zero annotation coverage, this is insufficient.
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 the core purpose, followed by clear sections for Args and Returns. It's concise with no wasted sentences, though the 'Returns' section is somewhat redundant given the output schema, slightly reducing efficiency.
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 low complexity (1 parameter) and the presence of an output schema, the description is minimally adequate. It covers the purpose and parameter semantics but lacks behavioral details and usage guidelines. Without annotations, it should do more to explain data scope or limitations, making it just sufficient but not comprehensive.
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 description adds meaningful context for the single parameter 'limit' by explaining its default value (24) and purpose ('2 years of monthly data'), which goes beyond the input schema's basic type and default. With 0% schema description coverage, this compensation is effective, though it could detail format or constraints more.
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 unemployment rate data from Banxico.' It specifies the verb ('Get'), resource ('unemployment rate data'), and source ('Banxico'). However, it doesn't explicitly differentiate from sibling tools like 'get_inflation_data' or 'get_usd_mxn_historical_data' beyond the data type, which keeps it from a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or contexts where other tools might be more appropriate, such as using 'get_inflation_data' for inflation metrics or 'get_date_range_data' for broader queries. This leaves the agent without clear usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usd_mxn_historical_dataC
Get historical USD/MXN exchange rate data from Banxico.
Args: limit: Maximum number of recent data points to return (default: 30)
Returns: Historical USD/MXN exchange rate data
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It states the tool fetches historical data but lacks details on rate limits, authentication needs, data freshness, error handling, or pagination. For a data-fetching tool with zero annotation coverage, this is a significant gap in transparency.
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 concise, with a clear purpose statement followed by brief Arg and Returns sections. Every sentence adds value, and there's no redundant information. It could be slightly more front-loaded by integrating the parameter explanation into the main description, but it's efficient overall.
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 annotations, but with an output schema), the description is minimally adequate. The output schema existence means return values needn't be explained, but the description lacks context on data format, time periods, or error cases. It meets basic requirements but leaves room for improvement in completeness.
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 description adds minimal semantics for the 'limit' parameter, explaining it as 'Maximum number of recent data points to return (default: 30)'. With 0% schema description coverage, this partially compensates by clarifying the parameter's purpose and default. However, it doesn't detail constraints like valid ranges or what 'recent' means, leaving gaps in understanding.
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 historical USD/MXN exchange rate data from Banxico.' It specifies the verb ('Get'), resource ('historical USD/MXN exchange rate data'), and source ('from Banxico'). However, it doesn't explicitly differentiate from sibling tools like 'get_latest_usd_mxn_rate' or 'get_date_range_data', which would require a 5.
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 no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_latest_usd_mxn_rate' for current rates or 'get_date_range_data' for date-based queries, nor does it specify use cases or exclusions. This leaves the agent without context for tool selection.
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.
9 tool updates
v1.0.0- Changed
get_banxico_reserves_data3 fields changed- removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_cetes_28_data3 fields changed- removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_date_range_data5 fields changed- removed
Input schema / properties / end_date / titleRemoved value: -"End Date" - removed
Input schema / properties / series_id / titleRemoved value: -"Series Id" - removed
Input schema / properties / start_date / titleRemoved value: -"Start Date" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_inflation_data4 fields changed- removed
Input schema / properties / inflation_type / titleRemoved value: -"Inflation Type" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_latest_usd_mxn_rate2 fields changed- removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_series_metadata3 fields changed- removed
Input schema / properties / series_id / titleRemoved value: -"Series Id" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_udis_data3 fields changed- removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_unemployment_data3 fields changed- removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_usd_mxn_historical_data3 fields changed- removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
9 tool updates
- First observed
get_banxico_reserves_data - First observed
get_cetes_28_data - First observed
get_date_range_data - First observed
get_inflation_data - First observed
get_latest_usd_mxn_rate - First observed
get_series_metadata - First observed
get_udis_data - First observed
get_unemployment_data - First observed
get_usd_mxn_historical_data
TDQS
Each tool has a clearly distinct purpose targeting specific economic indicators or data types from Banxico. There is no overlap in functionality—tools like get_latest_usd_mxn_rate and get_usd_mxn_historical_data serve different needs (latest vs. historical data), and others cover unique datasets such as reserves, inflation, or unemployment.
All tool names follow a consistent verb_noun pattern starting with 'get_' followed by a descriptive noun phrase (e.g., get_banxico_reserves_data, get_inflation_data). This uniformity makes the tool set predictable and easy to understand at a glance.
With 9 tools, the server is well-scoped for accessing Banxico's economic data. Each tool earns its place by covering key indicators like exchange rates, inflation, unemployment, and reserves, without being overly broad or too limited for the domain.
The tool set provides comprehensive coverage for retrieving various economic data points from Banxico, including exchange rates, inflation, unemployment, and reserves. A minor gap is the lack of tools for more complex operations like data filtering beyond date ranges or series IDs, but core retrieval needs are fully met.
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
Banxico MCP — Banco de México (Mexico's central bank) via the SIE API.
Live & historical FX rates and currency conversion for AI agents. No API keys.
Live & historical FX rates and currency conversion for AI agents. No API keys.
51FRED macro data, Treasury yields, FX rates & macro indicators for AI agents. Pay-per-query via x402.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides real-time Venezuelan economic data, including official and parallel exchange rates, inflation statistics, and basic goods basket prices. It enables AI assistants to query historical economic trends and current market indicators via natural language.-
- AlicenseAqualityBmaintenanceProvides access to over 5,000 macroeconomic indicators from the Banco Central de Reserva del Perú (BCRP) statistical database. It enables AI agents to search for indicators, fetch time-series data, and generate professional economic charts.41MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying economic data from Banco de México (Mexico's central bank) via the SIE API.17MIT
- AlicenseNot gradedqualityCmaintenanceProvides access to Mexico's INEGI (national statistics office) indicators API, enabling AI agents to query statistical data through natural language or direct tool calls.17MIT
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/cfocoder/banxico_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server