mcpField
L
Légifrance (unofficial)

Légifrance (unofficial)

ローカル
github.com法務・行政0今日更新

Légifrance (unofficial) について

Légifrance (unofficial)は、PISTE APIを通じてフランスの法令や判例を検索・取得する、読み取り専用のRust製MCPサーバーです。出典付きの引用を返し、法的調査や文書確認に使える引用の解決・検証機能も備えています。

主な機能

  1. 01法令、法典、判決、協定を検索
  2. 02法令本文と司法判断を取得
  3. 03法的引用を解決・検証
  4. 04日付別に条文の版を比較
  5. 05応答量を抑える段階的な読み取り

活用シーン

  1. 01キーワードでフランスの法令や判例を検索
  2. 02出典付きで条文や判決を取得
  3. 03法律文書の草稿にある引用を検証
  4. 04異なる日付の条文内容を比較

MCP 対応

13の読み取り専用ツール、対象範囲リソース、法令用リソーステンプレート、フランス語プロンプト3種、引数補完を提供します。PISTE経由でLégifranceを検索します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbmcp-legifrance-1.1.0.mcpb1.1.0
ocighcr.io/muchiny/mcp-legifrance:1.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mcp-legifrance

DILA とは関係のない非公式プロジェクトです。DILA からの提携・承認は受けていません。

リポジトリ:https://github.com/muchiny/mcp-legifrance

フランスの公式法令(法律、法典、判例、労働協約)を検索する Rust 製 MCP サーバーです。PISTE ポータルの Légifrance API を読み取り専用で利用し、Légifrance が公開しているテキストを、引用および出典のアドレスとともに返します。MCP 2026-07-28 仕様を対象とし、2025-11-25 および 2025-06-18 のクライアントとの互換性も維持しています。

署名されていないバイナリです。 バイナリと MCPB バンドルには、いかなる証明書による署名もありません(Windows の Authenticode 署名も、macOS の公証もありません)。Windows では Smart App Control によって実行ファイルがブロックされることがあります。無効にせず、Docker イメージまたは WSL を使用してください。macOS では Gatekeeper による確認が求められることがあります。SHA-256 チェックサムと GitHub の来歴証明で、インストールするものを検証できます(ダウンロードの検証を参照)。

ステータス。 このページではバージョン 0.3.0 について説明しています。インストールコマンドは、タグ v0.3.0 とその GitHub リリースが公開された時点から使用できます。それまでは、リポジトリをクローンしてビルドする方法のみ利用できます。

目次

  1. サーバーの機能
  2. インストール前に:PISTE アプリケーション
  3. インストール方法
  4. クライアントの設定
  5. 環境変数
  6. オフラインモード(DILA ローカルインデックス)
  7. 接続先ホスト
  8. クレジット表示、データライセンス、非提携について
  9. fr-eli-mcp からの移行
  10. プライバシーとセキュリティ
  11. 未検証の項目
  12. 開発とコントリビューション

サーバーの機能

Légifrance に対してネットワーク経由でクエリを実行する、読み取り専用(readOnlyHint)のツールが13個あります(openWorldHint)。

ツール役割
fr_search法令コレクションをキーワードで検索します:LODA(法律および政令)、CODE、JURI(破毀院および控訴院)、CONSTIT、CETAT、CNIL、KALI(労働協約)、ACCO(企業協定)。ページネーション、日付フィルター、指定日時点で有効なバージョンに対応しています。
fr_get_act指定日時点での法令(法律、政令、法典)の目次を取得します。
fr_get_text記事の本文を取得します。段階的に読み取れます(以下を参照)。
fr_get_decision司法判断を取得します(破毀院、憲法院、国務院、控訴院、行政裁判所)。
fr_get_deliberationCNIL の決定を取得します。
fr_get_convention労働協約のメタデータと目次を取得します。
fr_get_company_agreement企業協定のメタデータのみを取得します(本文は添付ファイルです)。
fr_coverageサーバーが対応している内容と対応していない内容、PISTE 環境、設定の状態、情報源および参照日を確認します。
fr_resolve自由形式の引用(「article 1240 du code civil」、「Cass. civ. 1re, 4 juin 2025, n° 24-13.470」、ECLI など)を、信頼度を付けて Légifrance の識別子に変換します。推測や捏造は一切しません。
fr_verify_citationsテキスト内のすべての法律上の引用(最大20,000文字。回答の草稿など)を Légifrance で検証します。法典、法律、政令、司法判断、ECLI、CNIL の決定、労働協約に対応しています。
fr_get_related記事または司法判断に関連する法律文書のリンクを取得します:引用された文書、その文書を引用している文書、言及されている判例。
fr_diff_article2つの日付における記事のバージョンを比較し、削除箇所と追加箇所を前後の文脈とともに表示します。
fr_search_all複数のコレクションを一度に検索し、各コレクションの上位の結果をコレクションごとにまとめて合計件数とともに表示します。

