senado-br-mcp 1.1.6 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3060,10 +3060,121 @@ function registerEcidadaniaTools(server2) {
3060
3060
  registerSugestaoTools(server2);
3061
3061
  }
3062
3062
 
3063
+ // src/resources-prompts.ts
3064
+ var import_zod15 = require("zod");
3065
+ var TIPOS_MATERIA2 = [
3066
+ { sigla: "PEC", nome: "Proposta de Emenda \xE0 Constitui\xE7\xE3o" },
3067
+ { sigla: "PLP", nome: "Projeto de Lei Complementar" },
3068
+ { sigla: "PL", nome: "Projeto de Lei" },
3069
+ { sigla: "PLN", nome: "Projeto de Lei do Congresso Nacional (or\xE7ament\xE1rio)" },
3070
+ { sigla: "MPV", nome: "Medida Provis\xF3ria" },
3071
+ { sigla: "PDL", nome: "Projeto de Decreto Legislativo" },
3072
+ { sigla: "PRS", nome: "Projeto de Resolu\xE7\xE3o do Senado" },
3073
+ { sigla: "RQS", nome: "Requerimento" },
3074
+ { sigla: "SUG", nome: "Sugest\xE3o (inclui ideias legislativas do e-Cidadania)" }
3075
+ ];
3076
+ var UFS2 = [
3077
+ { sigla: "AC", nome: "Acre", regiao: "Norte" },
3078
+ { sigla: "AL", nome: "Alagoas", regiao: "Nordeste" },
3079
+ { sigla: "AP", nome: "Amap\xE1", regiao: "Norte" },
3080
+ { sigla: "AM", nome: "Amazonas", regiao: "Norte" },
3081
+ { sigla: "BA", nome: "Bahia", regiao: "Nordeste" },
3082
+ { sigla: "CE", nome: "Cear\xE1", regiao: "Nordeste" },
3083
+ { sigla: "DF", nome: "Distrito Federal", regiao: "Centro-Oeste" },
3084
+ { sigla: "ES", nome: "Esp\xEDrito Santo", regiao: "Sudeste" },
3085
+ { sigla: "GO", nome: "Goi\xE1s", regiao: "Centro-Oeste" },
3086
+ { sigla: "MA", nome: "Maranh\xE3o", regiao: "Nordeste" },
3087
+ { sigla: "MT", nome: "Mato Grosso", regiao: "Centro-Oeste" },
3088
+ { sigla: "MS", nome: "Mato Grosso do Sul", regiao: "Centro-Oeste" },
3089
+ { sigla: "MG", nome: "Minas Gerais", regiao: "Sudeste" },
3090
+ { sigla: "PA", nome: "Par\xE1", regiao: "Norte" },
3091
+ { sigla: "PB", nome: "Para\xEDba", regiao: "Nordeste" },
3092
+ { sigla: "PR", nome: "Paran\xE1", regiao: "Sul" },
3093
+ { sigla: "PE", nome: "Pernambuco", regiao: "Nordeste" },
3094
+ { sigla: "PI", nome: "Piau\xED", regiao: "Nordeste" },
3095
+ { sigla: "RJ", nome: "Rio de Janeiro", regiao: "Sudeste" },
3096
+ { sigla: "RN", nome: "Rio Grande do Norte", regiao: "Nordeste" },
3097
+ { sigla: "RS", nome: "Rio Grande do Sul", regiao: "Sul" },
3098
+ { sigla: "RO", nome: "Rond\xF4nia", regiao: "Norte" },
3099
+ { sigla: "RR", nome: "Roraima", regiao: "Norte" },
3100
+ { sigla: "SC", nome: "Santa Catarina", regiao: "Sul" },
3101
+ { sigla: "SP", nome: "S\xE3o Paulo", regiao: "Sudeste" },
3102
+ { sigla: "SE", nome: "Sergipe", regiao: "Nordeste" },
3103
+ { sigla: "TO", nome: "Tocantins", regiao: "Norte" }
3104
+ ];
3105
+ function registerResourcesAndPrompts(server2) {
3106
+ server2.resource(
3107
+ "tipos-materia",
3108
+ "senado://tipos-materia",
3109
+ {
3110
+ description: "Cat\xE1logo dos tipos de mat\xE9ria legislativa do Senado (sigla e nome completo). \xDAtil para montar buscas em senado_buscar_materias.",
3111
+ mimeType: "application/json"
3112
+ },
3113
+ async () => ({
3114
+ contents: [
3115
+ {
3116
+ uri: "senado://tipos-materia",
3117
+ mimeType: "application/json",
3118
+ text: JSON.stringify(TIPOS_MATERIA2, null, 2)
3119
+ }
3120
+ ]
3121
+ })
3122
+ );
3123
+ server2.resource(
3124
+ "ufs",
3125
+ "senado://ufs",
3126
+ {
3127
+ description: "As 27 unidades da federa\xE7\xE3o representadas no Senado (3 senadores cada), com sigla, nome e regi\xE3o.",
3128
+ mimeType: "application/json"
3129
+ },
3130
+ async () => ({
3131
+ contents: [
3132
+ {
3133
+ uri: "senado://ufs",
3134
+ mimeType: "application/json",
3135
+ text: JSON.stringify(UFS2, null, 2)
3136
+ }
3137
+ ]
3138
+ })
3139
+ );
3140
+ server2.prompt(
3141
+ "panorama_senador",
3142
+ "Monta um panorama de um senador: identifica\xE7\xE3o, mandato, comiss\xF5es e vota\xE7\xF5es recentes.",
3143
+ { nome: import_zod15.z.string().describe('Nome (ou parte) do senador, ex.: "Renan", "Simone Tebet"') },
3144
+ async ({ nome }) => ({
3145
+ messages: [
3146
+ {
3147
+ role: "user",
3148
+ content: {
3149
+ type: "text",
3150
+ text: `Monte um panorama do senador "${nome}". Use senado_buscar_senador_por_nome para localizar o c\xF3digo, depois senado_obter_senador para os dados (partido, UF, mandato, comiss\xF5es) e senado_votacoes_senador para as vota\xE7\xF5es recentes. Apresente um resumo organizado.`
3151
+ }
3152
+ }
3153
+ ]
3154
+ })
3155
+ );
3156
+ server2.prompt(
3157
+ "acompanhar_materia",
3158
+ "Acompanha uma mat\xE9ria legislativa: situa\xE7\xE3o atual, tramita\xE7\xE3o e textos.",
3159
+ { identificacao: import_zod15.z.string().describe('Identifica\xE7\xE3o da mat\xE9ria, ex.: "PEC 45/2019", "PL 1234/2023"') },
3160
+ async ({ identificacao }) => ({
3161
+ messages: [
3162
+ {
3163
+ role: "user",
3164
+ content: {
3165
+ type: "text",
3166
+ text: `Acompanhe a mat\xE9ria "${identificacao}" no Senado. Use senado_buscar_materias para localiz\xE1-la, senado_obter_materia para a ementa e a situa\xE7\xE3o atual, e senado_tramitacao_materia para o hist\xF3rico de movimenta\xE7\xF5es. Resuma o est\xE1gio atual e os pr\xF3ximos passos.`
3167
+ }
3168
+ }
3169
+ ]
3170
+ })
3171
+ );
3172
+ }
3173
+
3063
3174
  // src/index.ts
