@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 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