Skip to main content

open-parlamento-mcp — Italian Law & Public Data MCP Server

PyPI version License: Apache-2.0 Listed in italia-mcp-servers

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) — 24 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

  • 24 MCP tools across law, EU law, case law, parliamentary iter, curated Parliament data (OpenPolis), open data, official statistics, and two focused datasets (PNRR, 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 (default http://localhost:9622) — used only by cerca_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 for cosa_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 with cosa_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).
  • 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_legge requires a reachable LightRAG instance with the legal corpus ingested — it currently covers Constitution + Codice Penale, not the full body of Italian law.
  • cerca_sentenze_cassazione only 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_amministrativa returns dataset-level results (rulings/appeals by subject), not individual full-text rulings.
  • cosa_modifica/chi_modifica/giurisprudenza_su/casi_pendenti_su read 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.

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

open_parlamento_mcp-0.2.3.tar.gz (30.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

open_parlamento_mcp-0.2.3-py3-none-any.whl (35.1 kB view details)

Uploaded Python 3

File details

Details for the file open_parlamento_mcp-0.2.3.tar.gz.

File metadata

  • Download URL: open_parlamento_mcp-0.2.3.tar.gz
  • Upload date:
  • Size: 30.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for open_parlamento_mcp-0.2.3.tar.gz
Algorithm Hash digest
SHA256 f72d80ea7161280f9fe22a81302f3fc81da8ab39253c110b56bef72697146d91
MD5 830f52841c4b512ece761576b81c52a9
BLAKE2b-256 5d24abfcd81a61ff95a8e6f6377f1d6f32ce99a61a0d7070d804e575cb03f6f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_parlamento_mcp-0.2.3.tar.gz:

Publisher: publish.yml on giuliogarofalo/open-parlamento-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file open_parlamento_mcp-0.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for open_parlamento_mcp-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 538f50ab1c720595b529db93a225a8e0d6c350b8f31771f82d73aeeca0304bc2
MD5 6b7de1ce2552e892ebb03639df184bcf
BLAKE2b-256 ebec8dbc2aedbd0a43e7bc7f0f133a2edd1fa48ca6ad486ed860c7b652b7f1ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_parlamento_mcp-0.2.3-py3-none-any.whl:

Publisher: publish.yml on giuliogarofalo/open-parlamento-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.3.4

2 files

0.3.3

2 files

0.3.0

2 files

This release

0.2.3 This release

2 files

0.2.1

1 file

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page