3064
3175
  var server = new import_mcp.McpServer({
3065
3176
  name: "senado-br-mcp",
3066
- version: "1.1.6"
3177
+ version: "1.2.0"
3067
3178
  });
3068
3179
  registerSenadoresTools(server);
3069
3180
  registerMateriasTools(server);
@@ -3072,6 +3183,7 @@ registerComissoesTools(server);
3072
3183
  registerAgendaTools(server);
3073
3184
  registerAuxiliaresTools(server);
3074
3185
  registerEcidadaniaTools(server);
3186
+ registerResourcesAndPrompts(server);
3075
3187
  async function main() {
3076
3188
  logger.info("Starting senado-br-mcp server...");
3077
3189
  const transport = new import_stdio.StdioServerTransport();
package/dist/server.js CHANGED
@@ -3061,6 +3061,117 @@ function registerEcidadaniaTools(server) {
3061
3061
  registerSugestaoTools(server);
3062
3062
  }
3063
3063
 
3064
+ // src/resources-prompts.ts
3065
+ var import_zod15 = require("zod");
3066
+ var TIPOS_MATERIA2 = [
3067
+ { sigla: "PEC", nome: "Proposta de Emenda \xE0 Constitui\xE7\xE3o" },
3068
+ { sigla: "PLP", nome: "Projeto de Lei Complementar" },
3069
+ { sigla: "PL", nome: "Projeto de Lei" },
3070
+ { sigla: "PLN", nome: "Projeto de Lei do Congresso Nacional (or\xE7ament\xE1rio)" },
3071
+ { sigla: "MPV", nome: "Medida Provis\xF3ria" },
3072
+ { sigla: "PDL", nome: "Projeto de Decreto Legislativo" },
3073
+ { sigla: "PRS", nome: "Projeto de Resolu\xE7\xE3o do Senado" },
3074
+ { sigla: "RQS", nome: "Requerimento" },
3075
+ { sigla: "SUG", nome: "Sugest\xE3o (inclui ideias legislativas do e-Cidadania)" }
3076
+ ];
3077
+ var UFS2 = [
3078
+ { sigla: "AC", nome: "Acre", regiao: "Norte" },
3079
+ { sigla: "AL", nome: "Alagoas", regiao: "Nordeste" },
3080
+ { sigla: "AP", nome: "Amap\xE1", regiao: "Norte" },
3081
+ { sigla: "AM", nome: "Amazonas", regiao: "Norte" },
3082
+ { sigla: "BA", nome: "Bahia", regiao: "Nordeste" },
3083
+ { sigla: "CE", nome: "Cear\xE1", regiao: "Nordeste" },
3084
+ { sigla: "DF", nome: "Distrito Federal", regiao: "Centro-Oeste" },
3085
+ { sigla: "ES", nome: "Esp\xEDrito Santo", regiao: "Sudeste" },
3086
+ { sigla: "GO", nome: "Goi\xE1s", regiao: "Centro-Oeste" },
3087
+ { sigla: "MA", nome: "Maranh\xE3o", regiao: "Nordeste" },
3088
+ { sigla: "MT", nome: "Mato Grosso", regiao: "Centro-Oeste" },
3089
+ { sigla: "MS", nome: "Mato Grosso do Sul", regiao: "Centro-Oeste" },
3090
+ { sigla: "MG", nome: "Minas Gerais", regiao: "Sudeste" },
3091
+ { sigla: "PA", nome: "Par\xE1", regiao: "Norte" },
3092
+ { sigla: "PB", nome: "Para\xEDba", regiao: "Nordeste" },
3093
+ { sigla: "PR", nome: "Paran\xE1", regiao: "Sul" },
3094
+ { sigla: "PE", nome: "Pernambuco", regiao: "Nordeste" },
3095
+ { sigla: "PI", nome: "Piau\xED", regiao: "Nordeste" },
3096
+ { sigla: "RJ", nome: "Rio de Janeiro", regiao: "Sudeste" },
3097
+ { sigla: "RN", nome: "Rio Grande do Norte", regiao: "Nordeste" },
3098
+ { sigla: "RS", nome: "Rio Grande do Sul", regiao: "Sul" },
3099
+ { sigla: "RO", nome: "Rond\xF4nia", regiao: "Norte" },
3100
+ { sigla: "RR", nome: "Roraima", regiao: "Norte" },
3101
+ { sigla: "SC", nome: "Santa Catarina", regiao: "Sul" },
3102
+ { sigla: "SP", nome: "S\xE3o Paulo", regiao: "Sudeste" },
3103
+ { sigla: "SE", nome: "Sergipe", regiao: "Nordeste" },
3104
+ { sigla: "TO", nome: "Tocantins", regiao: "Norte" }
3105
+ ];
3106
+ function registerResourcesAndPrompts(server) {
3107
+ server.resource(
3108
+ "tipos-materia",
3109
+ "senado://tipos-materia",
3110
+ {
3111
+ description: "Cat\xE1logo dos tipos de mat\xE9ria legislativa do Senado (sigla e nome completo). \xDAtil para montar buscas em senado_buscar_materias.",
3112
+ mimeType: "application/json"
3113
+ },
3114
+ async () => ({
3115
+ contents: [
3116
+ {
3117
+ uri: "senado://tipos-materia",
3118
+ mimeType: "application/json",
3119
+ text: JSON.stringify(TIPOS_MATERIA2, null, 2)
3120
+ }
3121
+ ]
3122
+ })
3123
+ );
3124
+ server.resource(
3125
+ "ufs",
3126
+ "senado://ufs",
3127
+ {
3128
+ description: "As 27 unidades da federa\xE7\xE3o representadas no Senado (3 senadores cada), com sigla, nome e regi\xE3o.",
3129
+ mimeType: "application/json"
3130
+ },
3131
+ async () => ({
3132
+ contents: [
3133
+ {
3134
+ uri: "senado://ufs",
3135
+ mimeType: "application/json",
3136
+ text: JSON.stringify(UFS2, null, 2)
3137
+ }
3138
+ ]
3139
+ })
3140
+ );
3141
+ server.prompt(
3142
+ "panorama_senador",
3143
+ "Monta um panorama de um senador: identifica\xE7\xE3o, mandato, comiss\xF5es e vota\xE7\xF5es recentes.",
3144
+ { nome: import_zod15.z.string().describe('Nome (ou parte) do senador, ex.: "Renan", "Simone Tebet"') },
3145
+ async ({ nome }) => ({
3146
+ messages: [
3147
+ {
3148
+ role: "user",
3149
+ content: {
3150
+ type: "text",
3151
+ text: `Monte um panorama do senador "${nome}". Use senado_buscar_senador_por_nome para localizar o c\xF3digo, depois senado_obter_senador para os dados (partido, UF, mandato, comiss\xF5es) e senado_votacoes_senador para as vota\xE7\xF5es recentes. Apresente um resumo organizado.`
3152
+ }
3153
+ }
3154
+ ]
3155
+ })
3156
+ );
3157
+ server.prompt(
3158
+ "acompanhar_materia",
3159
+ "Acompanha uma mat\xE9ria legislativa: situa\xE7\xE3o atual, tramita\xE7\xE3o e textos.",
3160
+ { identificacao: import_zod15.z.string().describe('Identifica\xE7\xE3o da mat\xE9ria, ex.: "PEC 45/2019", "PL 1234/2023"') },
3161
+ async ({ identificacao }) => ({
3162
+ messages: [
3163
+ {
3164
+ role: "user",
3165
+ content: {
3166
+ type: "text",
3167
+ text: `Acompanhe a mat\xE9ria "${identificacao}" no Senado. Use senado_buscar_materias para localiz\xE1-la, senado_obter_materia para a ementa e a situa\xE7\xE3o atual, e senado_tramitacao_materia para o hist\xF3rico de movimenta\xE7\xF5es. Resuma o est\xE1gio atual e os pr\xF3ximos passos.`
3168
+ }
3169
+ }
3170
+ ]
3171
+ })
3172
+ );
3173
+ }
3174
+
3064
3175
  // src/middleware/rateLimiter.ts
3065
3176
  var MONTHLY_LIMIT = parseInt(process.env.MONTHLY_REQUEST_LIMIT || "10000");
3066
3177
  var ALERT_THRESHOLDS = [50, 80, 100];
@@ -3160,7 +3271,7 @@ var PORT = parseInt(process.env.PORT || "3000");
3160
3271
  function createMcpServer() {
3161
3272
  const server = new import_mcp.McpServer({
3162
3273
  name: "senado-br-mcp",
3163
- version: "1.1.6"
3274
+ version: "1.2.0"
3164
3275
  });
3165
3276
  registerSenadoresTools(server);
3166
3277
  registerMateriasTools(server);
@@ -3169,6 +3280,7 @@ function createMcpServer() {
3169
3280
  registerAgendaTools(server);
3170
3281
  registerAuxiliaresTools(server);
3171
3282
  registerEcidadaniaTools(server);
3283
+ registerResourcesAndPrompts(server);
3172
3284
  return server;
3173
3285
  }
3174
3286
  var app = (0, import_express.default)();
@@ -3246,7 +3358,7 @@ app.get("/", (_req, res) => {
3246
3358
  res.json({
3247
3359
  name: "senado-br-mcp",
3248
3360
  description: "MCP server for Brazilian Federal Senate open data",
3249
- version: "1.1.6",
3361
+ version: "1.2.0",
3250
3362
  endpoints: {
3251
3363
  mcp: "/mcp",
3252
3364
  health: "/health",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "senado-br-mcp",
3
3
  "mcpName": "io.github.SidneyBissoli/senado-br-mcp",
4
- "version": "1.1.6",
4
+ "version": "1.2.0",
5
5
  "description": "MCP server for Brazilian Federal Senate open data (legislators, bills, votes, committees)",
6
6
  "type": "commonjs",
7
7
  "main": "dist/index.js",
@@ -14,7 +14,7 @@
14
14
  "LICENSE"
15
15
  ],
16
16
  "scripts": {
17
- "build": "esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.js --format=cjs --packages=external && esbuild src/server.ts --bundle --platform=node --target=node18 --outfile=dist/server.js --format=cjs --packages=external",
17
+ "build": "esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.js --format=cjs --packages=external && esbuild src/server.ts --bundle --platform=node --target=node18 --outfile=dist/server.js --format=cjs --packages=external",
18
18
  "build:server": "esbuild src/server.ts --bundle --platform=node --target=node18 --outfile=dist/server.js --format=cjs --packages=external",
19
19
  "build:all": "npm run build && npm run build:server",
20
20
  "start": "node dist/index.js",