段階的な返却。 モデルのコンテキストを節約するため、1,200文字を超える本文は最初に要約として返されます。全文を読むには、detail: "full" を指定し、offset = next_offset として続けて取得してください。focus を使うと、指定した単語に一致する箇所を抽出できます。JSON をコンパクトにした状態でも、1回の応答が45,000文字を超えることはありません。

リソース、プロンプト、補完。 ツールに加えて、サーバーはリソース legifrance://coverage、4つのリソーステンプレート(legifrance://act/{text_id}、legifrance://article/{article_id}、legifrance://code/{code}/article/{num}、legifrance://decision/{decision_id})、フランス語の3つのプロンプト(analyser_decision、etat_du_droit、verifier_citations)と、それらの引数の補完を提供します。

コンパイルオプション。公開済みバイナリには含まれていません。 ローカルの Streamable HTTP トランスポート(--features http、サブコマンド serve-http、ループバックのみ、トークンは LF_MCP_HTTP_TOKEN)はコードに含まれており、必要に応じてコンパイルできますが、バイナリ、Docker イメージ、MCPB バンドルには含まれていません。

オフラインモード。バージョン1.0.0以降の公開済みバイナリに含まれています。 ローカル DILA インデックス(dila 機能、LEGI コレクションのみ、LF_DILA_DIR で有効化)は、サブコマンド build-dila-index で構築できます。詳しくはオフラインモードを参照してください。ローカルインデックスはスナップショットです。Légifrance より古い可能性があるため、文書が存在しないことの証明にはなりません。CHANGELOGには、各リリースに含まれる内容がバージョンごとに記載されています。

プロトコル。 MCP 2026-07-28(「モダン」)に加え、同じバイナリで2025-11-25と2025-06-18(「レガシー」)にも対応しています。バージョン2025-03-26には対応していません。起動時にネットワーク呼び出しは行われません。PISTE 認証は、最初のツール呼び出し時に実行されます。

インストール前:PISTE アプリケーション

各ユーザーが各自の認証情報を用意します。このプロジェクトでは認証情報を提供しておらず、PISTE の利用規約では認証情報の共有が禁止されています。次の手順を一度だけ実施してください。

  1. https://piste.gouv.fr で個人名義のアカウントを作成し、PISTE の利用規約に同意します。
  2. カタログから Légifrance API を選び、その利用規約に同意します(アクセスは無料です)。
  3. 環境ごとにアプリケーションを1つ作成します。サンドボックス用(sandbox)とproduction用をそれぞれ1つずつ作成します。アプリケーションの「OAuth Credentials」セクションで client_id と client_secret を確認します。

サンドボックスの認証情報は本番環境では使用できません(PISTE は invalid_client を返します)。サーバーはデフォルトで sandbox で起動します。サンドボックスでは本番環境とは異なるデータが返される場合があり、サービス保証はありません。本番環境については、本番環境への移行をご覧ください。

キーが漏えいした場合は、直ちに PISTE で再設定し、その後 DILA と AIFE に連絡してください。

インストール方法

方法対象ユーザーコマンドまたは操作完全性
インストーラー(リリースアーカイブ)法律関係者、ターミナルの操作に慣れた開発者curl … | sh(Linux、macOS);irm … | iex(Windows)HTTPS;SHA-256 チェックサムとアテステーション、署名なし
MCPB バンドルClaude Desktopmcp-legifrance-0.3.0.mcpbをダブルクリッククライアントが fileSha256 を検証;署名なし
Docker イメージ分離環境、VS Code(ギャラリー)、Docker Desktopdocker run -i --rm …ダイジェスト、アテステーション
cargo install --gitRust 開発者リポジトリのタグからローカルでビルド--locked により Cargo.lock を適用;署名なし

バイナリの対象環境:Linux x86_64 および aarch64(gnu および musl)、macOS x86_64 および aarch64、Windows x86_64。Windows ARM64 は対象外です。x86_64 バイナリはエミュレーションで動作します(未検証)。

このサーバーは、io.github.muchiny/mcp-legifrance という名前で MCP レジストリにも登録されています(パッケージ mcpb および oci)。

インストーラー(Linux、macOS、Windows)
# Linux, macOS
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/muchiny/mcp-legifrance/releases/download/v0.3.0/mcp-legifrance-installer.sh | sh
# Windows
powershell -c "irm https://github.com/muchiny/mcp-legifrance/releases/download/v0.3.0/mcp-legifrance-installer.ps1 | iex"

バイナリは ~/.mcp-legifrance/bin/mcp-legifrance に配置されます(Windows の場合は、ユーザーフォルダー内の .mcp-legifrance\bin フォルダーに mcp-legifrance.exe として配置)。このディレクトリは PATH に追加されます。すでに起動しているグラフィカルアプリケーション(Claude Desktop、VS Code)には新しい PATH が反映されません。アプリケーションを再起動するか、以下の例のように設定で絶対パスを指定してください。インストーラーは自動更新を行いません。バージョンを変更するには、希望するタグを指定して再度実行してください。

