Fr Eli Mcp

io.github.matematicsolutions由 GitHub 账号 matematicsolutions 发布v0.5.3更新于 Oct 24, 2026

MCP server for French Legifrance (PISTE): legislation and case law with citations and ECLI.

概览

AI 生成的概览

让助手检索法国 Legifrance(PISTE)的法条、判例及相关文本,并给出可核验的引注。

可以做什么
通过 PISTE 连接法国 Legifrance API,返回原文并附带引注约定:稳定的 eli_uri、法式可读引注和可解析的 source_url。工具支持按 fond 关键词检索(LODA、CODE、JURI、CONSTIT、CETAT、CNIL、KALI、ACCO),按 LEGITEXT 编号获取法律或法令及其目录,按 LEGIARTI 或 KALIARTI 编号获取单条条文原文,按 JURITEXT、CONSTEXT 或 CETATEXT 编号获取判决及其原生 ECLI,获取 CNIL 决议原文,获取集体劳动协议,以及获取企业协议元数据。另有覆盖范围工具说明已收录与未收录内容,并为缺口给出替代方案。
适用场景
当助手需要依据官方来源回答法国法律问题并精确引注时使用,例如查找法典条文、核对最高法院、宪法委员会或行政法院判例,或查阅 CNIL 决议与集体协议。适合需要可追溯引注的研究与起草工作,而非一般网页检索;不涵盖法国以外法律。
运行要求
本地 Python 进程,可用 uvx 运行 PyPI 包 fr-eli-mcp,或以 python -m fr_eli_mcp 启动。需要一个免费的 PISTE 账号并订阅 Legifrance API,通过环境变量提供 OAuth2 凭据:FR_ELI_CLIENT_ID 与 FR_ELI_CLIENT_SECRET 为必填,FR_ELI_OAUTH_URL、FR_ELI_BASE_URL、FR_ELI_CACHE_DIR、FR_ELI_AUDIT_DIR 为可选。需要访问 Legifrance/PISTE 的网络。仅支持桌面端。
安装前请注意
需要 PISTE OAuth 凭据(FR_ELI_CLIENT_ID、FR_ELI_CLIENT_SECRET)并以环境变量方式保存,应视为机密。该服务器对 Legifrance 只读,但会写入本地审计日志和磁盘缓存(FR_ELI_AUDIT_DIR、FR_ELI_CACHE_DIR)。查询内容和文档 id 会发送到 PISTE/Legifrance 服务。说明中称其通过受管控渠道分发,而非随意下载安装。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Fr Eli Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

fr-eli-mcp

Install (one command)

Published on PyPI + MCP Registry (io.github.matematicsolutions/fr-eli-mcp). Run without cloning:

bash
uvx fr-eli-mcp

Requires PISTE credentials in env: PISTE_CLIENT_ID, PISTE_CLIENT_SECRET (Legifrance/PISTE).

Configure your MCP client (stdio):

json
{ "mcpServers": { "fr-eli-mcp": { "command": "uvx", "args": ["fr-eli-mcp"] } } }

Windows 11 with Smart App Control

Smart App Control blocks unsigned executables, which covers uvx.exe, pip.exe and the fr-eli-mcp.exe launcher that pip writes at install time. The python.exe and py.exe from the python.org installer are signed by the Python Software Foundation, so running the module through the interpreter works:

bash
python -m pip install fr-eli-mcppython -m fr_eli_mcp

pip.exe is blocked for the same reason, so install with python -m pip, not pip install. If python is not on PATH, use the Windows launcher: py -3 -m fr_eli_mcp.

json
{ "mcpServers": { "fr-eli-mcp": { "command": "python", "args": ["-m", "fr_eli_mcp"] } } }

Do not turn Smart App Control off to work around this - it cannot be re-enabled without reinstalling Windows.

Building from source: see Install.

An MCP server for the French Legifrance API via PISTE. It searches French legislation (LODA laws & decrees, codes), case law from three jurisdictions - Cour de cassation / cours d'appel (JURI), the Conseil constitutionnel (CONSTIT - QPC/DC decisions) and the administrative courts (CETAT - Conseil d'Etat, cours administratives d'appel, tribunaux administratifs) - plus CNIL deliberations (CNIL), collective labour agreements (KALI) and company-level agreements (ACCO), and returns verbatim text with verifiable citations. Part of the eu-legal-mcp line of national legal connectors by MateMatic.

Every response carries the citation contract: a stable eli_uri, a human_readable_citation (French convention) and a resolvable source_url.

Read-only. The server only queries Legifrance and writes a local audit log. It never modifies official text and never sends anything beyond your query / document id.

Tools

