# Mcp Senado

> MCP server for Brazilian Federal Senate (Senado Federal) Open Data API - Access legislative data, senators, proposals, voting records, and committees through AI assistants

- **Type:** MCP server
- **Install:** `agentstack add mcp-cristianoaredes-mcp-senado`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [cristianoaredes](https://agentstack.voostack.com/s/cristianoaredes)
- **Installs:** 0
- **Category:** [Integrations](https://agentstack.voostack.com/c/integrations)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [cristianoaredes](https://github.com/cristianoaredes)
- **Source:** https://github.com/cristianoaredes/mcp-senado
- **Website:** https://github.com/cristianoaredes/mcp-senado

## Install

```sh
agentstack add mcp-cristianoaredes-mcp-senado
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# MCP Senado Federal — Brazilian Senate Open Data for AI Assistants

> Connect Claude, Cursor, Windsurf, and Continue.dev to the Brazilian Federal Senate (Senado Federal) legislative database with 56 tools covering senators, bills, voting records, committees, and plenary sessions.

[](https://opensource.org/licenses/MIT)
[](https://github.com/cristianoaredes/mcp-senado/actions/workflows/ci.yml)
[](https://www.typescriptlang.org/)
[](https://nodejs.org/)
[](https://www.npmjs.com/package/@aredes.me/mcp-senado)

[English](./README.en.md) | [Português](#) | [Contributing](./CONTRIBUTING.md)

---

## What is this?

**MCP Senado Federal** is a Model Context Protocol (MCP) server that gives AI assistants direct access to the official [Brazilian Federal Senate Open Data API](https://legis.senado.leg.br/dadosabertos). Once configured, you can ask Claude (or any MCP-compatible client) natural-language questions about Brazilian legislative data and get accurate, real-time answers sourced from the government's own API.

**Who is it for?**
- Data journalists investigating voting patterns or legislative proposals
- Academic researchers studying Brazilian parliamentary behavior
- Developers building civic tech apps or political dashboards
- Citizens and activists tracking specific bills or senators

---

## Features

- **56 tools across 7 categories** — senators, proposals, voting, committees, parties, plenary sessions, and reference data
- **Multi-transport** — stdio (native MCP) and HTTP/REST API modes
- **Production-ready** — circuit breaker, rate limiting, in-memory LRU cache, structured logging, and health checks
- **Deployable anywhere** — run locally via npx, Docker, or deploy globally on Cloudflare Workers (300+ edge locations)
- **Secure by default** — Zod input validation, optional bearer token auth, configurable CORS, PII masking, LGPD-compliant
- **Type-safe** — full TypeScript 5.7 with strict mode; 211 passing tests at 73% coverage
- **Bilingual** — documentation and tool descriptions in Portuguese and English

---

## Available MCP Tools

### Reference Data (10 tools)

| Tool | Description |
|---|---|
| `ufs_listar` | List all Brazilian states (UFs) |
| `legislaturas_listar` | List Senate legislatures |
| `tipos_materia_listar` | List legislative proposal types |
| `situacoes_materia_listar` | List bill processing statuses |
| `tipos_comissao_listar` | List committee types |
| `tipos_autor_listar` | List author types |
| `tipos_sessao_listar` | List session types |
| `tipos_votacao_listar` | List voting types |
| `tipos_documento_listar` | List document types |
| `assuntos_listar` | List subject classifications |

### Senators (13 tools)

| Tool | Description |
|---|---|
| `senadores_listar` | Search senators by name, party, state, or legislature |
| `senador_detalhes` | Full details and biography for a specific senator |
| `senador_historico` | Parliamentary history and previous terms |
| `senador_votacoes` | Senator's voting record with filters |
| `senador_materias` | Bills and proposals authored by the senator |
| `senador_discursos` | Speeches delivered by the senator |
| `senador_licencas` | Leaves of absence |
| `senador_comissoes` | Committee memberships |
| `senador_liderancas` | Leadership positions held |
| `senador_filiacao` | Party affiliation history |
| `senador_profissoes` | Declared professions |
| `senador_apartes` | Interjections made on the floor |
| `senador_relatorias` | Bills the senator has rapporteured |

### Legislative Proposals (12 tools)

| Tool | Description |
|---|---|
| `materias_pesquisar` | Advanced search for bills and proposals |
| `materia_detalhes` | Full details of a specific proposal |
| `materia_texto` | Full text of a bill |
| `materia_votacoes` | Voting sessions related to a proposal |
| `materia_tramitacao` | Processing history and current status |
| `materia_autores` | Authors and co-authors |
| `materia_relacionadas` | Related bills |
| `materia_emendas` | Amendments filed |
| `materia_pareceres` | Committee opinions |
| `materia_notas_tecnicas` | Technical notes |
| `materia_audiencias` | Related public hearings |
| `materia_documentos` | Attached documents |

### Voting (5 tools)

| Tool | Description |
|---|---|
| `votacoes_listar` | List voting sessions with filters |
| `votacao_detalhes` | Full details of a specific vote |
| `votacao_votos` | Individual senator votes for a session |
| `votacao_orientacoes` | Party/bloc voting orientations |
| `votacao_resumo` | Statistical summary of a vote |

### Committees (5 tools)

| Tool | Description |
|---|---|
| `comissoes_listar` | List all committees (permanent and temporary) |
| `comissao_detalhes` | Committee details |
| `comissao_membros` | Committee membership and composition |
| `comissao_reunioes` | Meeting schedule and agendas |
| `comissao_materias` | Bills under committee review |

### Parties (5 tools)

| Tool | Description |
|---|---|
| `partidos_listar` | List all parties and parliamentary blocs |
| `partido_detalhes` | Party details |
| `partido_membros` | Senators affiliated with the party |
| `partido_liderancas` | Party leadership |
| `blocos_listar` | Parliamentary blocs and coalitions |

### Plenary Sessions (6 tools)

| Tool | Description |
|---|---|
| `sessoes_listar` | Session calendar with filters |
| `sessao_detalhes` | Details of a specific session |
| `sessao_votacoes` | Votes held during a session |
| `sessao_discursos` | Speeches delivered during a session |
| `sessao_ordem_dia` | Session agenda (order of the day) |
| `sessao_expediente` | Session dispatch (expediente) |

---

## Installation

### Requirements

- Node.js 18.x or higher
- npm 9.x or higher

### Option 1 — npx (no install needed)

```bash
npx @aredes.me/mcp-senado
```

### Option 2 — Global install

```bash
npm install -g @aredes.me/mcp-senado
mcp-senado
```

### Option 3 — Clone and build

```bash
git clone https://github.com/cristianoaredes/mcp-senado.git
cd mcp-senado
npm install
npm run build
```

---

## Usage — Connect to an AI Assistant

### Claude Desktop

Add the following to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "senado-federal": {
      "command": "npx",
      "args": ["-y", "@aredes.me/mcp-senado"],
      "env": {
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}
```

Config file locations:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux**: `~/.config/Claude/claude_desktop_config.json`

### Cursor / Windsurf

```json
{
  "mcpServers": {
    "senado-federal": {
      "command": "npx",
      "args": ["-y", "@aredes.me/mcp-senado"]
    }
  }
}
```

### Continue.dev

```json
{
  "mcpServers": [
    {
      "name": "senado-federal",
      "command": "npx",
      "args": ["-y", "@aredes.me/mcp-senado"]
    }
  ]
}
```

### Example prompts

Once connected, ask your AI assistant:

```
"List all senators from São Paulo"
"What is the voting record of Senator X on environmental bills?"
"Find all education bills introduced in 2024"
"What is the current status of PLS 123/2024?"
"Show the composition of the CCJ committee"
"How many senators does each party have?"
```

---

## HTTP Server Mode

Run the server as a standalone REST API for web applications:

```bash
# Development
npm run dev:http

# Production
npm run build && npm run start:http

# Via npx
npx @aredes.me/mcp-senado-http
```

Base URL: `http://localhost:3000`

| Endpoint | Method | Description |
|---|---|---|
| `/health` | GET | Health check and server status |
| `/mcp` | POST | MCP JSON-RPC endpoint |
| `/sse` | GET | Server-Sent Events for MCP clients |
| `/api/tools` | GET | List all available tools |
| `/api/tools/:name` | GET | Get tool details |
| `/api/tools/:name` | POST | Invoke a tool |
| `/api/categories` | GET | List all categories |
| `/api/tools/category/:category` | GET | Tools by category |

**Example — invoke a tool via HTTP:**

```bash
curl -X POST http://localhost:3000/api/tools/senadores_listar \
  -H "Content-Type: application/json" \
  -d '{"uf": "SP"}'
```

---

## Docker

```bash
# Quick start
docker-compose up -d

# Manual build and run
docker build -t mcp-senado:latest .
docker run -d --name mcp-senado -p 3000:3000 mcp-senado:latest

# Check status
curl http://localhost:3000/health
```

---

## Cloudflare Workers

Deploy to 300+ global edge locations:

```bash
npm install -g wrangler
wrangler login
npm run build
npm run deploy:workers:production
```

Local development with hot reload:

```bash
npm run dev:workers   # starts at http://localhost:8787
```

---

## Configuration

Create a `.env` file or set environment variables:

```bash
# API
SENADO_API_BASE_URL=https://legis.senado.leg.br/dadosabertos/

# Cache
MCP_CACHE_ENABLED=true
MCP_CACHE_TTL=300

# Rate limiting
MCP_RATE_LIMIT_ENABLED=true
MCP_RATE_LIMIT_MAX_REQUESTS=30
MCP_RATE_LIMIT_WINDOW_MS=60000

# HTTP server
HTTP_PORT=3000
HTTP_AUTH_ENABLED=false
HTTP_AUTH_TOKEN=

# Logging
MCP_LOG_LEVEL=info
```

---

## Architecture

```
AI Assistants (Claude, Cursor, Windsurf, Continue.dev)
    ↓ MCP Protocol (stdio / HTTP / SSE)
Adapters Layer (CLI, HTTP Server, Cloudflare Workers)
    ↓
Core Layer (MCP Server, Tool Registry, Zod Validation)
    ↓
Tools Layer (Senator, Proposal, Voting, Committee, Party, Session, Reference)
    ↓
Infrastructure Layer (HTTP Client, LRU Cache, Circuit Breaker, Rate Limiter)
    ↓ HTTPS
Senado Federal Open Data API (legis.senado.leg.br/dadosabertos)
```

---

## Contributing

Contributions are welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines, code of conduct, and how to submit pull requests.

---

## License

MIT — see [LICENSE](./LICENSE) for details.

Data is sourced from the [Brazilian Federal Senate Open Data API](https://legis.senado.leg.br/dadosabertos), a public service maintained by the Brazilian government.

---

## Related Projects

- [mcp-camara](https://github.com/cristianoaredes/mcp-camara) — MCP server for the Brazilian Chamber of Deputies
- [mcp-dadosbr](https://github.com/cristianoaredes/mcp-dadosbr) — MCP server for Brazilian public datasets

---

by [Cristiano Arêdes](https://github.com/cristianoaredes)

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [cristianoaredes](https://github.com/cristianoaredes)
- **Source:** [cristianoaredes/mcp-senado](https://github.com/cristianoaredes/mcp-senado)
- **License:** MIT
- **Homepage:** https://github.com/cristianoaredes/mcp-senado

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** yes
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-cristianoaredes-mcp-senado
- Seller: https://agentstack.voostack.com/s/cristianoaredes
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