ダウンロードの検証

ダウンロードしたスクリプトを実行する代わりに、リリースページから対象環境用のアーカイブを入手して検証し、展開できます。

# somme SHA-256 : comparez le résultat à la ligne correspondante du fichier sha256.sum de la release
sha256sum mcp-legifrance-x86_64-unknown-linux-gnu.tar.xz      # macOS : shasum -a 256 ; Windows : Get-FileHash

# provenance : l'archive a été construite par la CI de ce dépôt
gh attestation verify mcp-legifrance-x86_64-unknown-linux-gnu.tar.xz --repo muchiny/mcp-legifrance

アーカイブ名は mcp-legifrance-<cible>.tar.xz という形式です(Windows の場合は .zip)。各アーカイブにはバイナリ、ライセンス、NOTICE ファイル、サードパーティーライセンス、このページ、変更履歴が含まれています。

MCPB バンドル(Claude Desktop)
  1. リリースページから mcp-legifrance-0.3.0.mcpb をダウンロードします。
  2. ダブルクリックするか、Claude Desktop の拡張機能設定にドラッグします。
  3. 要求される3つの項目を入力します:PISTE クライアント ID、PISTE クライアントシークレット(どちらもクライアントのセキュアストレージに保存されます)、環境(デフォルトは sandbox)。

すべてのプラットフォームで同じバンドルを使用でき、起動時に適切なバイナリが選択されます。開発者でない場合は、これが最も簡単な方法です。JSON 設定を書く必要はありません。

Docker イメージ
docker pull ghcr.io/muchiny/mcp-legifrance:0.3.0

# vérification de la configuration (aucun secret sur la ligne de commande : -e NOM sans valeur)
docker run --rm -e LF_PISTE_CLIENT_ID -e LF_PISTE_CLIENT_SECRET ghcr.io/muchiny/mcp-legifrance:0.3.0 check-config

イメージは公開されており、最小構成(distroless)で、非 root ユーザーとして実行されます。linux/amd64 および linux/arm64 に対応しています。クライアントは標準入力と標準出力を介してサーバーと通信するため、-i は必須です。監査ログは /data/audit に書き込まれます。保持するには、ここに名前付きボリュームをマウントしてください(下記の例を参照)。このイメージはローカルでの使用を想定しています。

cargo install --git
cargo install --git https://github.com/muchiny/mcp-legifrance --tag v0.3.0 --locked mcp-legifrance
  • 前提条件:Rust のツールチェーンはバージョン 1.88 以上、C コンパイラーが必要です。現在の TLS プロバイダー(aws-lc)は、一部のプラットフォームで追加のビルドツールを必要とする場合があります(Linux 以外では未確認です)。
  • パッケージ名(mcp-legifrance)は必須です。リポジトリには複数のパッケージが含まれています。--locked は、プロジェクトで管理されている依存関係のバージョンを適用します。
  • バイナリは Cargo のインストール先の bin ディレクトリ(デフォルトでは ~/.cargo/bin)に配置され、署名されていません。
  • --git を付けずに cargo install mcp-legifrance を実行しないでください:このプロジェクトは crates.io に 0.x バージョンを公開しておらず、同名の crate が存在したとしても、このプロジェクトのものではありません。
インストールの確認
mcp-legifrance --version
mcp-legifrance check-config            # lit l'environnement, n'appelle aucun service
mcp-legifrance check-config --online   # obtient un jeton OAuth auprès de PISTE, sans appeler l'API

check-config は変数ごとに 1 行(名前、取得元、値、状態)を表示します。秘密情報は表示されません(「set (n characters)」と表示され、クライアント ID は末尾の 4 文字だけが表示されます)。その後、警告と問題が表示されます。終了コード:0 は問題なし、2 は設定が無効、3 は PISTE が認証情報を拒否、4 はネットワークエラーです。

クライアントの設定

共通の原則:

  • クライアント側のサーバー名:legifrance(推奨)。Claude Code では、ツールはたとえば mcp__legifrance__fr_search として表示されます。
  • コマンド:mcp-legifrance と、引数の serve(デフォルトの動作ですが、曖昧さを避けるため明記してください)。バイナリの絶対パスを使用してください。グラフィカルアプリケーションは常に PATH を引き継ぐとは限らず、JSON ファイル内の ~ は展開されません。以下の例ではインストーラー(/home/alice/.mcp-legifrance/bin/mcp-legifrance)を想定しています。パスは適宜変更してください。
  • シークレット:サーバーは環境変数 LF_PISTE_CLIENT_ID と LF_PISTE_CLIENT_SECRET を読み取ります。コマンドラインオプションで渡すことはできません(引数はプロセス一覧に表示されます)。安全な順に並べると、クライアントの安全なストレージ(MCPB、VS Code のプロンプト)、シークレットマネージャーから設定する環境変数、設定ファイルへの平文での保存です。最後の方法は避け、決してバージョン管理に含めないでください。
  • 診断:不明な点がある場合は、クライアントと同じ環境で mcp-legifrance check-config --online を実行してください。

