
mcp-brasil-public-apis
MCP Server connecting AI agents to 28 Brazilian public APIs covering economy, legislation, transparency, judiciary, elections, environment, health, and more
- Installs
- 873
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/reason-machines/trending-skills --skill mcp-brasil-public-apis- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads mcp-brasil-public-apis automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
mcp-brasil: MCP Server for 28 Brazilian Public APIs
Skill by ara.so — Daily 2026 Skills collection.
mcp-brasil is a Model Context Protocol (MCP) server that exposes 213 tools, 55 resources, and 45 prompts across 28 Brazilian public APIs — letting AI agents (Claude, GPT, Copilot, Cursor, etc.) query government data in natural language. 26 APIs require no key; only 2 need free registrations.
Installation
# pip
pip install mcp-brasil
# uv (recommended)
uv add mcp-brasil
Quick Setup by Client
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"mcp-brasil": {
"command": "uvx",
"args": ["--from", "mcp-brasil", "python", "-m", "mcp_brasil.server"],
"env": {
"TRANSPARENCIA_API_KEY": "$TRANSPARENCIA_API_KEY",
"DATAJUD_API_KEY": "$DATAJUD_API_KEY"
}
}
}
}
VS Code / Cursor
Create .vscode/mcp.json in your project root:
{
"servers": {
"mcp-brasil": {
"command": "uvx",
"args": ["--from", "mcp-brasil", "python", "-m", "mcp_brasil.server"],
"env": {
"TRANSPARENCIA_API_KEY": "$TRANSPARENCIA_API_KEY",
"DATAJUD_API_KEY": "$DATAJUD_API_KEY"
}
}
}
}
Claude Code CLI
claude mcp add mcp-brasil -- uvx --from mcp-brasil python -m mcp_brasil.server
HTTP Transport (other clients)
fastmcp run mcp_brasil.server:mcp --transport http --port 8000
# Server at http://localhost:8000/mcp
Environment Variables
Create a .env file or export in your shell:
# Optional — 26 other APIs work without any keys
TRANSPARENCIA_API_KEY=your_key_here # https://portaldatransparencia.gov.br/api-de-dados/cadastrar-email
DATAJUD_API_KEY=your_key_here # https://datajud-wiki.cnj.jus.br/api-publica/acesso
# Tuning
MCP_BRASIL_TOOL_SEARCH=bm25 # bm25 | code_mode | none (default: bm25)
MCP_BRASIL_HTTP_TIMEOUT=30.0 # seconds
MCP_BRASIL_HTTP_MAX_RETRIES=3
API Coverage (28 Features, 213 Tools)
| Category | Feature Key | API | Tools |
|---|---|---|---|
| Economic | ibge | IBGE — states, municipalities, statistics | 9 |
| Economic | bacen | Banco Central — Selic, IPCA, FX, PIB, 190+ series | 9 |
| Legislative | camara | Câmara dos Deputados — deputies, bills, votes, expenses | 10 |
| Legislative | senado | Senado Federal — senators, bills, votes, committees | 26 |
| Transparency | transparencia | Portal da Transparência — contracts, spending, sanctions | 18 |
| Transparency | tcu | TCU — rulings, ineligible bidders | 8 |
| TCE (states) | tce_sp/rj/rs/sc/pe/ce/rn/pi/to | 9 State audit courts | 39 |
| Judiciary | datajud | DataJud/CNJ — court cases, movements | 7 |
| Judiciary | jurisprudencia | STF, STJ, TST — rulings, precedents | 6 |
| Electoral | tse | TSE — elections, candidates, campaign finance | 15 |
| Environment | inpe | INPE — wildfires, deforestation | 4 |
| Environment | ana | ANA — hydrological stations, reservoirs | 3 |
| Health | saude | CNES/DataSUS — facilities, professionals, beds | 4 |
| Oceanography | tabua_mares | Tide tables for Brazilian ports | 7 |
| Procurement | pncp | PNCP — public contracts (Lei 14.133/2021) | 6 |
| Procurement | dadosabertos | ComprasNet/SIASG | 8 |
| Utilities | brasilapi | CEP, CNPJ, DDD, banks, FX, FIPE, PIX | 16 |
| Utilities | dados_abertos | dados.gov.br — dataset catalog | 4 |
| Utilities | diario_oficial | Official gazettes from 5,000+ cities | 4 |
| Utilities | transferegov | Parliamentary PIX transfers | 5 |
| AI Agent | redator | Draft official documents with real data | 5 |
Meta-Tools (Root Server)
Four special tools are always available regardless of feature:
| Tool | Description |
|---|---|
listar_features | List all 28 features with descriptions |
recomendar_tools | BM25 search — get relevant tools for a query |
planejar_consulta | Build multi-API execution plan for a complex query |
executar_lote | Run multiple tool calls in parallel in one request |
Development Commands
git clone https://github.com/jxnxts/mcp-brasil.git
cd mcp-brasil
make dev # Install all dependencies (prod + dev)
make test # Run all tests
make test-feature F=ibge # Test a single feature
make lint # Lint + format check
make ruff # Auto-fix lint + format
make types # mypy strict mode
make ci # lint + types + test (full CI)
make run # Start server (stdio transport)
make serve # Start server (HTTP :8000)
make inspect # List all tools/resources/prompts
Architecture: Package by Feature + Auto-Registry
src/mcp_brasil/
├── server.py # Auto-discovers features — never edit manually
├── _shared/ # Shared HTTP client, rate limiting, BM25
├── data/ # 27 API features
│ ├── ibge/
│ │ ├── __init__.py # exports FEATURE_META
│ │ ├── server.py # FastMCP instance (exports `mcp`)
│ │ ├── tools.py # Tool implementations
│ │ ├── client.py # Async HTTP via httpx
│ │ ├── schemas.py # Pydantic v2 models
│ │ └── constants.py # Base URLs, codes
│ ├── bacen/
│ └── ...
└── agentes/ # Intelligent agent features
└── redator/
Auto-registry: The root server.py scans for FEATURE_META in __init__.py and mcp: FastMCP in server.py — no manual registration needed.
Adding a New Feature
mkdir src/mcp_brasil/data/myfeature
touch src/mcp_brasil/data/myfeature/{__init__.py,server.py,tools.py,client.py,schemas.py,constants.py}
__init__.py — Required export
from mcp_brasil._shared.types import FeatureMeta
FEATURE_META = FeatureMeta(
name="myfeature",
description="Short description of the API",
tags=["category"],
requires_key=False,
)
server.py — Required export
from fastmcp import FastMCP
from .tools import register_tools
mcp = FastMCP("myfeature")
register_tools(mcp)
client.py — Async HTTP pattern
import httpx
from mcp_brasil._shared.http import get_client
BASE_URL = "https://api.example.gov.br"
async def fetch_data(endpoint: str, params: dict) -> dict:
async with get_client() as client:
response = await client.get(f"{BASE_URL}/{endpoint}", params=params)
response.raise_for_status()
return response.json()
schemas.py — Pydantic v2 models
from pydantic import BaseModel, Field
from typing import Optional
class MyResult(BaseModel):
id: str
name: str
value: Optional[float] = Field(None, description="Numeric value")
tools.py — Tool registration
from fastmcp import FastMCP
from .client import fetch_data
from .schemas import MyResult
def register_tools(mcp: FastMCP) -> None:
@mcp.tool(description="Busca dados do endpoint X")
async def buscar_dados(
codigo: str,
ano: int = 2024,
) -> list[MyResult]:
"""Retorna dados do endpoint X para o código fornecido."""
raw = await fetch_data("endpoint-x", {"codigo": codigo, "ano": ano})
return [MyResult(**item) for item in raw.get("data", [])]
tests/data/myfeature/test_tools.py — Test pattern
import pytest
from unittest.mock import AsyncMock, patch
from mcp_brasil.data.myfeature.tools import register_tools
from fastmcp import FastMCP
@pytest.fixture
def mcp():
server = FastMCP("test-myfeature")
register_tools(server)
return server
@pytest.mark.asyncio
async def test_buscar_dados(mcp):
mock_response = {"data": [{"id": "001", "name": "Test", "value": 42.0}]}
with patch("mcp_brasil.data.myfeature.client.fetch_data", new_callable=AsyncMock) as mock:
mock.return_value = mock_response
# call via mcp tool invocation or directly
from mcp_brasil.data.myfeature.tools import buscar_dados
result = await buscar_dados(codigo="001")
assert len(result) == 1
assert result[0].name == "Test"
Common Usage Patterns
Pattern 1: Cross-reference with planejar_consulta
Ask the agent to plan a multi-API query:
"Crie um plano de consulta para analisar o deputado federal João Silva:
gastos, votações, proposições e financiamento de campanha."
The planejar_consulta meta-tool returns a structured execution plan combining camara, tse, and transparencia tools.
Pattern 2: Parallel execution with executar_lote
"Execute em paralelo: taxa Selic atual, IPCA dos últimos 12 meses,
e câmbio USD/BRL de hoje."
executar_lote fires all three bacen tool calls concurrently.
Pattern 3: Smart discovery with recomendar_tools
"Quais tools devo usar para investigar contratos suspeitos em licitações municipais?"
BM25 search filters the 213 tools to return only relevant ones (e.g., tce_sp, pncp, tcu, transparencia).
Pattern 4: Direct tool calls in code
import asyncio
from mcp_brasil.data.bacen.tools import buscar_serie_temporal
from mcp_brasil.data.ibge.tools import buscar_municipios
async def main():
# Selic rate last 12 months
selic = await buscar_serie_temporal(codigo="432", ultimos=12)
# All municipalities in São Paulo state
municipios = await buscar_municipios(uf="SP")
print(f"Selic entries: {len(selic)}")
print(f"SP municipalities: {len(municipios)}")
asyncio.run(main())
Pattern 5: Using brasilapi for CNPJ/CEP lookup
from mcp_brasil.data.brasilapi.tools import consultar_cnpj, consultar_cep
async def lookup():
empresa = await consultar_cnpj(cnpj="00000000000191") # Banco do Brasil
endereco = await consultar_cep(cep="01310100") # Av. Paulista
Natural Language Query Examples
Once the server is connected to your AI client:
# Economic analysis
"Qual a tendência da taxa Selic nos últimos 12 meses? Compare com IPCA."
# Legislative research
"Quais projetos de lei sobre IA tramitaram na Câmara em 2024? Quem foram os autores?"
# Transparency / anti-corruption
"Quais os 10 maiores contratos do governo federal em 2024?"
# Cross-state comparison
"Compare gastos per capita com saúde em SP e MG cruzando TCE-SP e IBGE."
# Judiciary
"Busque processos sobre licitação irregular no TCU. Quais as penalidades?"
# Electoral finance
"Quais os maiores doadores da campanha do candidato X?"
# Environment
"Quantos focos de queimada foram registrados no Cerrado em agosto 2024?"
# Document generation (redator feature)
"Redija um ofício solicitando informações sobre o contrato 001/2024
com dados reais do Portal da Transparência."
Troubleshooting
Server not starting
# Verify installation
python -m mcp_brasil.server --help
# Check uvx finds the package
uvx --from mcp-brasil python -c "import mcp_brasil; print(mcp_brasil.__version__)"
API returning 401/403
transparenciaanddatajudsilently degrade without keys — setTRANSPARENCIA_API_KEYandDATAJUD_API_KEYfor full access- Keys are free: Transparência | DataJud
Too many tools visible (context overflow)
Set MCP_BRASIL_TOOL_SEARCH=bm25 (default) — only tools relevant to the current query are surfaced. Use code_mode to expose all tools, or none to disable filtering.
Timeout errors on slow government APIs
MCP_BRASIL_HTTP_TIMEOUT=60.0 # increase timeout
MCP_BRASIL_HTTP_MAX_RETRIES=5 # increase retries
Feature not auto-discovered
Ensure your feature folder exports both:
FEATURE_METAin__init__.pymcp: FastMCPinstance inserver.py
Run make inspect to verify your feature appears in the tool list.
Running tests for a specific feature
make test-feature F=bacen
make test-feature F=transparencia
Key Design Principles
- Async everywhere —
httpxasync client, all tools areasync def - Pydantic v2 — all API responses validated through typed schemas
- Rate limiting with backoff — built into
_shared/http.py, transparent to feature code - Zero manual registration — add a folder → it's discovered automatically
- BM25 smart filtering — prevents context window bloat from 213 tools
- Graceful degradation — APIs requiring keys still work (with reduced limits) without them
FAQ
What does the mcp-brasil-public-apis skill do?
MCP Server connecting AI agents to 28 Brazilian public APIs covering economy, legislation, transparency, judiciary, elections, environment, health, and more
How do I install mcp-brasil-public-apis?
Run npx skills add https://github.com/reason-machines/trending-skills --skill mcp-brasil-public-apis in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/mcp-brasil-public-apis/ (personal) or .claude/skills/mcp-brasil-public-apis/ (project).
Which AI agents can use mcp-brasil-public-apis?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is mcp-brasil-public-apis safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains mcp-brasil-public-apis?
It is published by reason-machines in reason-machines/trending-skills. It has 873 recorded installs.
More from reason-machines/trending-skills
openclaw-control-center
reason-machines/trending-skills
Local-first, security-first control center for OpenClaw agents — visibility dashboard with readonly defaults, token attribution, collaboration tracing, and safe write operations.
inkos-multi-agent-novel-writing
reason-machines/trending-skills
Multi-agent CLI system for autonomous novel writing, auditing, and revision with human review gates
claude-hud-statusline
reason-machines/trending-skills
A Claude Code plugin that displays a real-time HUD showing context usage, active tools, running agents, and todo progress in your terminal statusline.
understand-anything-knowledge-graph
reason-machines/trending-skills
Turn any codebase into an interactive knowledge graph using Claude Code skills — explore, search, and ask questions about any project visually.
agency-agents-ai-specialists
reason-machines/trending-skills
A collection of specialized AI agent personalities for Claude Code, Cursor, Aider, Windsurf, and other AI coding tools — covering engineering, design, marketing, sales, and more.
agent-browser-automation
reason-machines/trending-skills
Headless browser automation CLI for AI agents using native Rust binary with Chrome DevTools Protocol
Popular ai & agents skills
google-agents-cli-publish
google/agents-cli
This skill should be used when the user wants to "publish an agent", "publish my ADK agent", "register an agent with Gemini", "publish to Gemini" (formerly Gemini Enterprise), or needs guidance on the agents-cli publish gemini command. Also use when the user wants to "manage agents in Agent Registry", "list/update/delete registered agents", or "register an MCP server". Covers ADK vs A2A registration modes, programmatic and interactive usage, flag reference, auto-detection from deployment metadata, Agent Registry fleet management, and troubleshooting. Part of the agents-cli skills suite. Do NOT use for deployment (use google-agents-cli-deploy).
google-agents-cli-eval
google/agents-cli
This skill should be used when the user wants to "run an evaluation", "evaluate my agent", "evaluate my ADK agent", "write an eval dataset", "analyze eval failures", "compare eval results", "optimize agent", or needs guidance on the Gemini platform eval methodology and the Quality Flywheel. Covers eval metrics, dataset schema, LLM-as-judge scoring, and common failure causes. Applies to any agents-cli project, whatever framework the agent is written in. Do NOT use for agent API code patterns (ADK: use google-agents-cli-adk-code), deployment (use google-agents-cli-deploy), or project scaffolding (use google-agents-cli-scaffold).
skill-creator
anthropics/skills
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
codex-pet
prime-skills/runcomfy-agent-skills
Codex Pet generator on RunComfy. Build a Codex-compatible Codex Pet spritesheet.webp + pet.json from a single reference image, drop it into ${CODEXHOME:-$HOME/.codex}/pets/ / and Codex picks it up as a custom Codex Pet next to the 8 built-ins. This skill produces the exact Codex Pet atlas Codex expects (1536x1872 PNG/WebP, 8 cols x 9 rows, 192x208 cells, 9 animation states — idle, running-right, running-left, waving, jumping, failed, waiting, running, review). Calls OpenAI GPT Image 2 edit ONCE via the local RunComfy CLI as runcomfy run openai/gpt-image-2/edit to produce a canonical Codex Pet pose, then assembles all 9 animation rows programmatically with ImageMagick micro-transforms — no Codex Pro, no $imagegen, no OPENAIAPIKEY required, only RUNCOMFYTOKEN. Triggers on "codex pet", "create codex pet", "make codex pet", "hatch codex pet", "/hatch image", "desktop pet codex", "codex pets", "spritesheet.webp", or any explicit ask to build a custom pet for OpenAI Codex.
full-output-enforcement
leonxlnx/taste-skill
Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.
executing-plans
obra/superpowers
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available