巴西参议院AI助手数据服务

提供对巴西联邦参议院开放数据的实时访问,支持AI助手查询立法数据,适用于数据新闻、学术研究和公民科技应用。

  • by cristianoaredes
  • TypeScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 cristianoaredes/mcp-senado

使用说明

MCP Senado联邦-巴西参议院人工智能助理开放数据

使用56个工具将Claude、Cursor、Windsurf和Continue.dev连接到巴西联邦参议院(Senado Federal)立法数据库,这些工具涵盖了参议员、法案、投票记录、委员会和全体会议。

英语 | 葡萄牙语 | 贡献


这是什么?

MCP Senado联邦 是一个模型上下文协议(MCP)服务器,它使人工智能助手可以直接访问官方 巴西联邦参议院开放数据API配置后,您可以向Claude(或任何兼容MCP的客户)询问有关巴西立法数据的自然语言问题,并从政府自己的API获得准确、实时的答案。

这是给谁的?

  • 调查投票模式或立法提案的数据记者
  • 研究巴西议会行为的学术研究人员
  • 开发人员构建公民技术应用程序或政治仪表板
  • 追踪特定法案或参议员的公民和活动家

特性

  • 7个类别的56个工具 --参议员、提案、投票、委员会、政党、全体会议和参考数据
  • 多运输 -stdio(本机MCP)和HTTP/REST API模式
  • 生产就绪 --断路器、速率限制、内存LRU缓存、结构化日志记录和健康检查
  • 可在任何地方部署 --通过npx、Docker在本地运行,或在Cloudflare Workers上全球部署(300多个边缘位置)
  • 缺省安全 --Zod输入验证、可选的承载令牌身份验证、可配置的CORS、PII掩码、符合LGPD标准
  • 类型安全 --带有严格模式的完整TypeScript 5.7;211项测试通过,覆盖率为73%
  • 双语 --葡萄牙语和英语的文档和工具说明

可用的MCP工具

参考数据(10个工具)

工具 说明
ufs_listar 列出巴西所有州(UF)
legislaturas_listar 列出参议院立法机构
tipos_materia_listar 列出立法提案类型
situacoes_materia_listar 列出账单处理状态
tipos_comissao_listar 列出委员会类型
tipos_autor_listar 列出作者类型
tipos_sessao_listar 列出会话类型
tipos_votacao_listar 列出投票类型
tipos_documento_listar 列出文档类型
assuntos_listar 列出主题分类

参议员(13工具)

工具 说明
senadores_listar 按姓名、政党、州或立法机构搜索参议员
senador_detalhes 特定参议员的完整细节和传记
senador_historico 议会历史和以往任期
senador_votacoes 带有过滤器的参议员投票记录
senador_materias 参议员撰写的法案和提案
senador_discursos 参议员的讲话
senador_licencas 休假
senador_comissoes 委员会成员
senador_liderancas 曾任领导职务
senador_filiacao 党籍历史
senador_profissoes 申报职业
senador_apartes 在地板上发出的感叹
senador_relatorias 参议员与之建立融洽关系的法案

立法提案(12个工具)

工具 说明
materias_pesquisar 高级搜索法案和提案
materia_detalhes 具体提案的全部细节
materia_texto 法案全文
materia_votacoes 与提案相关的投票环节
materia_tramitacao 处理历史和当前状态
materia_autores 作者和合著者
materia_relacionadas 相关法案
materia_emendas 已提交的修正案
materia_pareceres 委员会意见
materia_notas_tecnicas 技术说明
materia_audiencias 相关公开听证会
materia_documentos 随附文件

投票(5个工具)

工具 说明
votacoes_listar 使用筛选器列出投票会话
votacao_detalhes 具体投票的全部细节
votacao_votos 参议员个人投票选举会议
votacao_orientacoes 政党/集团投票取向
votacao_resumo 投票统计摘要

委员会(5个工具)

工具 说明
comissoes_listar 列出所有委员会(常设和临时)
comissao_detalhes 委员会详情
comissao_membros 委员会成员和组成
comissao_reunioes 会议日程和议程
comissao_materias 委员会审议中的法案

缔约方(5个工具)

工具 说明
partidos_listar 列出所有政党和议会集团
partido_detalhes 派对详情
partido_membros 与该党有联系的参议员
partido_liderancas 党的领导
blocos_listar 议会集团和联盟

全体会议(6个工具)

工具 说明
sessoes_listar 带过滤器的会话日历
sessao_detalhes 特定会话的详细信息
sessao_votacoes 会议期间举行的投票
sessao_discursos 会议期间的发言
sessao_ordem_dia 会议议程(日期顺序)
sessao_expediente 会话调度(快捷)

安装

需求

  • Node.js 18.x或更高版本
  • npm 9.x或更高版本

选项1-npx(无需安装)

npx @aredes.me/mcp-senado

选项2——全局安装

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

选项3——克隆和构建

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

用法——连接到AI助手

克劳德桌面

将以下内容添加到您的 claude_desktop_config.json:

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

配置文件位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

光标/风帆

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

Continue.dev

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

示例提示

连接后,询问您的AI助手:

"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服务器模式

将服务器作为web应用程序的独立REST API运行:

# Development
npm run dev:http

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

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

基本URL: http://localhost:3000

端点 方法 描述
/health GET 健康检查和服务器状态
/mcp POST MCP JSON-RPC端点
/sse GET MCP客户端的服务器发送事件
/api/tools GET 列出所有可用工具
/api/tools/:name GET 获取工具详细信息
/api/tools/:name POST 调用工具
/api/categories GET 列出所有类别
/api/tools/category/:category GET 按类别列出的工具

示例——通过HTTP调用工具:

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

码头工人

# 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员工

部署到300多个全球边缘位置:

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

热装本地开发:

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

配置

创建一个 .env 文件或设置环境变量:

# 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

建筑

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)

贡献

欢迎捐款。看 贡献.md 了解指导方针、行为准则以及如何提交pull请求。


许可证

麻省理工学院——见 许可证 了解详情。

数据来源于 巴西联邦参议院开放数据API,由巴西政府维护的公共服务。


相关项目


通过 克里斯蒂亚诺·阿雷德斯