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) — 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 (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).
  • 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 with cerca_pnrr's cup field. 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_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.
  • 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 responds NOKSN with 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

open_parlamento_mcp-0.3.0.tar.gz (45.6 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.3.0-py3-none-any.whl (37.5 kB view details)

Uploaded Python 3

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

Hashes for open_parlamento_mcp-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8635acbaab89af126e6aefb62c6aa42aba0497e96a6ca9de6b93c3de9242ed46
MD5 156da2bc4b01e93810f8416140541678
BLAKE2b-256 21b8c8d7552cf1407eb098807d6edb8c8e87e88f0a0571a27b93a18ab8fca0ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for open_parlamento_mcp-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ab237ecd99502b760ae3ed03acebab1b8eb17427c4bc5886e65bba8f74b2e85
MD5 8c654cdef8bee3e0318376ed27a96131
BLAKE2b-256 bd815e2d6c8da6ec1bd5fc560c3d221adc6a0f03ac9452afbdb1c86d591669a5

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.4

2 files

0.3.3

2 files

This release

0.3.0 This release

2 files

0.2.3

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