各クライアントの構文は、2026-10-29 に公式ドキュメントで確認しました。ただし、それぞれの実環境へのインストールでの動作確認は行っていません(未確認事項を参照)。

Claude Code

プロジェクトのルートに .mcp.json ファイルを配置します。Claude Code は ${NOM} を対応する環境変数に置き換えるため、このファイルにシークレットは含まれず、バージョン管理に含めることができます。

{
  "mcpServers": {
    "legifrance": {
      "type": "stdio",
      "command": "/home/alice/.mcp-legifrance/bin/mcp-legifrance",
      "args": ["serve"],
      "env": {
        "LF_PISTE_ENV": "sandbox",
        "LF_PISTE_CLIENT_ID": "${LF_PISTE_CLIENT_ID}",
        "LF_PISTE_CLIENT_SECRET": "${LF_PISTE_CLIENT_SECRET}"
      }
    }
  }
}

Claude Code を起動するシェル環境で、2 つの変数を設定してください。同じ設定は、claude mcp add-json legifrance '<json>' を使ってコマンドラインから追加することもできます。<json> は上記の legifrance エントリーの内容です(すべてのセッションに適用するには --scope user オプションを指定します)。claude mcp add --env LF_PISTE_CLIENT_SECRET=… は避けてください。シークレットがシェルの履歴に残ってしまいます。確認するには、claude mcp list を実行してから、セッション内で /mcp を実行してください。

Claude Desktop
  • 推奨方法:MCPB バンドル(上記を参照)。
  • 手動設定:claude_desktop_config.json ファイル(macOS では ~/Library/Application Support/Claude/、Windows ではユーザーのアプリケーションデータ内の Claude フォルダー、AppData\Roaming\Claude)。シークレットは平文で保存されます。
{
  "mcpServers": {
    "legifrance": {
      "command": "/Users/alice/.mcp-legifrance/bin/mcp-legifrance",
      "args": ["serve"],
      "env": {
        "LF_PISTE_ENV": "sandbox",
        "LF_PISTE_CLIENT_ID": "<votre client_id>",
        "LF_PISTE_CLIENT_SECRET": "<votre client_secret>"
      }
    }
  }
}
VS Code

ファイル .vscode/mcp.json。password: true を指定した promptString は、初回起動時に認証情報を尋ね、VS Code が保存します。ファイルには何も書き込まれません。

{
  "inputs": [
    { "type": "promptString", "id": "lf-client-id", "description": "PISTE client ID", "password": true },
    { "type": "promptString", "id": "lf-client-secret", "description": "PISTE client secret", "password": true }
  ],
  "servers": {
    "legifrance": {
      "type": "stdio",
      "command": "/home/alice/.mcp-legifrance/bin/mcp-legifrance",
      "args": ["serve"],
      "env": {
        "LF_PISTE_ENV": "sandbox",
        "LF_PISTE_CLIENT_ID": "${input:lf-client-id}",
        "LF_PISTE_CLIENT_SECRET": "${input:lf-client-secret}"
      }
    }
  }
}
  • ワークスペースのルートにある .mcp.json ファイルも VS Code に読み込まれますが、inputs や変数の置換には対応していません。秘密情報を記載しないでください。
  • 環境ファイルを使用する方法:"envFile": "${workspaceFolder}/.env.legifrance"。このファイルは git の対象外です。
  • ツールは読み取り専用として公開されていますが、外部に接続します。結果を送信する前に、VS Code が確認を求める場合があります。正確な動作は測定されていません。
  • VS Code の MCP ギャラリーからインストールできるのは Docker パッケージだけです。
Cursor

ファイル ~/.cursor/mcp.json(グローバル)または .cursor/mcp.json(プロジェクト)。形式と変数の置換は未確認です。秘密情報は平文で保存されます。

{
  "mcpServers": {
    "legifrance": {
      "command": "/home/alice/.mcp-legifrance/bin/mcp-legifrance",
      "args": ["serve"],
      "env": { "LF_PISTE_CLIENT_ID": "<votre client_id>", "LF_PISTE_CLIENT_SECRET": "<votre client_secret>" }
    }
  }
}
Docker 版(すべてのクライアント)
{
  "mcpServers": {
    "legifrance": {
      "command": "docker",
      "args": ["run", "-i", "--rm",
               "-e", "LF_PISTE_CLIENT_ID", "-e", "LF_PISTE_CLIENT_SECRET", "-e", "LF_PISTE_ENV",
               "-v", "mcp-legifrance-audit:/data/audit",
               "ghcr.io/muchiny/mcp-legifrance:0.3.0"],
      "env": {
        "LF_PISTE_CLIENT_ID": "${LF_PISTE_CLIENT_ID}",
        "LF_PISTE_CLIENT_SECRET": "${LF_PISTE_CLIENT_SECRET}",
        "LF_PISTE_ENV": "sandbox"
      }
    }
  }
}

