Skip to main content
Glama
cfocoder

Banxico MCP Server

by cfocoder

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.

License: MIT Python 3.10+

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

  1. Python 3.10+ installed on your system

  2. uvx (recommended) or uv package manager

  3. 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:

  1. Install uvx (if not already installed):

    pip install uv
  2. Download the server file:

    curl -O https://raw.githubusercontent.com/cfocoder/banxico_mcp/main/banxico_mcp_server.py
  3. Configuration 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

  1. Clone the repository:

    git clone https://github.com/cfocoder/banxico_mcp.git
    cd banxico_mcp
  2. Install dependencies:

    pip install fastmcp httpx
  3. Run 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_mcp

Key points:

  • Not just uvx - Can run as a long-lived service

  • HTTP endpoint - /health available for monitoring

  • Configurable port - Set via MCP_PORT environment variable

  • Graceful shutdown - Responds to SIGTERM signals

  • Perfect for Coolify - Simple Docker deployment

Quick Start with Docker Compose (Local Testing)

  1. 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_PORT
  2. Run with Docker Compose:

    docker-compose up
  3. Test the server:

    curl http://localhost:8000/health

Deployment in Coolify (Oracle Cloud)

  1. Push to GitHub - Coolify will pull from your repository

  2. Create new Docker service in Coolify - Select "Docker" type

  3. Configure environment variables:

    • BANXICO_API_TOKEN: Your Banxico API token

    • MCP_PORT: Port number (default: 8000, change to avoid conflicts)

  4. Expose port - Configure port mapping in Coolify dashboard

  5. Health checks - Coolify will automatically use the /health endpoint

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

  1. Visit Banxico Token Registration

  2. Fill out the form to request an API token

  3. 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_latest_usd_mxn_rate()

Get the most recent USD/MXN exchange rate

None

get_usd_mxn_historical_data(limit)

Get historical exchange rate data

limit: Max data points (default: 30)

get_series_metadata(series_id)

Get metadata for a data series

series_id: Series ID (default: SF63528)

get_date_range_data(start_date, end_date, series_id)

Get data for specific date range

start_date, end_date: YYYY-MM-DD format

get_inflation_data(inflation_type, limit)

Get inflation data

inflation_type: 'monthly', 'accumulated', 'annual' (default: 'monthly')limit: Max data points (default: 12)

get_udis_data(limit)

Get UDIS (Investment Units) values

limit: Max data points (default: 30)

get_cetes_28_data(limit)

Get CETES 28-day interest rates

limit: Max data points (default: 30)

get_banxico_reserves_data(limit)

Get Banxico Reserve Assets data

limit: Max data points (default: 30)

get_unemployment_data(limit)

Get unemployment rate data

limit: Max data points (default: 24)

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/oportuno

  • Historical Data: /series/SF63528/datos

  • Series Metadata: /series/SF63528

  • Date Range: /series/SF63528/datos/{start_date}/{end_date}

Inflation Data:

  • Monthly Inflation: /series/SP30577/datos

  • Accumulated Inflation: /series/SP30579/datos

  • Annual Inflation: /series/SP30578/datos

Financial Indicators:

  • UDIS: /series/SP68257/datos

  • CETES 28-day: /series/SF282/datos

  • Banxico 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 endpoints

Testing

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

  1. "BANXICO_API_TOKEN environment variable not set"

    • Ensure your API token is properly configured in the MCP client settings

  2. "Failed to retrieve data"

    • Check your internet connection

    • Verify your API token is valid

    • Ensure the Banxico API is accessible

  3. 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

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Available Tools

9 tools
get_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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes
end_dateYes
series_idNoSF63528

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
inflation_typeNomonthly
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
series_idNoSF63528

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 9 tool updatesv1.0.0
    • Changedget_banxico_reserves_data3 fields changed
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_cetes_28_data3 fields changed
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_date_range_data5 fields changed
      • removedInput schema / properties / end_date / title
        Removed value: -"End Date"
      • removedInput schema / properties / series_id / title
        Removed value: -"Series Id"
      • removedInput schema / properties / start_date / title
        Removed value: -"Start Date"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_inflation_data4 fields changed
      • removedInput schema / properties / inflation_type / title
        Removed value: -"Inflation Type"
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_latest_usd_mxn_rate2 fields changed
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_series_metadata3 fields changed
      • removedInput schema / properties / series_id / title
        Removed value: -"Series Id"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_udis_data3 fields changed
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_unemployment_data3 fields changed
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_usd_mxn_historical_data3 fields changed
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
  2. 9 tool updates
    • First observedget_banxico_reserves_data
    • First observedget_cetes_28_data
    • First observedget_date_range_data
    • First observedget_inflation_data
    • First observedget_latest_usd_mxn_rate
    • First observedget_series_metadata
    • First observedget_udis_data
    • First observedget_unemployment_data
    • First observedget_usd_mxn_historical_data

TDQS

A3.6/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Provides 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.
    4
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to Mexico's INEGI (national statistics office) indicators API, enabling AI agents to query statistical data through natural language or direct tool calls.
    17
    MIT

Latest Blog Posts

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