MCP Dados Brasil

io.github.lucianoon由 GitHub 帳號 lucianoon 發布v0.6.0更新於 Oct 24, 2026

Servidor MCP com dados oficiais brasileiros: IBGE, Banco Central, INMET, Câmara e Senado.

概覽

AI 產生的概覽

此 MCP 伺服器讓 AI 助理能查詢巴西官方公開資料:IBGE 統計、央行指標、INMET 氣象,以及眾議院與參議院的立法資料。

可以做什麼
  • 查詢 IBGE 人口、GDP、市鎮資料及任意 SIDRA 彙總數據
  • 查詢央行序列(Selic、IPCA、CDI)、PTAX 匯率、貨幣清單與 Focus 市場預期
  • 列出 INMET 氣象站並取得逐小時觀測資料
  • 檢索眾議院議員、法案、表決、議程與立法進度
  • 取得參議員、立法議題與記名表決結果
適用情境
適合在助理對話中直接取得巴西官方統計、經濟指標、氣象觀測或立法資訊,不必自行撰寫 API 呼叫。適用於處理巴西公開資料的分析師、記者與研究人員。
執行需求
以 Python 套件形式透過 uvx 在本機執行(或從原始碼以 uv 執行);多數資料來源不需 API 金鑰。INMET 逐小時觀測資料需要向 INMET 取得的 INMET_TOKEN 環境變數。需要能連線官方 API 的網路。選用的 HTTP 模式使用 MCP_TRANSPORTE、MCP_HOST、MCP_PORTA 與 MCP_AUTH_TOKEN。
安裝前請注意
對公開 API 僅做唯讀查詢,但在 HTTP 模式下若未設定 MCP_AUTH_TOKEN 就沒有身分驗證:任何能連上該埠的人都能呼叫全部工具、消耗你的 API 額度並使用你的 INMET_TOKEN。純 HTTP 下權杖以明文傳輸,應使用 TLS 反向代理並避免將埠公開到網際網路。INMET_TOKEN 屬機密,勿放入共用設定。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 MCP Dados Brasil,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

mcp-dados-br

[CI] [Integração] [PyPI] [Python] [Licença: MIT]

English version

Servidor MCP (Model Context Protocol) que expõe dados públicos brasileiros como ferramentas para assistentes de IA: Claude Desktop, Claude Code, Cursor e qualquer cliente MCP.

Instalação

A forma mais simples, sem instalar nada permanentemente:

bash
uvx mcp-dados-br

Configuração no Claude Desktop:

json
{  "mcpServers": {    "dados-brasil": {      "command": "uvx",      "args": ["mcp-dados-br"]    }  }}

Ou no Claude Code:

bash
claude mcp add dados-brasil -- uvx mcp-dados-br

A partir do código-fonte

bash
git clone https://github.com/lucianoon/mcp-dados-brcd mcp-dados-bruv sync

Ferramentas disponíveis

FonteToolsDescrição
IBGE/SIDRAibge_populacao, ibge_pib, ibge_municipios, ibge_sidraPopulação, PIB, busca de municípios e consulta genérica a qualquer agregado SIDRA
Banco Centralbcb_serie, bcb_cambio, bcb_moedas, bcb_focusSéries SGS com atalhos nomeados (selic, ipca, cdi...), cotações PTAX, lista de moedas e expectativas do Boletim Focus
INMETinmet_estacoes, inmet_dadosLista de estações meteorológicas e dados horários observados (dados observacionais exigem token)
Câmara dos Deputadoscamara_deputados, camara_detalhes_deputado, camara_proposicoes, camara_votacoes_proposicao, camara_agenda, camara_tramitacaoDeputados, proposições, votações, agenda e tramitações
Senado Federalsenado_senadores, senado_materias, senado_votacoesSenadores em exercício, matérias legislativas e votações nominais com placar

Todas as fontes são APIs oficiais abertas — nenhuma chave de API necessária, exceto os dados horários do INMET (veja abaixo).

Configuração

Claude Desktop / Cursor

Adicione ao arquivo de configuração (claude_desktop_config.json ou mcp.json):

json
{  "mcpServers": {    "mcp-dados-br": {      "command": "uv",      "args": ["run", "--directory", "/caminho/para/mcp-dados-br", "mcp-dados-br"]    }  }}

Claude Code

bash
claude mcp add mcp-dados-br -- uv run --directory /caminho/para/mcp-dados-br mcp-dados-br

Token opcional do INMET

A listagem de estações (inmet_estacoes) é aberta. Já os dados horários observados (inmet_dados) exigem um token fornecido pelo INMET — solicite em portal.inmet.gov.br e configure a variável de ambiente no cliente MCP:

json
{  "mcpServers": {    "mcp-dados-br": {      "command": "uv",      "args": ["run", "--directory", "/caminho/para/mcp-dados-br", "mcp-dados-br"],      "env": { "INMET_TOKEN": "seu-token" }    }  }}

Sem o token, as demais 18 ferramentas funcionam normalmente.

Transporte streamable-http

Além do stdio padrão, o servidor pode rodar em modo HTTP remoto:

bash
MCP_TRANSPORTE=streamable-http MCP_PORTA=8000 mcp-dados-br

Aponte clientes para http://localhost:8000/mcp. Útil para Docker ou compartilhar o servidor na rede local. Por padrão o servidor escuta só em 127.0.0.1; defina MCP_HOST=0.0.0.0 para aceitar conexões de outras máquinas (a imagem Docker já faz isso).

VariávelPadrãoFunção
MCP_TRANSPORTEstdiostreamable-http liga o modo HTTP
MCP_HOST127.0.0.1Interface de escuta (0.0.0.0 na imagem Docker)
MCP_PORTA8000Porta HTTP
MCP_AUTH_TOKENvazioSe definido, exige Authorization: Bearer <token> em toda requisição