クライアントはプロセス docker に変数を設定し、Docker は -e NOM でコンテナに渡します。env 内の ${…} による置換は Claude Code のものです。他のクライアントでは、それぞれのプロンプトまたは値を使用してください。Smart App Control によってバイナリがブロックされる場合、Windows での代替手段にもなります。

Windows
  • JSON では、バックスラッシュを二重にします:"C:\\Users\\alice\\.mcp-legifrance\\bin\\mcp-legifrance.exe"。cmd /c は使用しないでください。これはネイティブ実行可能ファイルです。
  • インストーラーの実行後、クライアントを再起動するか(PATH はユーザーレジストリで更新されます)、絶対パスを指定してください。
  • setx で秘密情報を書き込まないでください。レジストリと PowerShell の履歴に平文で保存されます。MCPB バンドルまたは VS Code のプロンプトを使用してください。
  • Windows での監査ログのデフォルトパスは未確認です。check-config に有効なパスが表示されます。
本番環境への切り替え
  1. 本番環境用の PISTE アプリケーションを作成し、Légifrance API を利用登録します。
  2. LF_PISTE_ENV=production と、そのアプリケーションの認証情報を設定します。
  3. mcp-legifrance check-config --online を実行します。
  4. fr_coverage を呼び出します。表示される環境が production であることを確認してください。

本番環境のアドレス(oauth.piste.gouv.fr、api.piste.gouv.fr)は、プロジェクトから呼び出されたことがありません。文書には記載されていますが、検証されていません。

環境変数

設定は環境変数のみから取得されます(ファイルやリモート設定はありません)。起動時に一度だけ読み込まれるため、変更後はサーバーを再起動してください。空または空白のみの変数は、未設定として扱われます。

一般的な設定
変数役割値とデフォルト
LF_PISTE_CLIENT_IDアプリケーションのPISTE用OAuth ID必須
LF_PISTE_CLIENT_SECRET同じアプリケーションのOAuthシークレット必須。表示されることはありません
LF_PISTE_ENVPISTE環境sandbox(デフォルト)またはproduction
LF_PISTE_OAUTH_URL、LF_PISTE_BASE_URLPISTEアドレスの上書き(避けてください。LF_PISTE_ENVを使用してください)以下のルールを参照
LF_AUDIT_DIR監査ログのディレクトリ絶対パス(先頭の~/は展開されます)。デフォルト:ユーザーデータディレクトリ内のmcp-legifrance/auditサブディレクトリ
LF_AUDIT_MODEログを書き込めない場合の動作strict(デフォルト。ツール呼び出しは[audit_error]で失敗します)またはbest-effort
LF_LOGログフィルター(tracing構文)。stderrに出力されますデフォルト:info。ネットワークライブラリとMCPにはwarn
LF_HTTP_TIMEOUT_SPISTEへのリクエストごとのタイムアウト(秒)1~300。デフォルト40
LF_TOOL_DEADLINE_Sツール呼び出しごとの全体タイムアウト(秒)1~600。デフォルト60

アドレス上書きのルール:httpsが必須です(httpは127.0.0.1、::1、localhost宛ての場合に限り許可されます)。アドレスにユーザーID、パラメーター、フラグメントを含めることはできません。公式の4つのホスト以外のホストは、CustomHostの警告とともに受け入れられます(起動時、check-config実行時、およびfr_coverageの不足情報内)。もう一方の環境に属する公式ホストはEnvMismatchの問題となります。サーバーはアドレスから環境を推測せず、LF_PISTE_ENV=productionの設定を求めます。

LF_LOGでrmcpのdebugまたはtraceを有効にしないでください。有効にすると、ライブラリが応答全体をログに記録します。

高度な設定

以下の4つの設定は、server.jsonにもMCPBバンドルのマニフェストにも記載されていません。使用するには、クライアントのenvブロックに追加してください。値が無効でも起動は妨げられません。デフォルト値が適用され、警告がログに記録され、check-configに有効な値が表示されます。

変数役割値とデフォルト
LF_PISTE_RPSPISTEへの1秒あたりのリクエスト数1~100。デフォルト5
LF_PISTE_BURSTレート制限器で許可されるバースト1~100。デフォルト10
LF_PISTE_CONCURRENCY同時に実行中にできるリクエスト数1~16。デフォルト4
LF_PISTE_MOJIBAKE_REPAIRアクセント記号が文字化けしたテキストの修復on(デフォルト)またはoff
無効な設定:縮退モード

PISTEの設定が無効な場合(環境が不明、アドレスが拒否された、認証情報がないなど)でも、サーバーは起動します。各PISTEツールはネットワーク呼び出しを行わずに[config_error] …を返し、fr_coverageとcheck-configに問題が表示されます。

fr-eli-mcp から継承された変数

これらの名前は、このプロジェクトが書き換えた Python サーバーに由来します(NOTICE)。移行のため、ここに記載しています。

