@aborruso/italianparliament-mcp 0.3.1
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/LICENSE +21 -0
- package/README.md +322 -0
- package/dist/cli.js +4822 -0
- package/dist/index.js +3323 -0
- package/dist/worker.js +798 -0
- package/package.json +57 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Andrea Borruso
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
# italianparliament-mcp
|
|
2
|
+
|
|
3
|
+
Strumento per interrogare i dati aperti del Parlamento italiano — Camera dei Deputati (`dati.camera.it`) e Senato della Repubblica (`dati.senato.it`).
|
|
4
|
+
|
|
5
|
+
Pensato per giornalisti, ricercatori e analisti parlamentari: ogni comando restituisce dati strutturati (CSV o JSONL) pronti per l'analisi.
|
|
6
|
+
|
|
7
|
+
Usabile in tre modi:
|
|
8
|
+
|
|
9
|
+
- **Da terminale** — `italianparliament <risorsa> <azione>` (CLI installabile via npm)
|
|
10
|
+
- **Da Claude** — come MCP server integrato in Claude Desktop o Claude Code
|
|
11
|
+
- **Da remoto** — come MCP server HTTP su Cloudflare Worker (`https://italianparliament-mcp.andy-pr.workers.dev`)
|
|
12
|
+
|
|
13
|
+
## Installazione
|
|
14
|
+
|
|
15
|
+
### Come CLI (consigliato — disponibile in tutto il sistema)
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install -g @aborruso/italianparliament-mcp
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Poi:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
italianparliament --help
|
|
25
|
+
italianparliament guide # flusso tipico di utilizzo
|
|
26
|
+
italianparliament search find --name schlein
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
> Per scaricare il **testo dei DDL del Senato** (`bill-text fetch`) servono anche [`agent-browser`](https://www.npmjs.com/package/agent-browser) e `lit` (liteparse) installati.
|
|
30
|
+
|
|
31
|
+
### Come server MCP (Claude Desktop / Claude Code)
|
|
32
|
+
|
|
33
|
+
- **Remoto** (più semplice): usa l'endpoint `https://italianparliament-mcp.andy-pr.workers.dev/mcp`.
|
|
34
|
+
- **Locale**: dopo l'installazione globale, configura il comando `italianparliament-mcp` (trasporto stdio) nel client MCP.
|
|
35
|
+
|
|
36
|
+
### Da sorgente (sviluppo)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
git clone https://github.com/aborruso/italianparliament-mcp
|
|
40
|
+
cd italianparliament-mcp
|
|
41
|
+
npm install
|
|
42
|
+
npm run build
|
|
43
|
+
node dist/cli.js --help
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Cosa puoi fare
|
|
47
|
+
|
|
48
|
+
### Parlamentari
|
|
49
|
+
|
|
50
|
+
| Comando | Cosa fa |
|
|
51
|
+
|---------|---------|
|
|
52
|
+
| `deputies list` | Lista deputati Camera, filtrabile per legislatura |
|
|
53
|
+
| `senators list` | Lista senatori, filtrabile per legislatura |
|
|
54
|
+
| `search find` | Cerca un parlamentare per nome in Camera, Senato o entrambi |
|
|
55
|
+
| `deputy show` | Scheda di un deputato: nome, genere, data/luogo nascita, lista elezione, data elezione, convalida, commissioni |
|
|
56
|
+
| `senator show` | Scheda di un senatore: nome, genere, data/luogo nascita, regione elezione, tipo elezione, data mandato |
|
|
57
|
+
| `person-career show` | Carriera unificata di una persona: tutti i mandati da deputato (per legislatura) e gli incarichi di governo, con link Wikidata. Risolve doppio incarico parlamento+governo e carriera multi-legislatura |
|
|
58
|
+
|
|
59
|
+
### Attivita legislativa — Camera
|
|
60
|
+
|
|
61
|
+
| Comando | Cosa fa |
|
|
62
|
+
|---------|---------|
|
|
63
|
+
| `bills list` | Disegni di legge Camera, filtrabile per legislatura, tipo, data (`--date-from`/`--date-to`) |
|
|
64
|
+
| `bill show` | Scheda di un atto Camera (titolo, tipo, data, iniziativa, primo firmatario, cofirmatari) |
|
|
65
|
+
| `member-bills list` | DDL presentati come primo firmatario da un deputato o senatore (Camera e Senato) |
|
|
66
|
+
| `aic list` | Atti di indirizzo e controllo (interrogazioni, interpellanze, mozioni), filtrabile per data e per parola chiave nel testo (`--keyword`) |
|
|
67
|
+
| `votes list` | Votazioni Camera con contatori (favorevoli, contrari, astenuti), filtrabile per data, tipo fiducia (`--confidence-vote`), DDL collegato (`--bill-code`) |
|
|
68
|
+
| `vote-detail show` | Come ha votato ogni singolo deputato in una votazione, con nome e gruppo |
|
|
69
|
+
| `bill-rapporteurs list` | Relatori di un DDL Camera per commissione, con tipo (Relatore / Relatore f.f.) e data |
|
|
70
|
+
| `speeches list` | Interventi in aula, filtrabile per legislatura e deputato |
|
|
71
|
+
|
|
72
|
+
### Attivita legislativa — Senato
|
|
73
|
+
|
|
74
|
+
| Comando | Cosa fa |
|
|
75
|
+
|---------|---------|
|
|
76
|
+
| `bill-progress list` | Iter dei DDL al Senato: stato, date, iniziativa, natura |
|
|
77
|
+
| `bill-signatories show` | Firmatari di un DDL: primo firmatario e cofirmatari |
|
|
78
|
+
| `amendments list` | Emendamenti al Senato con numero, tipo, DDL collegato e link al testo. Filtrabile per legislatura e per DDL (`--ddl-uri`) |
|
|
79
|
+
| `documents list` | Documenti parlamentari: atti del governo, atti UE, relazioni Corte dei Conti |
|
|
80
|
+
| `sindacato-ispettivo list` | Atti di sindacato ispettivo Senato (interrogazioni, interpellanze, mozioni), filtrabile per data |
|
|
81
|
+
| `senato-votes list` | Votazioni d'Assemblea del Senato con esito, contatori (favorevoli/contrari/astenuti), tipo, data e DDL collegato. Filtrabile per legislatura, data, DDL |
|
|
82
|
+
| `senato-vote-detail show` | Come ha votato ogni singolo senatore in una votazione (favorevole/contrario/astenuto/presente non votante/in congedo) |
|
|
83
|
+
| `committee-sessions list` | Sedute di commissione in cui un DDL è stato trattato, con data, commissione, tipo seduta e numero di interventi (l'iter del provvedimento nelle commissioni) |
|
|
84
|
+
|
|
85
|
+
### Testo dei disegni di legge
|
|
86
|
+
|
|
87
|
+
Il testo integrale di un DDL non è nei dati aperti SPARQL (solo metadati). Questi comandi danno accesso al testo.
|
|
88
|
+
|
|
89
|
+
| Comando | Cosa fa |
|
|
90
|
+
|---|---|
|
|
91
|
+
| `bill-text links` | Link diretti al testo di un DDL (Camera o Senato), con tipo risorsa (`format`: html/pdf/urn) e se serve un browser (`auth`: none/browser) |
|
|
92
|
+
| `bill-text fetch` | Scarica un testo del DDL Senato e lo converte in markdown. `www.senato.it` è dietro AWS WAF: apre un browser reale (`agent-browser`) per superarlo, scarica il PDF e lo converte con `lit`. Opzioni `--which`, `--all`, `--fascicolo`, `--out`. Richiede `agent-browser` e `lit` installati |
|
|
93
|
+
|
|
94
|
+
### Organizzazione parlamentare
|
|
95
|
+
|
|
96
|
+
| Comando | Cosa fa |
|
|
97
|
+
|---------|---------|
|
|
98
|
+
| `groups list` | Gruppi parlamentari Camera con acronimo (FDI, PD-IDP, M5S...) |
|
|
99
|
+
| `group-members list` | Composizione di un gruppo Camera: chi ne fa parte, da quando |
|
|
100
|
+
| `senator-group-members list` | Composizione di un gruppo al Senato a una certa data |
|
|
101
|
+
| `roles list` | Incarichi parlamentari con ruolo (presidente, vicepresidente, segretario...) |
|
|
102
|
+
| `sessions list` | Sedute della Camera con numero progressivo |
|
|
103
|
+
| `committees list` | Commissioni Senato; con filtro legislatura mostra solo quelle attive e il numero di sedute |
|
|
104
|
+
| `committee-members list` | Membri di una commissione del Senato |
|
|
105
|
+
|
|
106
|
+
### Analisi
|
|
107
|
+
|
|
108
|
+
| Comando | Cosa fa |
|
|
109
|
+
|---------|---------|
|
|
110
|
+
| `rank list` | Classifiche di attività parlamentare (`--rank-by`: aic-primo-firmatario, aic-co-firmatario, bills-primo-firmatario, bills-co-firmatario, speeches) |
|
|
111
|
+
| `group-rank list` | Classifica dei gruppi Camera per AIC o DDL (primo firmatario), con conteggio, numero membri e media per membro |
|
|
112
|
+
| `sparql query` | Query SPARQL libera contro l'endpoint Camera o Senato (per dati non coperti dagli altri comandi) |
|
|
113
|
+
|
|
114
|
+
I comandi `bills`, `aic`, `votes` e `senato-votes` accettano `--count-only` per ottenere solo il numero totale (utile per confronti fra legislature senza scaricare le righe).
|
|
115
|
+
|
|
116
|
+
**Scoperta dei comandi**: `italianparliament guide` stampa il flusso tipico (scoperta → URI → dettaglio); `italianparliament which "<capacità>"` trova il comando giusto (es. `which "testo ddl"`); `<comando> --help` mostra opzioni ed esempi.
|
|
117
|
+
|
|
118
|
+
### Contesto istituzionale
|
|
119
|
+
|
|
120
|
+
| Comando | Cosa fa |
|
|
121
|
+
|---------|---------|
|
|
122
|
+
| `legislatures list` | Tutte le legislature dal 1848 a oggi |
|
|
123
|
+
| `governments list` | Tutti i governi italiani, dal piu recente (con data) |
|
|
124
|
+
| `gov-members list` | Membri del governo: ministri, sottosegretari, con ruolo e date. Cerca per nome |
|
|
125
|
+
|
|
126
|
+
## Esempi pratici
|
|
127
|
+
|
|
128
|
+
Quanti deputati hanno fatto parte della XIX legislatura (inclusi i subentrati)?
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
italianparliament deputies list --legislature 19 --limit 1000 --format csv | tail -n +2 | wc -l
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Chi sono i membri del governo Meloni?
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
italianparliament gov-members list --legislature 19
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Meloni ha avuto altri incarichi di governo in passato?
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
italianparliament gov-members list --name meloni
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Quali gruppi parlamentari ci sono alla Camera e con quale acronimo?
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
italianparliament groups list --legislature 19
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Chi fa parte di Fratelli d'Italia?
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
italianparliament group-members list --legislature 19 --group-uri http://dati.camera.it/ocd/gruppoParlamentare.rdf/gr4133
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Come hanno votato i singoli deputati su una specifica votazione?
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
italianparliament vote-detail show --vote-uri http://dati.camera.it/ocd/votazione.rdf/vs19_047_005 --format jsonl
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Quali votazioni ci sono state questa settimana?
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
italianparliament votes list --legislature 19 --date-from 2026-04-07 --date-to 2026-04-12
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Quali voti di fiducia ci sono stati nella XIX legislatura?
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
italianparliament votes list --legislature 19 --confidence-vote true
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Tutte le votazioni collegate al DDL 2807:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
italianparliament votes list --bill-code 2807 --legislature 19
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Chi erano i relatori del DDL 2807 nelle commissioni?
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
italianparliament bill-rapporteurs list --bill-uri http://dati.camera.it/ocd/attocamera.rdf/ac19_2807
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Quali interrogazioni sono state presentate questo mese?
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
italianparliament aic list --legislature 19 --date-from 2026-04-01
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Quante interrogazioni parlano di un tema (es. xylella)?
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
italianparliament aic list --legislature 19 --keyword xylella
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Quale gruppo presenta più interrogazioni, anche rapportato ai suoi membri?
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
italianparliament group-rank list --rank-by aic --legislature 19
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Quanti emendamenti ha avuto un DDL al Senato?
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
italianparliament amendments list --ddl-uri http://dati.senato.it/ddl/56260 --limit 1000 --format jsonl | wc -l
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
In quali sedute di commissione è passato un DDL?
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
italianparliament committee-sessions list --ddl-uri http://dati.senato.it/ddl/56260
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Quali interrogazioni al Senato questa settimana?
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
italianparliament sindacato-ispettivo list --legislature 19 --date-from 2026-04-07
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Quante interrogazioni ha presentato un deputato?
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
italianparliament aic list --deputy-uri http://dati.camera.it/ocd/deputato.rdf/d308001_19
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Quali commissioni del Senato sono attive nella XIX legislatura e quante sedute hanno fatto?
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
italianparliament committees list --legislature 19
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
A che punto e un DDL al Senato?
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
italianparliament bill-progress list --legislature 19 --limit 10
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Chi ha firmato un DDL al Senato?
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
italianparliament bill-signatories show --ddl-uri http://dati.senato.it/ddl/25597
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Quali sono le ultime votazioni d'Assemblea al Senato?
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
italianparliament senato-votes list --legislature 19 --limit 20
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Come ha votato ogni senatore in una votazione (e i contrari)?
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
italianparliament senato-vote-detail show --vote-uri http://dati.senato.it/votazione/19-167-42 --vote-type Contrario
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Dove trovo il testo di un DDL e di che tipo è (html/pdf)?
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
italianparliament bill-text links --uri http://dati.senato.it/ddl/59294 --format jsonl
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Scarica il testo di un DDL del Senato in markdown (apre un browser per superare l'AWS WAF; richiede `agent-browser` e `lit`):
|
|
267
|
+
|
|
268
|
+
```
|
|
269
|
+
italianparliament bill-text fetch --did 59294 --out testo.md
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Quali atti del governo sono al vaglio del Senato?
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
italianparliament documents list --legislature 19 --type "Atto del Governo"
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Quali interventi in aula ci sono stati nella XIX legislatura?
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
italianparliament speeches list --legislature 19 --limit 20
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Qual è la carriera completa di un parlamentare (legislature + governo)?
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
italianparliament person-career show --uri http://dati.camera.it/ocd/deputato.rdf/d301551_15
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Cerca "schlein" in entrambe le camere:
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
italianparliament search find --name schlein
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
## Note sui dati
|
|
297
|
+
|
|
298
|
+
I dati provengono dagli endpoint SPARQL ufficiali di Camera e Senato. Alcune limitazioni note:
|
|
299
|
+
|
|
300
|
+
- **Gruppi** (`groups`): l'acronimo viene estratto dalla label (non ha campo dedicato nell'endpoint). Funziona per tutti i gruppi della XIX legislatura.
|
|
301
|
+
- **Documenti Camera**: l'endpoint Camera non espone documenti parlamentari via SPARQL. Il tool `documents` usa i dati del Senato.
|
|
302
|
+
|
|
303
|
+
## Riferimento
|
|
304
|
+
|
|
305
|
+
Questo progetto e un porting in TypeScript ispirato a [italyParlR](https://github.com/paride92/italyParlR), un pacchetto R per interrogare i dati aperti del Parlamento italiano via SPARQL. Le query SPARQL di quel pacchetto hanno fornito un punto di partenza; molte altre sono state sviluppate autonomamente per coprire nuove risorse e casi d'uso.
|
|
306
|
+
|
|
307
|
+
Per le esigenze giornalistiche e le funzionalità da coprire prendiamo come riferimento [openparlamento](https://parlamento19.openpolis.it/) di Openpolis: schede parlamentari, iter dei DDL, votazioni, gruppi, indicatori e classifiche sono una guida alle user story che l'MCP punta a soddisfare.
|
|
308
|
+
|
|
309
|
+
Quali DDL ha presentato come primo firmatario un parlamentare?
|
|
310
|
+
|
|
311
|
+
```
|
|
312
|
+
italianparliament member-bills list --member-uri http://dati.senato.it/senatore/32
|
|
313
|
+
italianparliament member-bills list --member-uri http://dati.camera.it/ocd/deputato.rdf/d308920_19
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
## Stato
|
|
317
|
+
|
|
318
|
+
36 tool implementati. Vedi `LOG.md` per il diario di avanzamento e `RELEASING.md` per il processo di rilascio.
|
|
319
|
+
|
|
320
|
+
## Licenza
|
|
321
|
+
|
|
322
|
+
MIT
|