Skip to main content
Glama
gvc2000

MCP Câmara BR

by gvc2000

🏛️ MCP Câmara BR

Servidor MCP (Model Context Protocol) completo para a API de Dados Abertos da Câmara dos Deputados do Brasil.

Visão Geral

O mcp-camara-br é um servidor MCP que expõe todas as funcionalidades da API de Dados Abertos da Câmara dos Deputados através de tools tipadas, validadas e otimizadas para uso com Large Language Models (LLMs).

Características

  • Cobertura Completa - Mapeia os principais endpoints da API da Câmara

  • Validação Rigorosa - Inputs validados com Zod

  • Cache Inteligente - Sistema de cache em camadas com TTL diferenciado

  • Rate Limiting - Proteção contra sobrecarga da API

  • Circuit Breaker - Resiliência a falhas

  • Métricas - Observabilidade completa (Prometheus-ready)

  • Type-Safe - 100% TypeScript

  • Docker Ready - Containerizado e pronto para deploy

🚀 Início Rápido (5 minutos)

1. Instalar dependências

npm install

2. Compilar

npm run build

3. Configurar no Claude Desktop

Edite o arquivo de configuração:

macOS:

~/Library/Application Support/Claude/claude_desktop_config.json

Windows:

%APPDATA%\Claude\claude_desktop_config.json

Linux:

~/.config/Claude/claude_desktop_config.json

Adicione a configuração:

macOS/Linux:

{
  "mcpServers": {
    "camara-br": {
      "command": "node",
      "args": ["/caminho/completo/para/AgenteCidadaoMCP/dist/server.js"]
    }
  }
}

