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 +113 -1
- package/dist/server.js +114 -2
- package/package.json +2 -2
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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",
|