mcp-cbr-rates

Um servidor Model Context Protocol (MCP) que expõe dados públicos do Banco da Rússia (Центральный банк РФ, CBR) — cotações de moedas, taxa básica de juros, inflação e um resumo macroeconômico compacto — para agentes de IA.

Documentação

mcp-cbr-rates

Um servidor Model Context Protocol (MCP) que expõe dados públicos do Banco Central da Rússia (Центральный банк РФ, CBR) — cotações de moedas, taxa de juros básica, inflação e um resumo macroeconômico compacto — para agentes de IA.

License: MIT PyPI GitHub release Tests Coverage Python MCP Glama

mcp-cbr-rates MCP server

mcp-cbr-rates faz parte da família atomno de servidores MCP focados no ecossistema fintech russo. É totalmente open-source, não requer chaves de API e é construído sobre os endpoints públicos oficiais do CBR.


Recursos

  • Cinco ferramentas MCP de alta qualidade, cada uma com um esquema Pydantic estrito: get_rate, history_rates, key_rate, inflation, statistics.
  • Cache TTL (Time-To-Live) integrado: 1 hora para cotações diárias, 24 horas para séries históricas, para ser educado com a fonte.
  • Transporte assíncrono httpx com tentativas automáticas em erros 5xx.
  • Parsing XML seguro via defusedxml.
  • Mais de 50 testes unitários com HTTP simulado via respx, cobertura ≥80%.
  • Sem segredos, sem telemetria, sem rastreadores de terceiros.

Início rápido

Instalar a partir do PyPI (recomendado)

pipx install atomno-mcp-cbr-rates
atomno-mcp-cbr-rates  # starts the MCP server over stdio

Ou com uv:

uv tool install atomno-mcp-cbr-rates

Instalar a partir do código-fonte

git clone https://github.com/atomno-mcp/mcp-cbr-rates.git
cd mcp-cbr-rates
pip install -e .
atomno-mcp-cbr-rates  # starts the MCP server over stdio

Usar com Cursor

Adicione o seguinte ao .cursor/mcp.json (ou ao seu ~/.cursor/mcp.json global):

{
  "mcpServers": {
    "cbr-rates": {
      "command": "atomno-mcp-cbr-rates"
    }
  }
}

Usar com Claude Desktop

Adicione ao claude_desktop_config.json:

{
  "mcpServers": {
    "cbr-rates": {
      "command": "atomno-mcp-cbr-rates"
    }
  }
}

No Windows, a configuração fica em %APPDATA%\Claude\claude_desktop_config.json; no macOS, em ~/Library/Application Support/Claude/claude_desktop_config.json.

Usar com Claude Code

claude mcp add cbr-rates -- atomno-mcp-cbr-rates

Ferramentas

NomeEntradasRetornos
get_ratechar_code: str, on_date?: dateCurrencyRate — cotação única na data informada (ou na mais recente)
history_rateschar_code: str, date_from: date, date_to: dateHistoryRates — série de cotações diárias
key_ratedate_from?: date, date_to?: dateKeyRateHistory — série da taxa de juros básica do CBR
inflationyear_from?: int, year_to?: intInflationData — IPC mensal ano a ano em percentual
statistics(nenhum)MacroSnapshot — painel combinado: taxa básica + USD/EUR/CNY + inflação

Exemplos em linguagem simples:

"Qual era a cotação oficial do EUR em 25 de abril de 2024?" Ferramenta: get_rate(char_code="EUR", on_date="2024-04-25")

"Plote a taxa diária USD-RUB dos últimos 90 dias." Ferramenta: history_rates(char_code="USD", date_from=..., date_to=...)

"Me dê a taxa básica mais recente, USD/EUR/CNY e inflação de uma vez." Ferramenta: statistics()

A janela do history_rates é limitada a 366 dias; para períodos mais longos, chame a ferramenta repetidamente.


Configuração

Todas as configurações são opcionais e lidas de variáveis de ambiente:

VariávelPadrãoDescrição
MCP_CBR_HTTP_TIMEOUT15Timeout HTTP em segundos para chamadas ao CBR.
MCP_CBR_CACHE_DAILY_TTL3600TTL do cache para cotações diárias (segundos).
MCP_CBR_CACHE_HISTORY_TTL86400TTL do cache para séries históricas e respostas SOAP.
MCP_CBR_LOG_LEVELINFONível de log padrão do Python.

Nomes legados CBR_* ainda são aceitos para compatibilidade, mas novas configurações devem usar MCP_CBR_*.

Não há chaves de API para configurar — todos os endpoints do CBR usados aqui são públicos.


Desenvolvimento

git clone https://github.com/atomno-mcp/mcp-cbr-rates.git
cd mcp-cbr-rates
python -m venv .venv && source .venv/bin/activate  # or .\.venv\Scripts\activate on Windows
pip install -e ".[dev]"
pytest --cov=src/mcp_cbr_rates

Estrutura:

apps/mcp-cbr-rates/
├── src/mcp_cbr_rates/
│   ├── server.py        # FastMCP entry point, tool registration
│   ├── tools.py         # high-level async tools with caching
│   ├── client.py        # httpx wrapper around CBR XML / SOAP / HTML endpoints
│   ├── schemas.py       # Pydantic v2 models for inputs & outputs
│   ├── cache.py         # async TTL cache
│   ├── currency_codes.py # static ISO → CBR id map (with dynamic fallback)
│   └── errors.py        # typed exception hierarchy
└── tests/               # respx-mocked unit tests + fixtures

Fontes de dados

  • https://www.cbr.ru/scripts/XML_daily.asp — cotações diárias de moedas.
  • https://www.cbr.ru/scripts/XML_dynamic.asp — séries históricas de moedas.
  • https://www.cbr.ru/scripts/XML_valFull.asp — consulta de códigos de moedas.
  • https://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx — serviço SOAP para a taxa básica do CBR.
  • https://www.cbr.ru/hd_base/infl/ — tabela mensal de inflação ano a ano.

Todos os endpoints são somente leitura e gratuitos.


Aviso legal

Este projeto não é afiliado ao Banco Central da Rússia de forma alguma. É um wrapper não oficial, de melhor esforço, sobre dados publicamente disponíveis. Use por sua conta e risco; os autores se isentam de qualquer responsabilidade pela atualidade, precisão ou aplicabilidade dos dados entregues por este servidor.

Se os esquemas HTML ou XML do CBR mudarem, ferramentas individuais podem parar de funcionar até que este pacote seja atualizado. Por favor, abra uma issue se notar uma regressão.


Licença

MIT — veja LICENSE.