Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Servidor MCP com dados oficiais brasileiros: IBGE, Banco Central, INMET, Câmara e Senado.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
INMET_TOKEN, MCP_LOG_LEVELค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"dados-br": {
"command": "uvx",
"args": [
"mcp-dados-br"
],
"env": {
"INMET_TOKEN": "ใส่ค่าของคุณ",
"MCP_LOG_LEVEL": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add dados-br --env INMET_TOKEN='ใส่ค่าของคุณ' --env MCP_LOG_LEVEL='ใส่ค่าของคุณ' -- uvx mcp-dados-brเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"dados-br": {
"command": "uvx",
"args": [
"mcp-dados-br"
],
"env": {
"INMET_TOKEN": "ใส่ค่าของคุณ",
"MCP_LOG_LEVEL": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"dados-br": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-dados-br"
],
"env": {
"INMET_TOKEN": "ใส่ค่าของคุณ",
"MCP_LOG_LEVEL": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
MCP_LOG_LEVEL envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub lucianoon ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: INMET_TOKEN
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.6.0) เข้า registry 2 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Alion: company, startup and market intelligence
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Companies, jobs, pay and people; check counterparties, register agents, write to companies.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
*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.
A forma mais simples, sem instalar nada permanentemente:
uvx mcp-dados-br
Configuração no Claude Desktop:
{
"mcpServers": { "dados-brasil": { "command": "uvx", "args": ["mcp-dados-br"] } } }
Ou no Claude Code:
claude mcp add dados-brasil -- uvx mcp-dados-br
git clone https://github.com/lucianoon/mcp-dados-br
cd mcp-dados-br uv sync
| Fonte | Tools | Descrição |
|---|---|---|
| IBGE/SIDRA | ibge_populacao, ibge_pib, ibge_municipios, ibge_sidra | População, PIB, busca de municípios e consulta genérica a qualquer agregado SIDRA |
| Banco Central | bcb_serie, bcb_cambio, bcb_moedas, bcb_focus | Séries SGS com atalhos nomeados (selic, ipca, cdi...), cotações PTAX, lista de moedas e expectativas do Boletim Focus |
| INMET | inmet_estacoes, inmet_dados | Lista de estações meteorológicas e dados horários observados (dados observacionais exigem token) |
| Câmara dos Deputados | camara_deputados, camara_detalhes_deputado, camara_proposicoes, camara_votacoes_proposicao, camara_agenda, camara_tramitacao | Deputados, proposições, votações, agenda e tramitações |
| Senado Federal | senado_senadores, senado_materias, senado_votacoes | Senadores 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).
Adicione ao arquivo de configuração (claude_desktop_config.json ou mcp.json):
{
"mcpServers": { "mcp-dados-br": { "command": "uv", "args": ["run", "--directory", "/caminho/para/mcp-dados-br", "mcp-dados-br"] } } }
claude mcp add mcp-dados-br -- uv run --directory /caminho/para/mcp-dados-br mcp-dados-br
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:
{
"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.
Além do stdio padrão, o servidor pode rodar em modo HTTP remoto:
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ável | Padrão | Função |
|---|---|---|
MCP_TRANSPORTE | stdio | streamable-http liga o modo HTTP |
MCP_HOST | 127.0.0.1 | Interface de escuta (0.0.0.0 na imagem Docker) |
MCP_PORTA | 8000 | Porta HTTP |
MCP_AUTH_TOKEN | vazio | Se definido, exige Authorization: Bearer em toda requisição |
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:
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:
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 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.
Depois de configurar, pergunte diretamente ao assistente:
uv sync --dev
uv run pytest # suíte unitária (mocks) uv run pytest -m integration # consulta as APIs reais uv 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.
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)
MCP_AUTH_TOKENdias/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 é aceito429/502/503/504isError: true) com a fonte e o campo, ex.: Resposta inesperada de BCB/PTAX: campo 'cotacaoCompra' ausentebcb_serie, bcb_cambio e camara_deputados também devolvem structuredContent com outputSchema (datas ISO, valores numéricos), mantendo o texto como fallbackuvx mcp-dados-br), MCP Registry e SmitheryMIT