mcp-bcrp
用于Banco Central de Reservea del Perú(BCRP)Statistical API的MCP服务器和Python库。直接从您的AI代理或Python环境访问5000多个宏观经济指标。
 ](https://www.python.org/downloads/)  ](https://pypi.org/project/mcp-bcrp/) 
______________________________________________________________________
目录
______________________________________________________________________
概述
这 mcp-bcrp 该包通过模型上下文协议(MCP)提供了一个到BCRP统计数据库的标准化接口。它既支持直接使用Python,也支持与人工智能助手(如Claude、Gemini和其他MCP兼容代理)的集成。
库实现了:
- 用于高效数据检索的异步HTTP客户端
- 具有模糊匹配功能的确定性搜索引擎
- 查询规范化的西班牙语处理
- 自动频率检测(每日、每月、每季度、每年)
______________________________________________________________________
特性
| 特性 | 描述 |
|---|---|
| 智能搜索 | 具有模糊匹配、属性提取和模糊检测的确定性搜索引擎 |
| 异步本机 | 基于 httpx 用于具有连接池的非阻塞HTTP请求 |
| 双界面 | 用作AI代理的MCP服务器或作为独立的Python库 |
| 图表生成 | 使用自动西班牙语日期解析生成可发布的图表 |
| 全面覆盖 | 访问所有类别的5000多个BCRP经济指标 |
| 元数据缓存 | 17MB元数据文件的本地缓存,用于快速离线搜索 |
______________________________________________________________________
需求
- Python 3.10或更高版本
- API请求的Internet连接
- 依赖关系:
httpx,pandas,fastmcp,rapidfuzz,matplotlib
______________________________________________________________________
安装
来自PyPI(发布时)
pip install mcp-bcrp源自源头
git clone https://github.com/YOUR_USERNAME/mcp-bcrp.git
cd mcp-bcrp
pip install -e .具有可选依赖关系
pip install "mcp-bcrp[charts]" # Include matplotlib for chart generation
pip install "mcp-bcrp[dev]" # Include development dependencies______________________________________________________________________
配置
MCP服务器配置
将以下内容添加到MCP配置文件中(例如。, mcp_config.json):
{
"mcpServers": {
"bcrp-api": {
"command": "python",
"args": ["C:/absolute/path/to/mcp_bcrp/run.py"]
}
}
}\[!提示\] 如果你已经通过pip安装了该软件包,你也可以使用 ["-m", "mcp_bcrp"] 作为论点。环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
BCRP_CACHE_DIR | 元数据缓存目录 | 用户缓存目录 |
BCRP_TIMEOUT | HTTP请求超时(秒) | 120 |
______________________________________________________________________
用法
作为MCP服务器
配置后,MCP兼容的AI助手可以调用服务器:
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")]作为Python库
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())______________________________________________________________________
可用工具(MCP)
| 工具 | 参数 | 说明 |
|---|---|---|
search_series | query: str | 按关键字搜索BCRP指标。返回确定性匹配或模糊性错误。 |
get_data | series_codes: list[str], period: str | 获取原始时间序列数据。期间格式: YYYY-MM/YYYY-MM. |
get_table | series_codes: list[str], names: list[str], period: str | 获取具有可选自定义列名的格式化表。 |
plot_chart | series_codes: list[str], period: str, title: str, names: list[str], output_path: str | 生成具有自动日期解析功能的专业PNG图表。 |
可用资源
| 资源 | URI | 描述 |
|---|---|---|
| 元数据 | bcrp://metadata | 缓存元数据和统计数据的摘要。 |
| 关键指标 | bcrp://indicators/key | 最常见的经济指标列表。 |
| 帮助 | bcrp://help | 使用指南和提示。 |
可用提示
| 提示 | 描述 |
|---|---|
economista_peruano | 系统提示作为BCRP高级经济学家以严谨的方法分析数据。 |
analista_financiero | 短期金融市场分析(外汇、利率)的专家角色。 |
explorador_datos | 助手,帮助查找给定主题的正确系列代码。 |
______________________________________________________________________
关键指标
以下是常用的指示器代码:
| 类别 | 代码 | 描述 | 频率 |
|---|---|---|---|
| 货币政策 | PD04722MM | 参考利率 | 每月 |
| 汇率 | PD04638PD | 银行间汇率(卖出) | 每日 |
| 通货膨胀 | PN01270PM | CPI利马大都市 | 每月 |
| 铜价 | PN01652XM | 国际铜价(c/lb) | 每月 |
| GDP增长 | PN01713AM | 农业GDP(变量%) | 年度 |
| 业务期望 | PD38048AM | 12个月GDP预期 | 每月 |
| 国际储备 | PN00015MM | 国际储备净额 | 每月 |
\[!注意\] 系列代码遵循BCRP命名约定。使用 search_series 为您的查询找到合适的代码。______________________________________________________________________
搜索引擎
搜索引擎实现了一个为高精度而设计的确定性管道:
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______________________________________________________________________
建筑
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)______________________________________________________________________
限制和警告
\[!警告\] API费率限制:BCRP API未公布官方费率限制。在生产应用程序中实现请求之间的适当延迟,以避免IP阻塞。
\[!警告\] 数据新鲜度:元数据缓存(bcrp_metadata.json)可能会变得陈旧。定期删除文件以强制刷新可用指示器。\[!小心\] 非官方套餐:这是一个独立的实施,没有得到秘鲁中央储备银行的正式认可。数据准确性取决于上游API。
已知限制
- 日期格式:BCRP API以西班牙语格式返回日期(例如“Ene.2024”)。库会自动处理此问题,但边缘情况可能需要自定义日期解析。
- 系列可用性:并非所有系列都适用于所有时间段。API返回不可用日期范围的空响应。
- 元数据大小:完整的元数据文件约为17MB。在慢速连接上,初始加载可能需要几秒钟。
- 频率检测:库尝试自动检测序列频率,但某些序列可能需要明确的规范。
______________________________________________________________________
贡献
欢迎捐款。请遵循以下指南:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/improvement) - 用描述性消息提交更改
- 确保所有测试通过(
pytest) - 提交拉取请求
看 贡献.md 详细指南。
______________________________________________________________________
许可证
该项目根据MIT许可证获得许可。看 许可证 全文。
______________________________________________________________________
致谢
______________________________________________________________________
另见
| 项目 | 描述 |
|---|---|
| wbgapi360 | 用于世界银行数据API的企业级MCP客户端。提供对世界发展指标、全球排名、国家比较和专业FT风格可视化的访问。 |
这两个库可以一起使用,将秘鲁特定的BCRP数据与世界银行的全球指标相结合,建立全面的宏观经济分析管道。
______________________________________________________________________
免责声明:本软件按“原样”提供,不提供任何形式的保修。作者不对数据中的任何错误或根据本库提供的信息做出的任何决定负责。
