open-parlamento-mcp — Italian Law & Public Data MCP Server
MCP (Model Context Protocol) server joining Italian & EU law (Constitution, codes, EU legislation, case law, with citations) with public data (open data portals, official statistics, PNRR, migration reception centers) and curated Parliament data (OpenPolis) — 25 tools, one server.
Overview
Most Italian legal/civic MCP servers cover one slice: either the law, or one data source, or parliamentary acts. open-parlamento-mcp covers all three, because answering "is X legal?" or "how much did Y cost?" properly requires citing the norm and the data together — that's the whole point of Open Parlament, the project this server was built for.
Key Features
- 25 MCP tools across law, EU law, case law, parliamentary iter, curated Parliament data (OpenPolis), open data, official statistics, and three focused datasets (PNRR, PNRR contract awards, migrant reception)
- Citation-grounded: legal answers point to the actual article (
Cost. art. 3,C.p. art. 575), never a bare LLM guess - Multi-source data: CKAN (dati.gov.it + regional/local portals), Eurostat, EUR-Lex, Gazzetta Ufficiale, Normattiva modification graph
- Complements RepublicMCP (deep SPARQL access to Camera/Senato ontologies) with a broader, curated surface — use RepublicMCP for raw parliamentary SPARQL depth, this server for law + cross-domain data in one place
Quick Start
Installation
pip install open-parlamento-mcp
Configuration with Claude Desktop
{
"mcpServers": {
"open-parlamento": {
"command": "open-parlamento-mcp"
}
}
}
Or run directly: python -m open_parlamento_mcp.server
Environment
LIGHTRAG_URL(defaulthttp://localhost:9622) — used only bycerca_legge, which queries a LightRAG instance holding the ingested legal corpus. Without it reachable, every other tool still works (they're independent HTTP/SPARQL clients with no shared state).OPENPOLIS_API,OPENPOLIS_LEG,OPENPOLIS_TOKEN,OPENPOLIS_TTL— optional, for the OpenPolis-backed tools (anonymous access works, token raises rate limits).NORME_EDGES_DIR,SENTENZE_EDGES,PENDENZE_EDGES— optional local corpus paths forcosa_modifica/chi_modifica/giurisprudenza_su/casi_pendenti_su; without them those tools degrade gracefully (see Known Limitations).
Available MCP Tools
Diritto italiano
cerca_legge(domanda)— Answers a legal question from Italian law (Constitution + codes) via LightRAG, citing the exact articles (Cost. art. 3,C.p. art. 575).
Normattiva — relazioni di modifica
cosa_modifica(norma)— What a law/decree modifies, abrogates, replaces, or inserts (authoritative Normattiva relations), grouped by intervention type.chi_modifica(norma)— Which acts have modified a given norm/article.novita_normative(argomento?, serie?)— Latest acts published in Gazzetta Ufficiale (official RSS feed).
Diritto UE
cerca_legge_ue(argomento)— EU legislation (regulations, directives, decisions) by topic via EUR-Lex, with CELEX + link.
Giurisprudenza
cerca_sentenze_ue(argomento)— CJEU/General Court case law via EUR-Lex (CELEX sector 6).cerca_sentenze_cost(argomento)— Corte Costituzionale rulings by topic, official massime (1956→today).giurisprudenza_su(norma)— Which Corte Costituzionale rulings decided on a given norm/article, and the outcome (unconstitutional / unfounded / inadmissible).casi_pendenti_su(norma)— Is a norm/article currently under challenge before the Corte Costituzionale (pending cases, from atti di promovimento)?cerca_sentenze_cassazione(argomento)— Corte di Cassazione rulings (civil + criminal) via SentenzeWeb, last ~6 years.cerca_giustizia_amministrativa(parole_chiave)— Consiglio di Stato + TAR data via the OpenGA open-data portal (dataset-level: rulings/appeals by subject, not individual full-text rulings).
Iter parlamentare
cerca_ddl_senato(argomento)— Senato bills by topic, with progress status.cerca_atti_camera(argomento)— Camera bills/proposals by topic, with iter status.
For deep SPARQL access to the full Camera/Senato ontologies (deputies, votes, groups, commissions, governments) see RepublicMCP — these two tools are a thin, topic-search-first complement, not a replacement.
OpenPolis · Openparlamento
Curated, enriched Parliament data via the OpenPolis OPDM API. License: CC-BY-NC — non-commercial use, attribute "Fonte: Openpolis".
cerca_parlamentari(testo?, ruolo?, solo_attivi?)— Search deputies/senators by name or role, ranked by power index.indice_di_forza(ramo?, limite?)— Power-index ranking of parliamentarians (Openpolis-exclusive metric).profilo_parlamentare(nome)— Member profile: group, role, constituency, attendance stats.cerca_votazioni(testo?, solo_voti_chiave?, solo_finali?, solo_fiducia?, esito?)— Votes by topic, with outcome, confidence/key-vote flags, cohesion.decreti_legge(testo?, stato?)— Decree-laws with conversion status and Normattiva link (chainable withcosa_modifica).attivita_legislativa(testo?, tipo?, stato?, ramo?)— Bills/acts across both chambers with iter phase, sponsors, rapporteurs.organi_parlamentari(ramo?, tipo?)— Groups (with power weights), presidency, or commissions.
Dati pubblici & statistiche
cerca_dati(parole_chiave)— Real datasets from Italian (dati.gov.it + regional/local CKAN portals) and EU (data.europa.eu) open-data catalogs.cerca_statistiche(argomento)— Official Eurostat statistics (unemployment, inflation, population, life expectancy, poverty, public debt, GDP...).
Temi specifici
cerca_pnrr(tema)— PNRR-funded projects by topic/place, with amount and iter phase. Source: OpenPNRR (Fondazione Openpolis, ODbL 1.0).dettaglio_appalto_pnrr(cup)— Who actually won the contract behind a PNRR project (CUP), and for how much: awardee, awarded amount, discount, date — or the tender's status if not yet awarded. Chain withcerca_pnrr'scupfield. Source: Servizio Contratti Pubblici (MIT) + ANAC.accoglienza_migranti(luogo)— Migrant reception centers (CAS/CPA/Hotspot) by municipality/province/region: capacity, operator, daily cost. Source: Centri d'Italia (Fondazione Openpolis, CC-BY 4.0).
Known Limitations
cerca_leggerequires a reachable LightRAG instance with the legal corpus ingested — it currently covers Constitution + Codice Penale, not the full body of Italian law.cerca_sentenze_cassazioneonly covers the last ~6 years (SentenzeWeb's public window) — full historical Cassazione case law (CED) sits behind a personal SPID-authenticated session, not automatable as open data.cerca_giustizia_amministrativareturns dataset-level results (rulings/appeals by subject), not individual full-text rulings.cosa_modifica/chi_modifica/giurisprudenza_su/casi_pendenti_suread from local pre-built corpora (NORME_EDGES_DIR,SENTENZE_EDGES,PENDENZE_EDGES) — without those paths configured they return empty results rather than failing.- OpenPolis-backed tools are non-commercial use only (CC-BY-NC) — don't repackage that data behind a paywall.
dettaglio_appalto_pnrr's ANAC enrichment only returns rich data for "smart CIG" (below-threshold purchases); for "ordinary CIG" (most large PNRR contracts) ANAC's API respondsNOKSNwith partial data and no awardee — the awardee itself always comes from the SCP "Esiti" dataset instead, so this doesn't block the tool, just limits what the ANAC enrichment adds.
Related projects
Part of the italia-mcp-servers ecosystem. If you're building in this space:
- RepublicMCP — sibling project, deep SPARQL access to the official Camera/Senato ontologies (30+ tools, hand-mapped OCD/OSR type system).
- mcp-legal-it / BetterCallClaude Italia — other Normattiva/case-law MCP servers, useful cross-reference for citation handling.
- ckan-mcp-server — generic CKAN connector (945+ portals) if you need broader open-data coverage than the bundled
cerca_dati.
Integration Context
Developed as part of Open Parlament, an agent that answers questions about the Italian state by joining law with public data, with real citations. Works entirely standalone as a general-purpose MCP server, independent of Open Parlament.
License
Apache-2.0
Maintained by: Giulio Garofalo — part of Open Parlament
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file open_parlamento_mcp-0.3.0.tar.gz.
File metadata
- Download URL: open_parlamento_mcp-0.3.0.tar.gz
- Upload date:
- Size: 45.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8635acbaab89af126e6aefb62c6aa42aba0497e96a6ca9de6b93c3de9242ed46
|
|
| MD5 |
156da2bc4b01e93810f8416140541678
|
|
| BLAKE2b-256 |
21b8c8d7552cf1407eb098807d6edb8c8e87e88f0a0571a27b93a18ab8fca0ce
|
File details
Details for the file open_parlamento_mcp-0.3.0-py3-none-any.whl.
File metadata
- Download URL: open_parlamento_mcp-0.3.0-py3-none-any.whl
- Upload date:
- Size: 37.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ab237ecd99502b760ae3ed03acebab1b8eb17427c4bc5886e65bba8f74b2e85
|
|
| MD5 |
8c654cdef8bee3e0318376ed27a96131
|
|
| BLAKE2b-256 |
bd815e2d6c8da6ec1bd5fc560c3d221adc6a0f03ac9452afbdb1c86d591669a5
|