継承された変数動作代わりに使用するもの
FR_ELI_CLIENT_IDLF_PISTE_CLIENT_ID が設定されていない場合に読み込まれ、stderr に非推奨の警告が出ます。両方が設定されている場合は LF_PISTE_CLIENT_ID が優先されますLF_PISTE_CLIENT_ID
FR_ELI_CLIENT_SECRET同上LF_PISTE_CLIENT_SECRET
FR_ELI_OAUTH_URL同上LF_PISTE_ENV、または LF_PISTE_OAUTH_URL
FR_ELI_BASE_URL同上LF_PISTE_ENV、または LF_PISTE_BASE_URL
FR_ELI_AUDIT_DIR同上LF_AUDIT_DIR
FR_ELI_CACHE_DIR読み込まれません:ディスクキャッシュはなくなりました。設定されている場合、起動時と check-config で「ignored」という警告が出ますなし
FR_ELI_RUNTIME_URL読み込まれません:リモート設定はなくなりました。「ignored」という警告が出ますなし
FR_ELI_ENV読み込まれません(元の実装でも使用されていませんでした)。「ignored」という警告が出ますLF_PISTE_ENV
PISTE_CLIENT_ID、PISTE_CLIENT_SECRET読み込まれません(元の実装のドキュメントでは誤って記載されていました)。「ignored」という警告が出ますLF_PISTE_CLIENT_ID、LF_PISTE_CLIENT_SECRET

警告は FR_ELI_ENV ignored: it is never read、または互換性のために読み込まれる変数の場合は FR_ELI_CLIENT_ID is deprecated: use LF_PISTE_CLIENT_ID の形式です。変数の値が警告に含まれることはありません。

オフラインモード(DILA ローカルインデックス)

オプション:PISTE を呼び出す代わりに、サーバーは Légifrance の法典、法律、政令のローカルコピー(DILA のオープンデータである LEGI データセット)を読み込みます。この場合、PISTE アカウントを作成する必要も、コンピューターの外部にリクエストが送信されることもありません。司法判断、CNIL の決議、労働協約、企業協定はこのコピーに含まれていないため、これらのツールは [config_error] を返し、PISTE が必要になります。LF_DILA_DIR が定義されている場合、サーバーが PISTE にフォールバックすることはありません。

必要なディスク容量(実際のアーカイブで 2026-10-31 に測定:2025-07-13 の完全なファイル 1 件と更新分 481 件):ダウンロードに 3.1 GB、続いてインデックスに 3.6 GB(文書 2,405,838 件、拒否された項目なし)が必要で、ディスク容量は合計約 7 GB です。最適化されていない開発用バイナリでの構築には 1 時間 10 分かかり、メモリ使用量は最大 3.6 GB でした。公開用バイナリでの所要時間は測定していません。

3 つの手順です。

  1. リポジトリのスクリプトを使ってアーカイブをダウンロードします(bash と curl を使用。接続は 1 回で、途中に休止を挟みます。再開も可能です)。

    scripts/fetch-dila-dumps.sh ~/dila/archives
    
  2. インデックスを構築します(ネットワークアクセスなし。ディスク上に展開されるものはありません。コマンドを再実行すると、新しいものだけが適用されます)。

    mcp-legifrance build-dila-index --archives ~/dila/archives --index ~/dila/index
    
  3. PISTE の環境変数の代わりに、MCP クライアントの設定でインデックスを指定します。パスは絶対パスにしてください:LF_DILA_DIR=/chemin/absolu/vers/dila/index。mcp-legifrance check-config で確認してください。

注意事項。

  • これはスナップショットです。ダウンロードしたファイルの公開後に公開されたテキストは含まれず、見つからない場合は常に not_found ではなく unresolvable が返されます。スナップショットの日付はまだ応答に表示されません。インデックスディレクトリの registry.tsv ファイルに、適用済みのアーカイブが記載されています。
  • 更新するには、手順 1 と 2 を再実行してください。DILA の新しい完全ファイルを使うと、インデックスはゼロから再構築されます。クライアントが同じインデックスを読み込んでいる間は、build-dila-index を実行しないでください。
  • スクリプトは bash 用です。Windows では動作確認していません(WSL または Git Bash をご利用ください)。MCPB バンドルではこの設定を指定できず、Docker イメージでインデックスをマウントしての動作確認もしていません。
  • データのライセンス。 DILA のファイルでは、出典(DILA)、ダウンロード先、ファイル名、日付を記載する必要があります。不明な場合は、「Source : DILA, base LEGI, Légifrance, fichier <nom> du <date>, https://echanges.dila.gouv.fr/OPENDATA/LEGI/」と記載してください。ファイルには Licence Ouverte 2.0、data.gouv.fr ポータルには 2014 年版が記載されており、この相違は未解決です(docs/recherche/10-dumps-dila.md §8 を参照)。

接続先ホスト

サーバーが接続するのは以下のホストのみで、指定された場合に限ります。テレメトリ、アカウント、オンラインでのバージョン確認、自動更新はありません。