Autenticação (bearer opcional)

Risco: sem MCP_AUTH_TOKEN, o modo HTTP não tem autenticação. Escutando em 0.0.0.0 (como na imagem Docker), qualquer pessoa que alcance a porta pode chamar as 19 tools, consumir a sua cota nas APIs públicas e usar o seu INMET_TOKEN. O servidor registra um aviso no log quando sobe assim. Não publique a porta na internet sem token e prefira um proxy reverso com TLS na frente: sobre HTTP puro o token trafega em texto claro.

Gere um token longo e aleatório e passe-o ao servidor:

bash
export MCP_AUTH_TOKEN="$(python -c 'import secrets; print(secrets.token_urlsafe(32))')"MCP_TRANSPORTE=streamable-http mcp-dados-br

Requisições sem o cabeçalho, com outro esquema ou com token diferente recebem 401 com WWW-Authenticate: Bearer. A comparação usa secrets.compare_digest (tempo constante). No cliente, envie o cabeçalho, por exemplo no Claude Code:

bash
claude mcp add --transport http dados-brasil http://localhost:8000/mcp \  --header "Authorization: Bearer $MCP_AUTH_TOKEN"

Em stdio o token não se aplica: o processo só fala com o cliente que o iniciou.

Docker

bash
docker build -t mcp-dados-br .docker run -p 8000:8000 \  -e MCP_AUTH_TOKEN="$MCP_AUTH_TOKEN" \  -e INMET_TOKEN=seu-token \  mcp-dados-br

Para uso só na própria máquina, publique a porta apenas no loopback: docker run -p 127.0.0.1:8000:8000 mcp-dados-br.

Exemplos de uso

Depois de configurar, pergunte diretamente ao assistente:

  • "Qual foi o IPCA dos últimos 6 meses?"
  • "O que o mercado espera para a Selic nas próximas reuniões?" (Boletim Focus)
  • "Quem são os deputados federais de Minas Gerais do partido X?"
  • "Qual a população de São Paulo em 2022? E o PIB?"
  • "Como está o dólar PTAX nos últimos dias?"
  • "Busque projetos de lei de 2025 sobre saúde mental"
  • "O que está na agenda da Câmara esta semana?"
  • "Como o Senado votou a PEC X? Qual o placar?"
  • "Quem são os senadores de Minas Gerais?"
  • "Quais estações automáticas do INMET existem no Amazonas?"

Desenvolvimento

bash
uv sync --devuv run pytest              # suíte unitária (mocks)uv run pytest -m integration   # consulta as APIs reaisuv run ruff check .uv run mypy src

Logs de depuração: configure MCP_LOG_LEVEL=DEBUG no cliente MCP. Para contribuir, leia o CONTRIBUTING.md.

Arquitetura

src/mcp_dados_br/├── server.py        # Servidor MCP, registro das tools e escolha do transporte├── auth.py          # Middleware ASGI de autenticação bearer (modo HTTP)├── validacao.py     # Validação dos argumentos das tools (UF, moeda, datas, limites)├── saida.py         # Resultado com texto + structuredContent├── http.py          # Cliente HTTP compartilhado, retry e tratamento de erros├── payload.py       # Leitura defensiva das respostas das APIs (fonte e campo no erro)├── cache.py         # Cache TTL em memória para as respostas das APIs└── tools/    ├── ibge.py      # SIDRA v3 + localidades v1    ├── bcb.py       # SGS + Olinda (PTAX e Boletim Focus)    ├── inmet.py     # Estações e dados observacionais    ├── camara.py    # Dados Abertos da Câmara v2    └── senado.py    # Dados Abertos do Senado (LegisSaber)
  • Dois transportes: stdio (padrão dos clientes desktop) e streamable-http (Docker/rede), este com autenticação bearer opcional via MCP_AUTH_TOKEN
  • Validação de entrada antes de montar qualquer URL: UF entre as 27 siglas, moeda ISO 4217 de 3 letras, datas ISO, códigos IBGE/SIDRA numéricos, IDs positivos e limites de dias/ultimas. Os limites também aparecem no inputSchema das tools, e o erro chega ao cliente MCP dizendo o que foi recebido e o que é aceito
  • Cache TTL de 10 minutos por requisição idêntica, com chave inequívoca (JSON ordenado de URL e parâmetros)
  • Retry automático em falhas de rede e em 429/502/503/504
  • Mudança de formato numa API upstream (campo renomeado, tipo trocado) vira erro da tool (isError: true) com a fonte e o campo, ex.: Resposta inesperada de BCB/PTAX: campo 'cotacaoCompra' ausente
  • Saídas formatadas como texto legível pelo modelo; bcb_serie, bcb_cambio e camara_deputados também devolvem structuredContent com outputSchema (datas ISO, valores numéricos), mantendo o texto como fallback
  • User-Agent com a versão instalada do pacote

Roadmap

  • v0.2 — INMET (estações + observacional com token) e Boletim Focus
  • v0.3 — Agenda da Câmara, transporte streamable-http e testes de integração agendados no CI
  • v0.4 — Tramitações, atalhos nomeados no SGS, imagem Docker
  • v0.5 — Publicação no PyPI (uvx mcp-dados-br), MCP Registry e Smithery
  • v0.6 — Validação de entrada, autenticação bearer no modo HTTP e saída estruturada
  • DOU: busca no Diário Oficial da União (aguardando API pública estável)
  • TSE: resultados eleitorais

Licença

MIT

來源:README.md,提交 d530033

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.6.0最新Sep 23, 2026
  2. v0.5.2Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分