mcpField
I
it-eli-mcp

it-eli-mcp

ローカル
github.com/matematicsolutions法務・行政03 週間前に更新

it-eli-mcp について

it-eli-mcpは、イタリア法を扱う法律実務家やMCPクライアント向けのサーバーです。Normattivaの法令、憲法裁判所のローカル索引、2系統の裁判例検索と引用検証を提供します。

主な機能

  1. 01Normattivaの法令と過去時点の版を検索
  2. 02憲法裁判所の判決全文を検索
  3. 03最高裁判決をリアルタイム検索
  4. 04行政裁判所の判決をリアルタイム検索
  5. 05法令・憲法裁判例の引用を検証

活用シーン

  1. 01指定日の法令本文を確認
  2. 02イタリアの裁判例を検索・閲覧
  3. 03法律メモの引用を点検

MCP 対応

MCPサーバーとして、イタリア法令、憲法裁判所の裁判例、Cassazioneおよび行政裁判所の検索、引用検証ツールをクライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"matematicsolutions-it-eli": {
"command": "uvx",
"args": [
"italy-eli-mcp"
]
}
}
}
起動コマンドuvx italy-eli-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiitaly-eli-mcp0.7.3

ツール

14

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

it-eli-mcp

イタリア法向けの MCP サーバーです。2 つのレイヤーで構成されています。

  • Normattiva を利用した法令。これは Ministero della Giustizia の公式ポータルです。法令を検証可能な URN:NIR および ELI 識別子を含む Akoma Ntoso 形式で取得し、過去の任意の日付時点で有効だった条文(multivigenza)を返します。ライブ接続で、API キーは不要です。
  • 憲法裁判所の判例(Corte Costituzionale)。1956 年以降のすべての判決を対象とする、ローカルのキー不要な全文インデックスです。各判決に固有の ECLI が付与されており、裁判所の公式オープンデータから構築されています。
  • 最高裁判所の判例(Corte di Cassazione)。SentenzeWeb を対象にした、ライブ接続でキー不要の全文検索です。民事・刑事の判決を全文 OCR テキスト付きで検索できます。ローカルインデックスの構築は不要です。
  • 行政裁判所の判例(Consiglio di Stato、C.G.A.R.S.、TAR)。Giustizia Amministrativa ポータル独自の公開判決検索を対象とした、ライブ接続でキー不要の検索です。行政司法全体を 1 つのバックエンドでカバーし、固有の ECLI と構造化された全文を持つ 340 万件以上の決定を検索できます。

CCBE の統計によると、イタリアは弁護士数で EU 最大の法曹人口を擁し、約 24 万人に上ります。ドイツとスペインを上回る規模です。これまで、法令集をカバーするライブ接続でキー不要の MCP コネクターはありませんでした。このコネクターはそれを実現し、憲法裁判所の判例もカバーしています。

MateMatic の eu-legal-mcp 本番ラインの一部です。イタリア向けの姉妹プロジェクトである de-eli-mcp(ドイツ)および sejm-eli-mcp(ポーランド)と同じアーキテクチャと引用仕様を採用し、イタリアの情報源に対応しています。

JSON API はありません。 Normattiva は REST API を公開していません。このコネクターは、ブラウザーと同じセッションベースの手順(URN の解決、法令ページの読み込み、Akoma Ntoso エクスポートの取得)を実行するため、各法令を ELI を保持した構造化 XML として返します。詳しくは DISCOVERY.md をご覧ください。

ライセンス。 イタリアの公式法令文書は著作権の対象外(art. 5, l. 633/1941)であり、Normattiva は 2026-01-01 以降のデータに CC-BY-4.0 を適用すると宣言しています。このコネクターは、帰属表示と source_url を付けて、リクエストに応じて個別の法令を中継します。データベースの一括取得は行いません(Normattiva の利用規約で制限されています)。各レスポンスには dataset_note が含まれます。(これは実務家による見解であり、正式な法律上の助言ではありません。)

Cassazione は Italgiure/ItalgiureWeb ではありません。 裁判所の全データベースを対象とする検索(ItalgiureWeb、3,500 万件以上の文書)は、司法関係者には無料ですが、実務家には有料サブスクリプションが必要です。このコネクターはそのサービスを利用しません。代わりに、裁判所自身が公開する別個の無料公開検索エンジンである SentenzeWeb(italgiure.giustizia.it/sncass)を、認証なしで検索します。これは**Italian Open Data License(IODL 2.0)**に基づいており、開発中にライブ環境で確認済みです(詳しくは DISCOVERY.md をご覧ください)。対象範囲は Italgiure の全データベースより狭いものの、全文 OCR テキスト付きの民事・刑事判決を 42 万件以上収録しています。

法令ツール(Normattiva、ライブ接続)

ツール機能
it_list_codes主要なイタリアの法典および統合法令(Codice civile、penale、di procedura、privacy/GDPR、CAD、D.Lgs. 231/2001、Costituzione、L. 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_decisionECLI(ECLI:IT:COST:2024:1)または年と番号を指定して、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_getSentenzeWeb の sic_id(検索結果から取得)を指定して、1件の判決全文を取得します。

取り込み処理は不要です。各呼び出しで 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_searchGiustizia Amministrativa ポータルで、全文検索および/または判決番号による検索を行います。行政司法全体(340万件以上の決定)を対象とする単一のバックエンドです。sede、tipo、numero、anno で絞り込めます。検索結果には、裁判所独自の ECLI が含まれます。
it_ga_get_decision検索結果からそのまま取得した document_url を指定して、1件の判決全文を取得します。

取り込み処理は不要です。各呼び出しでポータル独自の公開判決検索にリアルタイムで問い合わせます。

引用の検証(ハルシネーション対策)

ツール機能
it_verify_citations作成した回答、メモ、契約条項など、任意のテキストからイタリア法の引用を抽出し、それぞれの引用元を照合して検証します。法律の引用(art. 2043 c.c., art. 5 della legge 241/1990, artt. 1341 e 1342 c.c., 項)は、最新の 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 で解決できない法律はハルシネーションではなくギャップです。存在が否定されたのではなく、存在が不明であるためです。破毀院および行政裁判所の 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 もブロックされるため、pip install ではなく python -m pip でインストールしてください。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.it
  • IT_ELI_CACHE_DIR - デフォルトは ~/.matematic/cache/it-eli
  • IT_ELI_AUDIT_DIR - デフォルトは ~/.matematic/audit
  • IT_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 を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。