关于 it-eli-mcp
it-eli-mcp 为法律专业人士及需要意大利法律资料的 MCP 客户端提供法规与判例检索。它结合 Normattiva 实时法规、宪法法院本地索引及两类法院的实时判例搜索,并支持引文核验。
主要功能
- 01检索 Normattiva 法规及历史版本
- 02搜索宪法法院判决全文
- 03实时搜索最高法院判决
- 04实时搜索行政法院判决
- 05核验法规与宪法判例引文
适用场景
- 01按指定日期查询法条版本
- 02搜索并读取意大利法院判决
- 03检查法律备忘录中的条文引用
MCP 相关
作为 MCP 服务,它向客户端提供意大利法规、宪法法院判例、Cassazione 与行政法院检索,以及引文核验工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
14收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
it-eli-mcp
一个用于意大利法律的 MCP 服务,分为两层:
- 立法:通过 Normattiva 获取,该网站是司法部的官方门户。服务以 Akoma Ntoso 格式获取法律文本,提供可验证的 URN:NIR 和 ELI 标识符,并返回法律在任意过去日期的文本版本(multivigenza)。实时访问,无需密钥。
- 宪法判例(Corte Costituzionale):本地、无需密钥的全文索引,涵盖自 1956 年以来的所有裁决,每项裁决均带有其原生 ECLI,索引根据法院的官方开放数据构建。
- 最高法院判例(Corte di Cassazione):实时、无需密钥地搜索 SentenzeWeb 全文;这是法院自有的免费公共搜索引擎,涵盖民事和刑事裁决,提供完整 OCR 文本,无需构建本地索引。
- 行政判例(Consiglio di Stato、C.G.A.R.S.、TAR):实时、无需密钥地搜索 Giustizia Amministrativa 门户自有的公共裁决搜索系统;一个后端覆盖整个行政司法体系,包含 340 多万份裁决,带有原生 ECLI 和结构化全文。
按人数计算,意大利拥有欧盟规模最大的法律职业群体——根据 CCBE 数据,律师约有 24 万人,领先于德国和西班牙。此前没有实时、无需密钥的 MCP 连接器覆盖其成文法。本项目填补了这一空白,同时也覆盖宪法判例。
这是 MateMatic eu-legal-mcp 生产线的一部分:意大利版本与德国的 de-eli-mcp 和波兰的 sejm-eli-mcp 同属一个系列,采用相同架构和引文约定,并接入意大利数据源。
没有 JSON API。 Normattiva 不提供 REST API。此连接器采用浏览器使用的同一套基于会话的流程——解析 URN、读取法律页面、获取其 Akoma Ntoso 导出文件——因此每项法律都会以结构化 XML 返回,并保留其 ELI。请参阅
DISCOVERY.md。许可。 意大利官方法律文本不受版权保护(第 633/1941 号法律第 5 条),且 Normattiva 声明自 2026-01-01 起,其数据采用 CC-BY-4.0 许可。此连接器按请求转发单项法律,并注明出处和
source_url;不会批量抓取数据库(Normattiva 的条款对此有限制)。每个响应都包含dataset_note。(这是执业者的理解,并非正式法律建议。)Cassazione 并非 Italgiure/ItalgiureWeb。 法院的完整数据库搜索(ItalgiureWeb,包含 3,500 多万份文档)仅对司法人员免费;执业者需付费订阅。此连接器不使用该服务。它查询的是 SentenzeWeb(
italgiure.giustizia.it/sncass),这是法院另行发布的免费公共搜索引擎,依据**意大利开放数据许可(IODL 2.0)**提供,无需身份验证——开发期间已进行实时验证(请参阅DISCOVERY.md)。其覆盖范围小于完整的 Italgiure 数据库,但内容真实可靠:提供 42 万多项民事和刑事裁决的完整 OCR 文本。
立法工具(Normattiva,实时)
| 工具 | 功能 |
|---|---|
it_list_codes | 列出主要意大利法典和汇编法律(《民法典》《刑法典》《民事诉讼法典》《刑事诉讼法典》、隐私/GDPR、CAD、第 231/2001 号立法法令、《宪法》、第 241/1990 号法律)及其规范性 URN。 |
it_resolve | 将法律坐标(act_type、year、number)转换为规范且可解析的 URN:NIR。离线使用。 |
it_get_act | 根据法典名称、URN、ELI 路径或 normattiva.it URL 获取法律元数据(标题、日期、ELI、条款数量)。 |
it_get_text | 获取整部法律或单个 article 的文本;使用 at_date 获取指定日期的文本版本。 |
宪法法院判例工具(Corte Costituzionale,本地索引)
| 工具 | 功能 |
|---|---|
it_case_search | 在裁决全文(标题、理由、裁决主文)中进行全文搜索。可按年份和类型(sentenza/ordinanza)筛选。忽略重音符号。 |
it_case_get_decision | 根据 ECLI(ECLI:IT:COST:2024:1)或年份 + 编号获取一项裁决的全文。 |
it_case_recent | 获取最新的裁决(按时间从新到旧排列)。 |
it_case_stats | 索引覆盖情况:裁决总数、年份范围、按类型统计的数量、上次构建时间。 |
判例工具读取本地 SQLite 索引,该索引会在首次调用时自动配置——无需进行设置。首次使用时,服务会从 GitHub 发布版本下载经过 sha256 校验的预构建 cost.sqlite.gz(由 CI 在每次发布时构建并附加),并将其解压;如果没有已发布的文件,则会根据法院的开放数据构建索引(包含自 1956 年以来的所有裁决)。之后,索引会缓存在 ~/.matematic 下,后续每次调用都会离线查询。it_case_stats 会报告 provenance 和 ingested_at,方便你查看索引的新旧程度。
如需刷新,或提前预构建索引(例如用于离线部署),请运行:
italy-eli-mcp-caselaw-ingest
可调节的环境变量:IT_ELI_CASELAW_INDEX_URL(覆盖/禁用预构建文件下载)、IT_ELI_CASELAW_INDEX_SHA256(固定校验和)、IT_ELI_CASELAW_AUTOBUILD=0(跳过自动本地构建)。立法工具无需索引,会实时获取数据。
最高法院判例工具(Corte di Cassazione、SentenzeWeb,实时)
| 工具 | 功能 |
|---|---|
it_cassazione_search | 在裁决正文中进行全文搜索。筛选条件:chamber(“civile”/“penale”)、sub_chamber(“lavoro”/“tributaria”)、anno(年份)。返回按相关度排序的结果,并附有高亮摘录。 |
it_cassazione_get | 根据 SentenzeWeb 的 sic_id(取自搜索结果)获取一项裁决的全文。 |
无需导入步骤——每次调用都会实时查询 SentenzeWeb。覆盖范围:民事(snciv,约 19 万项)和刑事(snpen,约 23.8 万项)裁决,包括劳动(szdec:L,约 3 万项)和税务(szdec:5,约 5.9 万项)分庭,均提供 OCR 全文。
行政法院判例工具(Consiglio di Stato、C.G.A.R.S.、TAR,实时)
| 工具 | 功能 |
|---|---|
it_ga_search | 在 Giustizia Amministrativa 门户中进行全文搜索和/或按裁决编号查找——通过一个后端覆盖整个行政司法管辖区(340 多万项裁判文书)。筛选条件:sede、tipo、numero、anno。结果附有法院原生 ECLI。 |
it_ga_get_decision | 根据 document_url(从搜索结果中原样复制)获取一项裁决的全文。 |
无需导入步骤——每次调用都会实时查询该门户自己的公开裁决搜索服务。
引文核验(防止幻觉)
| 工具 | 功能 |
|---|---|
it_verify_citations | 从任意文本(草拟的答复、备忘录、合同条款)中提取意大利法律引文,并逐条对照来源进行核验。法规引文(art. 2043 c.c., art. 5 della legge 241/1990, artt. 1341 e 1342 c.c., commi)会逐条对照 Normattiva 上的现行法规进行检查;ECLI:IT:COST:* 引文则会对照本地宪法法院索引进行检查。 |
it_coverage | 声明此连接器涵盖的内容、各类数据的采集时间,以及明确说明未涵盖的内容。每个缺口都提供备用方案。 |
每条引文及整体报告的内容:
- 是否存在,并提供范围提示。 如果所引条文不存在,结果会显示为
not_found,并提示实际存在的条文范围:art. 9999 does not exist in this act; the act has 372 articles, numbered art. 1-372。 - 可选的内容检查。 引文后紧跟的括号描述(
art. 2043 c.c. (risarcimento per fatto illecito))会使用字符三元组匹配,与实际条文进行比对。不匹配会触发审查提示(content_mismatch),但不会直接拦截——改述是合理的。 - 严格的语义判定。 如果任何所引条文不存在,结果状态会设为
HALLUCINATION_DETECTED,且工具响应会携带isError=true,调用模型因此不会误将其视为核验通过。如果文本中完全没有引文,状态会设为NO_CITATIONS_FOUND——明确表示并未成功核验。 - 结构化的
gaps。 工具无法核验的所有内容都会以带类型的缺口列出(out_of_corpus、unparseable_citation、act_unresolvable、upstream_unavailable、comma_not_checkable),而不是隐含在说明文字中。Normattiva 无法解析的法规属于缺口,而非幻觉:其是否存在尚不确定,并未被证伪。Cassazione 和行政法院的 ECLI 不在本地语料库中;请使用it_cassazione_search/it_ga_search核验。
it_verify_citations(text="L'art. 2043 c.c. e l'art. 9999 della legge 241/1990 si applicano.")
→ status: "HALLUCINATION_DETECTED" (isError=true)
citations: [
{raw: "art. 2043 c.c.", status: "verified", ...},
{raw: "art. 9999 della legge 241/1990", status: "not_found",
range_hint: "art. 9999 does not exist in this act; the act has <N> articles, ..."}
]
gaps: []
解析、核验、报告这一流程改编自 chrisryugj/korean-law-mcp(MIT)——详见
THIRD_PARTY.md。内容匹配器使用字符三元组(韩文原版使用二元组,更适合黏着语;对意大利语而言,三元组的区分度更高)。
每个法规响应都包含引文契约:eli_uri(例如
eli/id/1990/08/18/090G0294/CONSOLIDATED)、urn(例如
urn:nir:stato:legge:1990-08-07;241)、human_readable_citation(例如
Legge 7 agosto 1990, n. 241)和 source_url。
如何识别法规
- URN:NIR -
urn:nir:{authority}:{type}:{date};{number}。仅包含年份的部分 URN(urn:nir:stato:legge:1990;241)也可以解析,因此你可以引用只知道为“L. 241/1990”的法规。 - ELI -
eli/id/{year}/{month}/{day}/{code}/CONSOLIDATED,从法规本身读取。绝不自行编造。
示例
it_list_codes()
→ [{key: "codice civile", urn: "urn:nir:stato:regio.decreto:1942-03-16;262", ...}, ...]
it_resolve(act_type="d.lgs", year=2001, number=231)
→ {urn: "urn:nir:stato:decreto.legislativo:2001;231",
human_readable_citation: "Decreto legislativo n. 231/2001", source_url: "..."}
it_get_text(reference="codice civile", article="2043")
→ art. 2043 c.c. (Risarcimento per fatto illecito), with eli_uri + source_url
it_get_text(reference="codice privacy", article="1", at_date="2010-01-01")
→ the privacy code's art. 1 as it stood on 1 January 2010
it_cassazione_search(query="responsabilita medica", chamber="civile", limit=5)
→ {total_found: 81177, hits: [{sic_id: "snciv2025224393O",
citation: "Cass. civ., ord. n. 24393/2025", snippet: "...", source_url: "..."}, ...]}
it_cassazione_get(sic_id="snciv2025224393O")
→ {citation: "Cass. civ., ord. n. 24393/2025", testo: "...", massima: "...", source_url: "..."}
安装
作为 Claude 插件(Claude Code 或桌面应用,需要 uv)安装; 有关其发送和存储的内容,请参阅 plugin/README.md:
/plugin marketplace add matematicsolutions/it-eli-mcp
/plugin install it-eli-mcp@it-eli-mcp
作为独立服务,可从 PyPI(uvx italy-eli-mcp)安装,也可从源码安装:
cd it-eli-mcp
pip install -e .
配置(Claude Code / 任意 MCP 客户端)
复制 .mcp.json.example:
{
"mcpServers": {
"it-eli-mcp": { "command": "italy-eli-mcp" }
}
}
启用了 Smart App Control 的 Windows 11
Smart App Control 会阻止未签名的可执行文件,其中包括 uvx.exe、pip.exe
以及 pip 在安装时生成的 italy-eli-mcp.exe 启动器。python.org 安装程序提供的 python.exe 和
py.exe 由 Python Software
Foundation 签名,因此通过解释器运行模块即可:
python -m pip install italy-eli-mcp
python -m it_eli_mcp
pip.exe 也会因同样的原因被阻止,因此请使用 python -m pip 安装,而不是
pip install。如果 python 不在 PATH 中,请使用 Windows 启动器:py -3 -m it_eli_mcp。
{ "mcpServers": { "italy-eli-mcp": { "command": "python", "args": ["-m", "it_eli_mcp"] } } }
不要为了绕过此限制而关闭 Smart App Control——关闭后,只有重新安装 Windows 才能重新启用它。
环境变量:
IT_ELI_BASE_URL- 默认值为https://www.normattiva.itIT_ELI_CACHE_DIR- 默认值为~/.matematic/cache/it-eliIT_ELI_AUDIT_DIR- 默认值为~/.matematic/auditIT_ELI_CASELAW_DB- 宪法判例索引路径(默认值为~/.matematic/data/it-eli-caselaw/cost.sqlite)IT_ELI_CASELAW_INDEX_URL- 预构建索引下载 URL(默认值:GitHub 发布资源;''表示禁用)IT_ELI_CASELAW_INDEX_SHA256- 固定预期索引校验和,不再获取.sha256旁置文件IT_ELI_CASELAW_AUTOBUILD- 设为0可跳过自动本地构建(优先返回index_missing错误)
测试
pip install -e ".[dev]"
pytest -m "not smoke" # offline (URN, Akoma Ntoso parser, case-law index, drift)
pytest -m smoke # live: Normattiva + Corte Costituzionale open data + SentenzeWeb
审计日志
每次工具调用都会向 ~/.matematic/audit/it-eli-mcp.jsonl 追加一行 JSON(时间戳、工具、
输入哈希、输出大小、耗时、状态),用于记录。不会存储原始查询文本。
许可证
Apache-2.0。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。