关于 fr-eli-mcp
fr-eli-mcp 通过 PISTE 接入法国 Legifrance,供法律研究者查询法国立法、判例及相关协议文本。它提供原文和稳定引用标识,并明确区分可用的 ECLI 与缺失的 ELI。
主要功能
- 01搜索法律、法典与判例
- 02获取法条及判决原文
- 03查询 CNIL 决议与劳资协议
- 04返回稳定引用和来源链接
- 05提供覆盖范围说明
- 06只读查询并记录本地审计日志
适用场景
- 01检索法国法律与法典条文
- 02查找法国法院及宪法委员会判决
- 03核对 CNIL 决议和集体协议
- 04为法律资料生成可核验引用
MCP 相关
该 MCP 服务通过 PISTE 查询 Legifrance,提供搜索、获取法律文本、判决、CNIL 决议及协议的工具。需要配置 PISTE OAuth 凭据;服务只读,并为响应附上引用信息。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
8收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| fond | string | 否 | 以下之一:``LODA``(法律与法令)、``CODE``(法典)、``JURI``(法国最高法院判例)、``CONSTIT``(法国宪法委员会的 QPC/DC 决定)、``CETAT``(行政法判例:法国国务委员会、行政上诉法院、行政法院)、``CNIL``(CNIL 审议,包括制裁)、``KALI``(集体劳动协议/集体协议)、``ACCO``(企业级协议——仅元数据和搜索)。 |
| query | string | 是 | 自由文本查询(例如,"republique numerique"、"responsabilite")。 |
| page_size | integer | 否 | 命中数(1..100)。 |
详细介绍
fr-eli-mcp
安装(一条命令)
已发布到 PyPI 和 MCP Registry(io.github.matematicsolutions/fr-eli-mcp)。无需克隆即可运行:
uvx fr-eli-mcp
需要在环境变量中配置 PISTE 凭据:PISTE_CLIENT_ID、PISTE_CLIENT_SECRET(Legifrance/PISTE)。
配置 MCP 客户端(stdio):
{ "mcpServers": { "fr-eli-mcp": { "command": "uvx", "args": ["fr-eli-mcp"] } } }
在启用了 Smart App Control 的 Windows 11 上
Smart App Control 会阻止未签名的可执行文件,包括 uvx.exe、pip.exe
以及 pip 在安装时生成的 fr-eli-mcp.exe 启动器。python.org 安装程序提供的
python.exe 和 py.exe 由 Python Software
Foundation 签名,因此通过解释器运行模块即可:
python -m pip install fr-eli-mcp
python -m fr_eli_mcp
出于同样的原因,pip.exe 也会被阻止,因此请使用 python -m pip 安装,而不是
pip install。如果 python 不在 PATH 中,请使用 Windows 启动器:py -3 -m fr_eli_mcp。
{ "mcpServers": { "fr-eli-mcp": { "command": "python", "args": ["-m", "fr_eli_mcp"] } } }
请勿为了绕过此限制而关闭 Smart App Control——关闭后,只有重新安装 Windows 才能重新启用。
从源代码构建:请参阅安装。
一个通过 PISTE 访问 法国 Legifrance API 的 MCP 服务。它可搜索 法国立法(LODA 法律和法令、法典)、三个司法管辖体系的判例——法国最高法院 / 上诉法院(JURI)、宪法委员会(CONSTIT - QPC/DC 裁决)和 行政法院(CETAT - 国家行政法院、行政上诉法院、行政法院)——以及 CNIL 决议(CNIL)、集体劳动协议(KALI)和 公司层级协议(ACCO),并返回原文及可验证的引文。它是 MateMatic 推出的 eu-legal-mcp 国家法律连接器系列的一部分。
每条响应都包含引文约定:稳定的 eli_uri、human_readable_citation
(法国惯例)和可解析的 source_url。
只读。 此服务仅查询 Legifrance 并写入本地审计日志。它不会修改官方文本,也不会发送查询内容 / 文档 ID 以外的任何信息。
工具
| 工具 | 功能 |
|---|---|
fr_search(query, fond, page_size) | 在指定的 fond 中进行关键词搜索:LODA(法律和法令)、CODE(法典)、JURI(法国最高法院判例)、CONSTIT(宪法委员会裁决)、CETAT(行政判例:国家行政法院、CAA、TA)、CNIL(CNIL 决议)、KALI(集体劳动协议)、ACCO(公司层级协议)。返回符合引文约定的搜索结果;CODE 结果会提供匹配的 article_id。 |
fr_get_act(text_id, date) | 根据 LEGITEXT... ID 查阅 LODA 法律 / 法令。返回元数据和目录(articles)。 |
fr_get_text(article_id) | 根据 LEGIARTI... ID(立法 / 法典)或 KALIARTI... ID(集体协议)获取单条条文的原文。 |
fr_get_decision(decision_id) | 根据 JURITEXT...、CONSTEXT... 或 CETATEXT... ID 获取法院裁决,包含其原生 ecli(如有)、法院、审理机构、裁决结果和文本。 |
fr_get_deliberation(deliberation_id) | 根据 CNILTEXT... ID 获取 CNIL 决议(处罚、授权、意见),包含原文和引文 CNIL, deliberation n° ... du ...。 |
fr_get_convention(convention_id) | 根据 KALITEXT... ID 获取集体劳动协议文本。返回元数据和目录,其中的 KALIARTI... ID 可通过 fr_get_text 查询。 |
fr_get_company_agreement(agreement_id) | 根据 ACCOTEXT... ID 获取公司层级协议——仅提供元数据(公司、SIRET、IDCC、行业、主题、工会、日期)。Legifrance 仅以 .docx 附件形式提供完整的 ACCO 文本,因此该工具会引用 source_url,而不会重新提供文本。 |
fr_coverage() | 说明此连接器涵盖的内容、各类别的采集时间,以及明确说明未涵盖的内容。每项缺口都提供备用方案。 |
覆盖的语料库(实时总量,沙盒,2026-07-08)
| 语料库 | 内容 | 已验证总量 |
|---|---|---|
CNIL | CNIL deliberations | >= 26 759(针对宽泛停用词查询的 totalResultNumber) |
KALI | 集体劳动协议(conventions collectives) | >= 35 790 |
ACCO | 公司级协议 | >= 387 656 |
覆盖的司法管辖区
| 语料库 | 法院 | ID 前缀 | 原生 ECLI |
|---|---|---|---|
JURI | Cour de cassation、cours d'appel | JURITEXT... | 是 |
CONSTIT | Conseil constitutionnel(QPC + DC 决定,PISTE 上实时数量约 7 400+) | CONSTEXT... | 是(ECLI:FR:CC:...) |
CETAT | Conseil d'Etat、cours administratives d'appel(CAA)、tribunaux administratifs(TA) | CETATEXT... | Conseil d'Etat 有;CAA/TA 通常为 null(上游 ECLI 覆盖不均——绝不伪造) |
Conseil constitutionnel 的决定采用法国引注惯例:Cons. const., decision n° 2025-1173 QPC du 7 novembre 2025 - [case name]。JURI/CETAT 决定会逐字引用 Legifrance 的 titre
(法院、审判组织、日期、案号)。
Judilibre(
api.piste.gouv.fr/cassation/judilibre)曾作为 Cour de cassation 的替代数据源进行评估,但除本连接器已持有的 Legifrance 订阅外,还需要单独订阅 PISTE API。于 2026-07-08 重新验证:有效的 Legifrance 令牌(授予的 scope 为openid resource.READ)在沙盒主机上对所有尝试过的端点和认证形式均返回403(Bearer、KeyId、无认证 ->400),而且生产 OAuth 端点会直接拒绝沙盒应用(invalid_client)。将 Judilibre API 订阅到 PISTE 应用需要在仪表板中操作,这超出了本连接器的范围。未集成——现有 Legifrance 订阅已通过JURI覆盖 Cour de cassation 判例。
关于 ELI 与 ECLI 的说明
法国有官方的 ELI 方案,但对于我们测试过的法律法规,PISTE lf-engine-app 咨询 API 返回的原生 ELI 字段为 null。遵循本项目的原则——如实说明缺失内容,绝不伪造 ELI——eli_uri 存放的是稳定、可解析的 Legifrance 资源 URL(以 CID 为键),而不是从正文解析出的 /eli/... 字符串。每个响应都会在 eli_note 中重复说明这一点。
判例则有所不同:API 会返回 Cour de cassation(例如
ECLI:FR:CCASS:2025:C100399)、Conseil constitutionnel(例如
ECLI:FR:CC:2025:2025.1173.QPC)和 Conseil d'Etat(例如
ECLI:FR:CECHR:2026:506507.20260529)的原生权威 ECLI,并由 fr_get_decision 原样提供。CETAT 下的 CAA/TA 决定通常没有 ECLI——该字段为 null,绝不伪造。
配置
Legifrance 需要通过免费的 PISTE 账户获取 OAuth2 应用凭据
(piste.gouv.fr → Applications → 订阅 Legifrance API → OAuth Credentials)。
凭据仅从环境中读取:
| 变量 | 含义 |
|---|---|
FR_ELI_OAUTH_URL | OAuth 令牌端点(.mcp.json.example 中显示了沙盒默认值)。 |
FR_ELI_BASE_URL | Legifrance lf-engine-app 基础 URL。 |
FR_ELI_CLIENT_ID | 你的 PISTE 应用客户端 ID(必需)。 |
FR_ELI_CLIENT_SECRET | 你的 PISTE 应用客户端密钥(必需)。 |
FR_ELI_CACHE_DIR | 磁盘缓存目录(默认值为 ~/.matematic/cache/fr-eli)。 |
FR_ELI_AUDIT_DIR | 审计日志目录(默认值为 ~/.matematic/audit)。 |
将 .mcp.json.example 复制为 .mcp.json(已加入 git 忽略列表)并填写凭据,或在宿主环境中设置这些变量。OAuth 令牌会缓存在内存中并自动刷新。
安装
py -3.13 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]" # Windows
# or: python -m pip install -e ".[dev]" # POSIX
测试
pytest tests/test_instructions_drift.py tests/test_parse.py # offline, no creds
pytest tests/test_smoke.py -v # live, needs PISTE creds in .env
分发
由于 Legifrance 需要 PISTE 密钥,此连接器通过 PATRON / appliance 渠道(受治理)分发,而非随意下载使用。请参阅 eu-legal-mcp 项目说明。
许可
Apache-2.0。Legifrance 内容归法国共和国 / DILA 所有,并受 Legifrance / PISTE 使用条款约束;本软件仅检索并引用这些内容。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。