コンポーネントホスト接続するタイミング
バイナリ、LF_PISTE_ENV=sandbox(デフォルト)sandbox-oauth.piste.gouv.fr、sandbox-api.piste.gouv.fr最初のツール呼び出し時。起動時には接続しません
バイナリ、LF_PISTE_ENV=productionoauth.piste.gouv.fr、api.piste.gouv.fr(プロジェクトでは呼び出されません:未検証)同上
LF_PISTE_OAUTH_URL または LF_PISTE_BASE_URL を指定したバイナリ指定したホスト(https、またはローカルループバックへの http のみ)。公式の4つのホスト以外の場合は CustomHost 警告が表示されます同上
check-config --online選択した環境の OAuth ホスト:トークンリクエストを1回行い、API は呼び出しません要求されたとき
シェルおよび PowerShell インストーラー、MCPB バンドル、アーカイブgithub.com と、リリースファイルのダウンロード時に GitHub がリダイレクトするホストインストール時
cargo install --gitgithub.com(タグからリポジトリをクローン)、index.crates.io、static.crates.io(依存関係)インストール時
Docker イメージghcr.iodocker pull 時
DILA ダンプのダウンロードスクリプト(バージョン 1.0、バイナリには含まれません)echanges.dila.gouv.frユーザーが明示的に実行したとき

企業プロキシの背後では、バイナリはシステムプロキシを使用します。一般的なプロキシ環境変数が反映されるかは検証されていません。ディストリビューション用インストーラーは、一般的なプロキシ環境変数に対応すると宣言しています。

出典表記、データライセンス、非提携について