ToolWhat it does
fr_search(query, fond, page_size)Keyword search a fond: LODA (laws & decrees), CODE (codes), JURI (Cour de cassation case law), CONSTIT (Conseil constitutionnel decisions), CETAT (administrative case law: Conseil d'Etat, CAA, TA), CNIL (CNIL deliberations), KALI (collective labour agreements), ACCO (company-level agreements). Returns hits with the citation contract; CODE hits expose matched article_ids.
fr_get_act(text_id, date)Consult a LODA law/decree by LEGITEXT... id. Returns metadata + a table of contents (articles).
fr_get_text(article_id)Verbatim text of a single article by LEGIARTI... id (legislation/codes) or KALIARTI... id (collective agreements).
fr_get_decision(decision_id)A court decision by JURITEXT..., CONSTEXT... or CETATEXT... id, with its native ecli (when populated), court, formation, solution and text.
fr_get_deliberation(deliberation_id)A CNIL deliberation by CNILTEXT... id (sanctions, authorizations, opinions) with its verbatim text and the citation CNIL, deliberation n° ... du ....
fr_get_convention(convention_id)A collective labour agreement text by KALITEXT... id. Returns metadata + a table of contents whose KALIARTI... ids resolve via fr_get_text.
fr_get_company_agreement(agreement_id)A company-level agreement by ACCOTEXT... id - metadata only (company, SIRET, IDCC, sector, themes, unions, dates). Legifrance ships the full ACCO text only as a .docx attachment, so the tool cites source_url instead of re-serving it.
fr_coverage()Declare what this connector covers, when each family was captured, and - explicitly - what it does NOT cover. Every gap carries a fallback.

Fonds covered (live totals, sandbox, 2026-07-08)

FondCorpusVerified total
CNILCNIL deliberations>= 26 759 (totalResultNumber on a broad stopword query)
KALICollective labour agreements (conventions collectives)>= 35 790
ACCOCompany-level agreements>= 387 656

Jurisdictions covered

FondCourt(s)Id prefixNative ECLI
JURICour de cassation, cours d'appelJURITEXT...Yes
CONSTITConseil constitutionnel (QPC + DC decisions, ~7 400+ live on PISTE)CONSTEXT...Yes (ECLI:FR:CC:...)
CETATConseil d'Etat, cours administratives d'appel (CAA), tribunaux administratifs (TA)CETATEXT...Yes for Conseil d'Etat; frequently null for CAA/TA (uneven ECLI coverage upstream - never fabricated)

Conseil constitutionnel decisions get the French citation convention: Cons. const., decision n° 2025-1173 QPC du 7 novembre 2025 - [case name]. JURI/CETAT decisions cite the Legifrance titre (court, formation, date, dossier number) verbatim.

Judilibre (api.piste.gouv.fr/cassation/judilibre) was evaluated as an alternative Cour de cassation source but requires its own PISTE API subscription beyond the Legifrance one already held by this connector. Re-verified 2026-07-08: a valid Legifrance token (granted scope openid resource.READ) gets 403 on the sandbox host for every endpoint and auth shape tried (Bearer, KeyId, no-auth -> 400), and the sandbox application is rejected outright by the production OAuth endpoint (invalid_client). Subscribing the Judilibre API to the PISTE application is a dashboard action outside this connector. Not integrated - JURI already covers Cour de cassation case law through the existing Legifrance subscription.

A note on ELI vs ECLI

France has an official ELI scheme, but the PISTE lf-engine-app consult API returns the native ELI field null for the legislation we tested. Following this line's rule - say what you do not have, never fabricate an ELI - eli_uri carries the stable, resolvable Legifrance resource URL (CID-keyed), not a /eli/... string parsed from prose. Each response repeats this in eli_note.

Case law is different: the API returns a native, authoritative ECLI for Cour de cassation (e.g. ECLI:FR:CCASS:2025:C100399), Conseil constitutionnel (e.g. ECLI:FR:CC:2025:2025.1173.QPC) and Conseil d'Etat (e.g. ECLI:FR:CECHR:2026:506507.20260529), surfaced verbatim in fr_get_decision. CAA/TA decisions under CETAT frequently have no ECLI - the field is null, never fabricated.

Configuration

Legifrance requires OAuth2 application credentials from a free PISTE account (piste.gouv.fr → Applications → subscribe to the Legifrance API → OAuth Credentials). Credentials are read from the environment only:

VariableMeaning
FR_ELI_OAUTH_URLOAuth token endpoint (sandbox default shown in .mcp.json.example).
FR_ELI_BASE_URLLegifrance lf-engine-app base.
FR_ELI_CLIENT_IDYour PISTE application client id (required).
FR_ELI_CLIENT_SECRETYour PISTE application client secret (required).
FR_ELI_CACHE_DIRDisk cache dir (default ~/.matematic/cache/fr-eli).
FR_ELI_AUDIT_DIRAudit log dir (default ~/.matematic/audit).

Copy .mcp.json.example to .mcp.json (gitignored) and fill in your credentials, or set the variables in your host environment. The OAuth token is cached in memory and refreshed automatically.

Install

bash
py -3.13 -m venv .venv.\.venv\Scripts\python.exe -m pip install -e ".[dev]"   # Windows# or: python -m pip install -e ".[dev]"                  # POSIX

Tests

bash
pytest tests/test_instructions_drift.py tests/test_parse.py   # offline, no credspytest tests/test_smoke.py -v                                 # live, needs PISTE creds in .env

Distribution

Because Legifrance requires a PISTE key, this connector is distributed through the PATRON / appliance channel (governed), not casual drop-in download. See the eu-legal-mcp line notes.

Licence

Apache-2.0. Legifrance content is © the French Republic / DILA and subject to the Legifrance / PISTE terms of use; this software only retrieves and cites it.

来源:README.md,提交 d3b5b13

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.5.3最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分