Skip to main content

mcp-bcrp

Python Version GitHub PyPI License: MIT

User Guide Colab

MCP Server and Python library for the Banco Central de Reserva del Perú (BCRP) Statistical API. Access over 5,000 macroeconomic indicators directly from your AI agent or Python environment.


Table of Contents


Overview

The mcp-bcrp package provides a standardized interface to the BCRP statistical database through the Model Context Protocol (MCP). It supports both direct Python usage and integration with AI assistants such as Claude, Gemini, and other MCP-compatible agents.

The library implements:

  • Asynchronous HTTP client for efficient data retrieval
  • Deterministic search engine with fuzzy matching capabilities
  • Spanish language processing for query canonicalization
  • Automatic frequency detection (daily, monthly, quarterly, annual)

Features

Feature Description
Smart Search Deterministic search engine with fuzzy matching, attribute extraction, and ambiguity detection
Async Native Built on httpx for non-blocking HTTP requests with connection pooling
Dual Interface Use as MCP server for AI agents or as standalone Python library
Chart Generation Generate publication-ready charts with automatic Spanish date parsing
Full Coverage Access to 5,000+ BCRP economic indicators across all categories
Metadata Cache Local caching of 17MB metadata file for fast offline searches

Requirements

  • Python 3.10 or higher
  • Internet connection for API requests
  • Dependencies: httpx, pandas, fastmcp, rapidfuzz, matplotlib

Installation

From PyPI (when published)

pip install mcp-bcrp

From Source

git clone https://github.com/YOUR_USERNAME/mcp-bcrp.git
cd mcp-bcrp
pip install -e .

With Optional Dependencies

pip install "mcp-bcrp[charts]"  # Include matplotlib for chart generation
pip install "mcp-bcrp[dev]"     # Include development dependencies

Configuration

MCP Server Configuration

Add the following to your MCP configuration file (e.g., mcp_config.json):

{
  "mcpServers": {
    "bcrp-api": {
      "command": "python",
      "args": ["C:/absolute/path/to/mcp_bcrp/run.py"]
    }
  }
}

Environment Variables

Variable Description Default
BCRP_CACHE_DIR Directory for metadata cache User cache dir
BCRP_TIMEOUT HTTP request timeout in seconds 120

Usage

As MCP Server

Once configured, the server can be invoked by MCP-compatible AI assistants:

User: What is the current policy interest rate in Peru?
Agent: [calls search_series("tasa politica monetaria")]
Agent: [calls get_data(["PD04722MM"], "2024-01/2025-01")]

As Python Library

import asyncio
from mcp_bcrp.client import AsyncBCRPClient, BCRPMetadata

async def main():
    # Initialize metadata client
    metadata = BCRPMetadata()
    await metadata.load()
    
    # Search for an indicator (deterministic)
    result = metadata.solve("tasa politica monetaria")
    print(result)
    # Output: {'codigo_serie': 'PD04722MM', 'confidence': 1.0, ...}
    
    # Fetch time series data
    client = AsyncBCRPClient()
    df = await client.get_series(
        series_codes=["PD04722MM"],
        start_date="2024-01",
        end_date="2025-01"
    )
    print(df.head())

asyncio.run(main())

Available Tools (MCP)

Tool Parameters Description
search_series query: str Search BCRP indicators by keyword. Returns deterministic match or ambiguity error.
get_data series_codes: list[str], period: str Fetch raw time series data. Period format: YYYY-MM/YYYY-MM.
get_table series_codes: list[str], names: list[str], period: str Get formatted table with optional custom column names.
plot_chart series_codes: list[str], period: str, title: str, names: list[str], output_path: str Generate professional PNG chart with automatic date parsing.

Available Prompts

Prompt Description
economista_peruano System prompt to analyze data as a BCRP Senior Economist with rigorous methodology

Key Indicators

The following are commonly used indicator codes:

Category Code Description Frequency
Monetary Policy PD04722MM Reference Interest Rate Monthly
Exchange Rate PD04638PD Interbank Exchange Rate (Sell) Daily
Inflation PN01270PM CPI Lima Metropolitan Monthly
Copper Price PN01652XM International Copper Price (c/lb) Monthly
GDP Growth PN01713AM Agricultural GDP (Var. %) Annual
Business Expectations PD38048AM GDP Expectations 12 months Monthly
International Reserves PN00015MM Net International Reserves Monthly

Search Engine

The search engine implements a deterministic pipeline designed for high precision:

Query Input
    │
    ▼
┌─────────────────────────────┐
│  1. Canonicalization        │  Lowercase, remove accents, filter stopwords
└─────────────────────────────┘
    │
    ▼
┌─────────────────────────────┐
│  2. Attribute Extraction    │  Currency (USD/PEN), horizon, component type
└─────────────────────────────┘
    │
    ▼
┌─────────────────────────────┐
│  3. Hard Filters            │  Eliminate series not matching attributes
└─────────────────────────────┘
    │
    ▼
┌─────────────────────────────┐
│  4. Fuzzy Scoring           │  Token sort ratio using RapidFuzz
└─────────────────────────────┘
    │
    ▼
┌─────────────────────────────┐
│  5. Ambiguity Detection     │  Return error if top matches are too close
└─────────────────────────────┘
    │
    ▼
Deterministic Result or Explicit Ambiguity Error

Architecture

mcp_bcrp/
├── __init__.py          # Package initialization and version
├── server.py            # FastMCP server with tool definitions
├── client.py            # AsyncBCRPClient and BCRPMetadata classes
└── search_engine.py     # Deterministic search pipeline implementation

run.py                   # MCP server entry point
bcrp_metadata.json       # Cached metadata (17MB, auto-downloaded)

Limitations and Warnings

Known Limitations

  1. Date Format: The BCRP API returns dates in Spanish format (e.g., "Ene.2024"). The library handles this automatically, but custom date parsing may be required for edge cases.

  2. Series Availability: Not all series are available for all time periods. The API returns empty responses for unavailable date ranges.

  3. Metadata Size: The complete metadata file is approximately 17MB. Initial load may take several seconds on slow connections.

  4. Frequency Detection: The library attempts to auto-detect series frequency, but some series may require explicit specification.


Contributing

Contributions are welcome. Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/improvement)
  3. Commit changes with descriptive messages
  4. Ensure all tests pass (pytest)
  5. Submit a pull request

See CONTRIBUTING.md for detailed guidelines.


License

This project is licensed under the MIT License. See LICENSE for the full text.


Acknowledgments


See Also

Project Description
wbgapi360 Enterprise-grade MCP Client for World Bank Data API. Provides access to World Development Indicators, global rankings, country comparisons, and professional FT-style visualizations.

Both libraries can be used together to build comprehensive macroeconomic analysis pipelines combining Peru-specific BCRP data with global World Bank indicators.


Disclaimer: This software is provided "as is" without warranty of any kind. The authors are not responsible for any errors in the data or any decisions made based on the information provided by this library.

Release files for mcp-bcrp 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-bcrp 0.1.3
File Size Uploaded
mcp_bcrp-0.1.3.tar.gz 26.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-bcrp 0.1.3
File Interpreter ABI Platform
mcp_bcrp-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 45.3 kB

Release files / mcp_bcrp-0.1.3.tar.gz

Download URL mcp_bcrp-0.1.3.tar.gz
Size 26.1 kB
Tags Source
SHA-256 checksum
How to use checksums
7911564060e8555a84cbef53e1abc4d9f5fb0e6eb5be249eb4158c114fa45ae2
BLAKE2b-256 checksum
How to use checksums
0777b06d68e71dbf2f1cde87340aefd7833176f7d0c14b5f9d0a174a89ea1b70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 6, 2026.

Transparency log

Release files / mcp_bcrp-0.1.3-py3-none-any.whl

Download URL mcp_bcrp-0.1.3-py3-none-any.whl
Size 19.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4fc99b98074e353d1339134813176e9ce6d11490b5df77eea674279ff94f0903
BLAKE2b-256 checksum
How to use checksums
511b8e37098918ea7a3464fb2e5dc05e33b2ae074d1ab91d7a983529cf10edc6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page