データの出典。 提供されるコンテンツは、PISTE ポータルの Légifrance API を通じて、法務・行政情報局(DILA)のサービスである Légifrance(https://www.legifrance.gouv.fr)から取得されています。コンテンツは オープンライセンス 2.0(Etalab)の下で再利用できます。記載する出典表記は次のとおりです。

出典:Légifrance / DILA — オープンライセンス 2.0

参照日。 このサーバーから取得したテキストを引用または再公開する場合は、参照日も記載してください。ツール fr_coverage が参照日を提供します。consulted_on フィールドには当日の日付(Europe/Paris タイムゾーン)が入り、attribution フィールドには上記の出典表記が入ります。サーバーの指示にも出典とライセンスが記載されています。オープンライセンスではライセンサーと最終更新日を記載することが求められていますが、サーバーには文書ごとの信頼できる更新日フィールドがないため、参照日をその代わりとしています。包括的な出典表記で十分とするのは、デフォルトで採用している解釈であり、確認済みではありません。

テキストの効力。 法的効力を持つのは、電子署名された官報の版のみです。このサーバーの応答に法的拘束力はなく、法律上の助言でもありません。判決は 仮名化 され、CNIL の審議は 非公開化 されています。サーバーがいずれかを解除することはありません。

非提携について。 このプロジェクトは、DILA、PISTE を運営する AIFE、またはいかなる公的機関によっても、発行、承認、支援されていません。「Légifrance」は法令を公開する公共サービスを指します。この製品の名称は mcp-legifrance で、タイトルには「(unofficial)」と記載されており、Légifrance またはフランス政府のロゴは使用していません。DILA、AIFE、またはいかなるフランスの公的機関とも提携しておらず、承認も受けていません。

コードのライセンス。 Apache-2.0(LICENSE)、著作権者 Loïc Wernert。このプロジェクトは matematicsolutions/fr-eli-mcp(コミット d3b5b13、Apache-2.0)を Rust で書き直したもので、調整した文章とテスト用フィクスチャを引き継いでいます。詳細は NOTICE を参照してください。AGPL ライセンスのプロジェクトからコードを一切流用していません。バイナリにリンクされるサードパーティライブラリのライセンスは、リポジトリのルートにあるサードパーティライセンスファイルと各アーカイブにまとめられています。

fr-eli-mcp からの移行

Python リファレンス(fr-eli-mcp)のユーザー向けです。フィールドごとの完全なメモは、docs/plan/annexes/A-parite.md §6 にあります。

  • コマンド:クライアント設定で fr-eli-mcp(または uvx fr-eli-mcp)を mcp-legifrance に置き換えてください。サーバー名とレジストリ上の名前も変わります(io.github.muchiny/mcp-legifrance)。
  • 変数:FR_ELI_CLIENT_ID と FR_ELI_CLIENT_SECRET を LF_PISTE_CLIENT_ID と LF_PISTE_CLIENT_SECRET に変更してください(以前の名前も警告付きで引き続き使用できます)。FR_ELI_CACHE_DIR、FR_ELI_RUNTIME_URL、FR_ELI_ENV、PISTE_CLIENT_ID、PISTE_CLIENT_SECRET は効果がないため削除してください。
  • 本番環境:LF_PISTE_ENV=production を設定し、アドレスの上書き設定を削除してください。この変数を設定せずに本番環境向けのアドレスを上書きすると、サーバーは縮退モード(EnvMismatch)になります。
  • 確認:mcp-legifrance check-config を実行し、次に --online を指定して認証情報をテストしてください。
  • 出力:citation(旧名 human_readable_citation)を参照してください。eli_uri、eli_note、dataset_note はなくなりました。値が存在しない場合はキー自体が存在せず、null にはなりません。title に依存しないでください。目次は articles ではなく toc という名前になり、toc_offset = next_toc_offset を使ってページ分割します。ほかにもフィールド名が変更されています(date、convention_id、date_publication、path、gaps など)。詳細は完全なメモを参照してください。
  • 法令本文の読み取り:1,200 文字を超える場合、既定の応答は要約になります。detail: "full" を指定して offset = next_offset を繰り返し処理するか、focus を使用してください。
  • エラー:[code] プレフィックスでエラーの種類を確認できます。invalid_arg、not_found、upstream_error、config_error に加えて、2 つのコードが追加されています。rate_limited(指定された時間が経過してから再試行)と audit_error です。config_error と audit_error は再試行しないでください。
  • 監査:新しいディレクトリと新しいファイル名(mcp-legifrance.jsonl)を使用します。キーが 3 つ追加されています。ハッシュとメトリクスはリファレンスのものと比較できません。
  • クライアント:プロトコルは 2025-06-18 以降に対応している必要があります。

プライバシーとセキュリティ

  • ネットワークに送信される情報:検索リクエストとドキュメント ID が、PISTE の認証情報とともに、PISTE(AIFE)経由で Légifrance API(DILA)に送信されます。それ以外は送信されません(接続先ホストを参照)。
  • マシン上に保存される情報:JSONL 形式の監査ログ(ローテーションあり、mcp-legifrance.jsonl)が、結果にかかわらずツール呼び出しごとに 1 行記録されます。ログには引数の SHA-256 ハッシュが含まれますが、リクエストの平文やシークレットは含まれません。strict モード(既定)では、書き込みに失敗すると呼び出しも失敗します。複数のプロセスで同じディレクトリを共有できます。
  • ログ:stderr のみに出力されます。stdout にはプロトコルのみが出力されます。シークレットもリクエストのテキストも含まれません。
  • 返されるテキストはデータであり、指示ではありません。モデルは、法令の文章に書かれた要求を実行してはなりません。
  • 詳細:PRIVACY.md(プライバシー)および SECURITY.md(GitHub のプライベートな報告機能を使った脆弱性の報告、既知の制限)。

まだ検証されていないこと

このプロジェクトでは、不確かな点を隠さずに記録しています。0.3.0 では次のとおりです。

  • 本番環境の PISTE アドレスには、一度も接続していません。
  • 各クライアントの設定構文は、それぞれのドキュメントをもとにしています。実際のインストール環境では検証していません(優先度:Claude Code と VS Code)。Cursor の形式と Claude Desktop のファイルの場所は確認が必要です。
  • MCPB バンドルは、macOS と Windows の Claude Desktop ではまだ試していません。
  • cargo install --git は、macOS と Windows ではまだ試していません。
  • Windows での監査ログのデフォルトパスとその権限、プロキシの考慮、openWorldHint に対する VS Code の挙動は測定していません。
  • PISTE サンドボックスでは、本番環境と異なるデータが返されることがあります。
  • DILA のローカルインデックスは、実際のアーカイブを使って一度構築し(開発用バイナリで 1 時間 10 分)、Linux のみでいくつかのクエリを実行しました。公開バイナリでの所要時間、Windows と macOS での挙動、回答に含まれるスナップショットの日付、各データベース固有のライセンスは検証していません。
  • 法令の条文に source_url として付与される Légifrance のアドレスは、表示されることを確認するためにブラウザーで開いていません。
  • 2026-10-29 に、PISTE サンドボックスで 21 件のテストに合格しました。これは本番環境については何も示しておらず、CI では毎週その一部のみを再実行します。

未解決の項目の全リストは docs/plan/09-risques-et-questions.md にあります。

開発と貢献

言語Rust(エディション 2024、MSRV 1.88、ツールチェーンは 1.99.0 に固定)、Cargo ワークスペース crates/lf-*、バイナリ mcp-legifrance
アーキテクチャヘキサゴナル:純粋な lf-domain → lf-application(ポート、ユースケース)→ PISTE、キャッシュ、監査、MCP のアダプター → lf-app(バイナリ)
MCP SDKrmcp 3.5.1
品質名前を挙げた例外(stdio.rs。実際の stdin と stdout をつなぐ部分で、バイナリのエンドツーエンドテストでカバー)を除き、行、領域、関数のカバレッジは 100 %です。ミューテーションテスト:各 PR の差分にはリスクのあるファイルのみミューテーションテストを実施し、残りのコードには毎週実施します。生き残ることが既知で未解決のミュータントもあります。make ci が完了の証明です。

コメント

MCP は初めてですか?

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

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