Windows (use barras duplas

{
  "mcpServers": {
    "camara-br": {
      "command": "node",
      "args": ["C:\\Users\\SeuUsuario\\AgenteCidadaoMCP\\dist\\server.js"]
    }
  }
}

⚠️ Importante para Windows: Use barras duplas ( nos caminhos. Veja o Guia Windows para mais detalhes.

4. Reiniciar Claude Desktop

Feche e abra o Claude Desktop novamente.

Requisitos

  • Node.js >= 20.0.0

  • npm ou yarn

📖 Guias de Instalação Detalhados

Escolha o guia apropriado para seu sistema operacional:

Instalação Completa

# Clonar o repositório
git clone https://github.com/gvc2000/AgenteCidadaoMCP.git
cd AgenteCidadaoMCP

# Instalar dependências
npm install

# Copiar arquivo de configuração
cp .env.example .env

# Build
npm run build

# Executar
npm start

Uso com Docker

# Build da imagem
docker-compose build

# Executar
docker-compose up -d

# Ver logs
docker-compose logs -f

# Parar
docker-compose down

Uso via HTTP (API REST)

O servidor também pode ser executado em modo HTTP, expondo uma API REST:

# Executar servidor HTTP
npm run start:http

# Ou em desenvolvimento com hot-reload
npm run dev:http

Endpoints HTTP

  • GET / - Informações da API

  • GET /api/tools - Lista todas as ferramentas disponíveis

  • POST /api/tools/:toolName - Executa uma ferramenta

  • GET /health - Health check

  • GET /metrics - Métricas Prometheus

  • GET /metrics/json - Métricas em JSON

Exemplo de Uso HTTP

# Buscar deputados
curl -X POST http://localhost:9090/api/tools/buscar_deputados \
  -H "Content-Type: application/json" \
  -d '{"uf":"SP","pagina":1,"itens":10}'

Configuração

Edite o arquivo .env para personalizar as configurações:

# API Configuration
API_BASE_URL=https://dadosabertos.camara.leg.br/api/v2

# Cache
CACHE_ENABLED=true
CACHE_TTL_SECONDS=600

# Rate Limiting
RATE_LIMIT_ENABLED=true
RATE_LIMIT_PER_MINUTE=100

# Metrics
METRICS_ENABLED=true
METRICS_PORT=9090

🛠️ Tools Disponíveis (57 tools)

Tools de Ajuda

  • sugerir_ferramentas - Sugere quais tools usar para uma consulta

  • diagnosticar_consulta - Analisa objetivo e sugere fluxo completo de tools

Deputados (9)

  • buscar_deputados - Busca deputados por nome, UF, partido, etc.

  • detalhar_deputado - Informações detalhadas de um deputado

  • despesas_deputado - Despesas da cota parlamentar

  • discursos_deputado - Discursos proferidos

  • eventos_deputado - Eventos que participou

  • frentes_deputado - Frentes parlamentares das quais é membro

  • ocupacoes_deputado - Histórico de ocupações na Câmara

  • orgaos_deputado - Órgãos dos quais é membro

  • profissoes_deputado - Profissões declaradas

Proposições (7)

  • buscar_proposicoes - Busca proposições legislativas (PLs, PECs, MPs, etc.)

  • detalhar_proposicao - Informações detalhadas de uma proposição

  • autores_proposicao - Lista os autores de uma proposição

  • tramitacoes_proposicao - Histórico de tramitação

  • votacoes_proposicao - Votações da proposição

  • relacionadas_proposicao - Proposições relacionadas

  • temas_proposicao - Temas/assuntos da proposição

Votações (5)

  • buscar_votacoes - Busca votações por período ou proposição

  • detalhar_votacao - Resultado geral de uma votação

  • votos_votacao - Voto individual de cada deputado

  • orientacoes_votacao - Orientação dos partidos

  • ultimas_votacoes - Votações mais recentes

Eventos (6)

  • buscar_eventos - Busca reuniões e sessões por período

  • detalhar_evento - Informações de um evento

  • deputados_evento - Deputados presentes

  • pauta_evento - Pauta do evento

  • votacoes_evento - Votações realizadas

  • orgaos_evento - Órgãos participantes

Órgãos (5)

  • buscar_orgaos - Busca comissões e órgãos

  • detalhar_orgao - Informações de um órgão

  • membros_orgao - Composição atual

  • eventos_orgao - Eventos do órgão

  • votacoes_orgao - Votações do órgão

Partidos (4)

  • buscar_partidos - Lista partidos

  • detalhar_partido - Informações de um partido

  • membros_partido - Deputados do partido

  • lideres_partido - Liderança do partido

Frentes Parlamentares (3)

  • buscar_frentes - Busca frentes parlamentares

  • detalhar_frente - Informações de uma frente

  • membros_frente - Membros da frente

Blocos (2)

  • buscar_blocos - Busca blocos partidários

  • detalhar_bloco - Informações de um bloco

Legislaturas (3)

  • buscar_legislaturas - Lista legislaturas

  • detalhar_legislatura - Informações de uma legislatura

  • mesa_legislatura - Mesa Diretora

Referências (5)

  • situacoes_proposicao - Situações possíveis de proposições

  • tipos_proposicao - Tipos de proposições (PL, PEC, etc.)

  • tipos_orgao - Tipos de órgãos da Câmara

  • tipos_evento - Tipos de eventos

  • ufs - Unidades Federativas

Análises (6)

  • analise_presenca - Taxa de presença de deputados

  • ranking_proposicoes - Ranking de proposições

  • analise_despesas_partido - Despesas agregadas por partido

  • comparativo_votacoes - Compara votações

  • timeline_tramitacao - Timeline de tramitação

  • exportar_dados - Exporta dados para CSV/JSON

💬 Exemplos de Uso

Buscar Deputados de SP do PT

Liste deputados do estado de São Paulo no partido PT

Ou via JSON:

{
  "tool": "buscar_deputados",
  "arguments": {
    "uf": "SP",
    "partido": "PT",
    "pagina": 1,
    "itens": 10
  }
}

Buscar Proposições sobre Educação

Busque projetos de lei sobre educação apresentados em 2024

Ou via JSON:

{
  "tool": "buscar_proposicoes",
  "arguments": {
    "keywords": "educação",
    "ano": 2024,
    "pagina": 1,
    "itens": 20
  }
}

Frentes Parlamentares de um Deputado

Quais frentes parlamentares o deputado Guilherme Boulos participa?

Análise Completa de um Deputado

Me conte sobre a deputada Tabata Amaral:
- Suas frentes parlamentares
- Despesas de janeiro de 2024
- Discursos recentes sobre educação

Despesas de um Deputado

Mostre as despesas do deputado Guilherme Boulos em janeiro de 2024

Ou via JSON (usando ID):

{
  "tool": "despesas_deputado",
  "arguments": {
    "id": 220000,
    "ano": 2024,
    "mes": 1
  }
}

Monitoramento

Métricas

O servidor expõe métricas no formato Prometheus:

# Métricas Prometheus
curl http://localhost:9090/metrics

# Métricas JSON
curl http://localhost:9090/metrics/json

# Health check
curl http://localhost:9090/health

Logs

Os logs são estruturados em JSON (padrão) ou formato pretty para desenvolvimento:

# Ativar logs pretty
LOG_FORMAT=pretty npm start

📁 Estrutura do Projeto

AgenteCidadaoMCP/
├── src/                          # Código-fonte do MCP Server
│   ├── server.ts                 # Entry point
│   ├── mcp.ts                    # MCP server setup
│   ├── config.ts                 # Configurações
│   │
│   ├── api/                      # Cliente HTTP e comunicação
│   │   ├── client.ts             # Cliente HTTP com retry
│   │   └── normalizers.ts        # Normalização de dados
│   │
│   ├── core/                     # Sistemas core
│   │   ├── cache.ts              # Sistema de cache LRU
│   │   ├── errors.ts             # Classes de erro customizadas
│   │   ├── logging.ts            # Logs estruturados (Pino)
│   │   ├── metrics.ts            # Métricas Prometheus
│   │   ├── rate-limiter.ts       # Rate limiting (token bucket)
│   │   ├── circuit-breaker.ts    # Circuit breaker pattern
│   │   ├── queue.ts              # Fila de requisições
│   │   └── schemas.ts            # Schemas Zod compartilhados
│   │
│   ├── tools/                    # MCP Tools organizados por categoria
│   │   ├── deputados/            # 10 tools sobre deputados
│   │   ├── proposicoes/          # 8 tools sobre proposições
│   │   ├── votacoes/             # 5 tools sobre votações
│   │   ├── orgaos/               # 6 tools sobre órgãos
│   │   ├── eventos/              # 7 tools sobre eventos
│   │   ├── partidos/             # 5 tools sobre partidos
│   │   ├── legislaturas/         # 4 tools sobre legislaturas
│   │   ├── frentes/              # 4 tools sobre frentes
│   │   ├── blocos/               # 3 tools sobre blocos
│   │   ├── referencias/          # 6 tools de referência
│   │   └── analises/             # 7 tools de análise e export
│   │
│   └── utils/                    # Utilitários
│       ├── aggregators.ts        # Agregação de dados
│       ├── currency.ts           # Formatação de moeda
│       ├── date.ts               # Utilitários de data
│       └── sanitizers.ts         # Sanitização de inputs
│
├── frontend/                     # Interface Web
│   ├── current/                  # Versão atual (v4)
│   │   ├── index.html           # Interface principal
│   │   ├── admin-agente-cidadao.html
│   │   ├── demo-agente-cidadao.html
│   │   └── login-agente-cidadao.html
│   ├── archive/                  # Versões anteriores
│   └── README.md                 # Documentação do frontend
│
├── docs/                         # Documentação organizada
│   ├── guides/                   # Guias de instalação e uso
│   │   ├── GUIA_INSTALACAO_USO.md
│   │   └── INICIO_RAPIDO.md
│   ├── examples/                 # Exemplos práticos
│   │   ├── EXEMPLOS_PRATICOS.md
│   │   └── EXEMPLOS_TESTES.md
│   ├── testing/                  # Planos e relatórios de testes
│   ├── process/                  # Artefatos de processo
│   ├── specs/                    # Especificações técnicas
│   │   └── mcp-camara-br-especificacao-completa.md
│   └── README.md                 # Índice da documentação
│
├── scripts/                      # Scripts utilitários
│   └── healthcheck.sh           # Health check para deploy
│
├── .github/                      # GitHub Actions
│   └── workflows/
│       ├── ci.yml               # CI/CD pipeline
│       └── release.yml          # Release automation
│
├── dist/                         # Código compilado (gerado)
│
├── .env.example                  # Template de variáveis de ambiente
├── .dockerignore                 # Arquivos ignorados no Docker build
├── .npmignore                    # Arquivos ignorados no npm publish
├── Dockerfile                    # Multi-stage Docker build
├── docker-compose.yml            # Docker Compose config
├── package.json                  # Configuração npm
├── tsconfig.json                 # Configuração TypeScript
│
├── README.md                     # Este arquivo
├── CONTRIBUTING.md               # Guia de contribuição
├── CLAUDE.md                     # Guia para assistentes de IA
└── LICENSE                       # Licença MIT

Desenvolvimento

# Modo desenvolvimento com watch
npm run dev

# Testes
npm test

# Cobertura de testes
npm run test:coverage

# Linting
npm run lint

# Formatação
npm run format

# Type checking
npm run type-check

⚡ Performance

O servidor implementa várias otimizações:

  • Cache em Camadas: Diferentes TTLs por tipo de dado

  • Rate Limiting: Token bucket algorithm

  • Circuit Breaker: Previne cascata de falhas

  • Request Queue: Controla concorrência

  • Retry Logic: Exponential backoff com jitter

🔄 CI/CD

O projeto possui workflows automatizados do GitHub Actions:

CI (Integração Contínua)

  • ✅ Type checking (TypeScript)

  • ✅ Linting (ESLint)

  • ✅ Formatação (Prettier)

  • ✅ Testes automatizados

  • ✅ Build em Node.js 20.x e 21.x

  • ✅ Build Docker

Release (Publicação)

  • 🚀 Criação automática de releases no GitHub

  • 🚀 Build de imagens Docker em tags

  • 📦 Preparado para publicação no npm (requer configuração)

Configuração: Os workflows estão em .github/workflows/:

  • ci.yml - Executado em push/PR para main/develop

  • release.yml - Executado ao criar tags (v*)

📚 Documentação Completa

Guias

Exemplos e Testes

Especificações

Integrações

Para Desenvolvedores

Índice Completo

🤝 Contribuindo

Contribuições são muito bem-vindas! Este projeto segue boas práticas de desenvolvimento e possui diretrizes claras para contribuidores.

Antes de contribuir, leia:

  • CONTRIBUTING.md - Guia completo de contribuição com padrões de código, workflow e boas práticas

Resumo rápido:

  1. Fork o projeto

  2. Crie uma branch para sua feature (git checkout -b feature/MinhaFeature)

  3. Siga os padrões de código (TypeScript strict, ESLint, Prettier)

  4. Escreva testes para novas funcionalidades

  5. Commit usando Conventional Commits (feat:, fix:, etc.)

  6. Push para a branch (git push origin feature/MinhaFeature)

  7. Abra um Pull Request com descrição detalhada

Scripts úteis para desenvolvimento:

npm run validate    # Executa type-check + lint + format-check + tests
npm run lint:fix    # Corrige problemas de lint automaticamente
npm run format      # Formata o código com Prettier

Licença

MIT License - veja o arquivo LICENSE para detalhes.

Suporte

Para reportar bugs ou solicitar features, abra uma issue.


Desenvolvido com ❤️ para democratização de dados públicos

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gvc2000/AgenteCidadaoMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server