这是一个实验性的MCP(模型上下文协议)服务器,允许通过Legifrance API查询法国法律数据库,并在兼容的大语言模型(LLMs)如Claude中使用。
该项目实现了一个MCP服务器,该服务器可以从大语言模型直接访问法国法律资源(法律文本、法规、判例法)。它简化了法律研究,使Legifrance的数据可以通过交互式工具访问。它是基于pylegifrance包的创建而进行的。
MCP(模型上下文协议)是由Anthropic开发的一个标准化协议,它允许像Claude这样的语言模型以结构化的方式与外部工具和服务交互。这是LLMs互操作性的一个有趣进展,因为它建立了一个共同框架用于数据交换和模型与第三方API之间的函数执行。在此之前,每个服务都需要开发特定的函数调用。
MCP的重要性在于它能够在LLMs和外部系统之间创建一个标准化接口。这种标准化带来了几个优点:
这个想法是利用像Claude这样的语言模型的强大功能,通过Legifrance处理官方法律内容,并最终扩展到其他公共数据库如RNE、BODACC等。初步结果非常有希望,能够弥补传统统计搜索方法的一些局限性。服务正在持续改进中,但您现在可以查看一些搜索示例。
服务器支持以下功能:
其他Legifrance基金库将很快被实现。
如果您想直接连接自己的MCP服务器到Legifrance API,请访问:https://lab.dassignies.law 或 LinkedIn
python -m venv venv
source venv/bin/activate # 在Windows上: venv\Scripts\activate
uv venv .venv
source .venv/bin/activate # 在Windows上: venv\Scripts\activate
pip install git+https://github.com/rdassignies/mcp-server-legifrance.git
uv pip install git+https://github.com/rdassignies/mcp-server-legifrance.git
.env文件,包含您的身份验证信息:DASSIGNIES_API_KEY=您的API密钥
DASSIGNIES_API_URL=https://lab.dassignies.law/api/ # 或相应的URL
要获取测试API密钥,请通过LinkedIn联系我。
这是最“简单”的集成方式。
还有一种通过命令行使用uv的程序,将在以后进行文档说明。
这是一个使用示例:
{
"mcpServers": {
"legifrance": {
"command": "<您的路径>/mcp-server-legifrance/venv/bin/python",
"args": [
"<您的路径>/mcp-server-legifrance/src/server.py"
]
}
}
}

在法律文本(法律、法令、条例、命令)中搜索文章。
参数:
详情请参阅https://lab.dassignies.law/api/docs
示例: 为了搜索《计算机与自由法》第7条:
{
"text_id": "78-17",
"search": "7",
"champ": "NUM_ARTICLE"
}
在法国法律代码中搜索文章。
例如:“给我写一份关于PACS法律制度的总结”
<img width="793" alt="image" src="https://gips1.baidu.com/it/u=2096325009,944168838&fm=3081&app=3081&f=PNG?w=1586&h=1644" />参数:
示例: 为了在民法典中搜索有关PACS的信息,语言模型会发送如下请求:
{
"search": "pacte civil de solidarité",
"code_name": "民法典"
}
详情请参阅https://lab.dassignies.law/api/docs
在司法判例数据库中搜索。可以利用语言模型的力量直接在Legifrance中搜索判例。
示例1:某个主题的最新判例概览(例如:“给我找最近关于商业关系突然破裂的判例,并写一份总结”)。
<img width="1456" alt="image" src="https://gips0.baidu.com/it/u=2780503745,3552016562&fm=3081&app=3081&f=PNG?w=2912&h=1580" />示例2:从已知的具体判决(上诉号23-23.382),可以进行逐步分析:
参数:
详情请参阅https://lab.dassignies.law/api/docs
服务器可以包括预定义提示以方便使用。目前,只实现了一个示例提示。可以设置更详细的提示,特别是用于执行深度搜索或跨多个文档的提取操作...
创建一个法律专家代理,该代理:
使用:
# 预定义提示使用的示例
response = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1000,
tools=tools,
messages=[
{
"role": "user",
"content": [
{
"type": "tool_use",
"id": "prompt_use_1",
"name": "legifrance.get_prompt",
"input": {
"prompt_name": "法律专家代理",
"inputs": {
"question": "婚姻合同的有效条件是什么?"
}
}
}
]
}
]
)
欢迎贡献!请打开一个问题或提交一个拉取请求以进行任何改进或修复。