Legifrance

Consulta bases de datos legales francesas utilizando la API de Legifrance.

Documentación

mcp-server-legifrance

Servidor MCP Model Context Protocol experimental que permite consultar las bases jurídicas francesas a través de la API Legifrance en LLMs compatibles como Claude.

Descripción

Este proyecto implementa un servidor MCP que permite acceder a los recursos jurídicos franceses (textos legales, códigos, jurisprudencia) directamente desde un Large Language Model. Facilita las búsquedas jurídicas haciendo que los datos de Legifrance sean accesibles a través de herramientas interactivas.

Surgió tras la creación del paquete pylegifrance.

¿Qué es el MCP?

El Model Context Protocol (MCP) es un protocolo estandarizado desarrollado por Anthropic que permite a los modelos de lenguaje como Claude interactuar de manera estructurada con herramientas y servicios externos. Se trata de un avance interesante en la interoperabilidad de los LLMs porque establece un marco común para el intercambio de datos y la ejecución de funciones entre los modelos y las API de terceros. Hasta ahora, era necesario desarrollar llamadas de funciones específicas para cada servicio.

La interoperabilidad a través de MCP

La importancia del MCP reside en su capacidad para crear una interfaz estandarizada entre los LLMs y los sistemas externos. Esta estandarización presenta varias ventajas:

  1. Arquitectura modular: Los desarrolladores pueden crear herramientas especializadas que son fácilmente integrables en diferentes LLMs compatibles con el protocolo.

  2. Mayor seguridad: El MCP limita el acceso de los modelos únicamente a las funcionalidades explícitamente definidas, reduciendo así los riesgos de seguridad.

  3. Mantenimiento simplificado: Las actualizaciones de las herramientas externas pueden realizarse independientemente del modelo, facilitando la evolución de los sistemas.

  4. Extensión de capacidades: Los LLMs pueden acceder a datos en tiempo real y ejecutar operaciones complejas que no podrían realizar por sí solos.

¿mcp-server-legifrance?

La idea es aprovechar el poder de los modelos de lenguaje como Claude para realizar procesamientos sobre contenidos jurídicos oficiales a través de Légifrance y, a futuro, de otras bases de datos públicas como el RNE, el BODACC, etc. Los primeros resultados son muy prometedores y permiten superar ciertas limitaciones de la búsqueda estadística clásica que ofrece Légifrance. El servicio está en mejora continua, pero ya puedes consultar algunos ejemplos de búsquedas a continuación.

El servidor admite las siguientes funcionalidades:

  • Búsqueda en los textos legales (leyes, ordenanzas, decretos, resoluciones)
  • Consulta de los artículos de los códigos jurídicos franceses
  • Búsqueda en la jurisprudencia judicial

Los otros fondos de Legifrance se implementarán próximamente.

Si deseas acceder directamente a la API Legifrance para conectar tu propio servidor MCP, es por aquí: https://lab.dassignies.law o linkedin

Requisitos previos

  • Python 3.9+
  • Clave API para Legifrance (se obtiene en lab.dassignies.law)
  • Un modelo compatible con el protocolo MCP (como Claude desktop)

Instalación

  1. Crea un entorno virtual y actívalo:
python -m venv venv 
source venv/bin/activate  # Sur Windows: venv\Scripts\activate
uv venv .venv 
source .venv/bin/activate  # Sur Windows: venv\Scripts\activate
  1. Instalar mediante pip:
pip install git+https://github.com/rdassignies/mcp-server-legifrance.git
  1. Instalar mediante uv
uv pip install git+https://github.com/rdassignies/mcp-server-legifrance.git
  1. Crea un archivo .env en la raíz del proyecto con tus credenciales:
DASSIGNIES_API_KEY=votre_clé_api
DASSIGNIES_API_URL=https://lab.dassignies.law/api/ # ou l'URL correspondante

Para obtener tus claves API de prueba, por favor contáctame a través de LinkedIn

Uso

Integración con Claude

Es la integración más "sencilla".

  1. Utiliza el siguiente archivo de configuración para integrar el servidor MCP en Claude Desktop. Para encontrar este archivo, debes ir a parámetros>Desarrollador>modificar la configuración (te lleva al archivo de configuración en formato .json).

También existe un procedimiento desde la línea de comandos mediante uv que se documentará más adelante.

Aquí tienes un ejemplo de uso:

{
  "mcpServers": {
    "legifrance": {
      "command": "<CHEMIN_VERS_VOTRE_REP>/mcp-server-legifrance/venv/bin/python",
            "args": [
                "<CHEMIN_VERS_VOTRE_REP>/mcp-server-legifrance/src/server.py"
		]

    }
  }
}
  1. Inicia Claude desktop, deberías ver aparecer iconos de herramientas: alt text

Herramientas disponibles

1. rechercher_dans_texte_legal

Busca artículos en los textos legales (leyes, ordenanzas, decretos, resoluciones).

Parámetros:

  • text_id: Identificador del texto (ej: "78-17" para la ley de informática y libertades)
  • search: Palabras clave o número de artículo
  • champ: Zona de búsqueda ("ALL", "TITLE", "TABLE", "NUM_ARTICLE", "ARTICLE")
  • type_recherche: Modo de búsqueda ("TOUS_LES_MOTS_DANS_UN_CHAMP", "EXPRESSION_EXACTE", "AU_MOINS_UN_MOT")
  • page_size: Número de resultados (máx. 100)

Para más detalles, cf. https://lab.dassignies.law/api/docs

Ejemplo: Para buscar el artículo 7 de la ley 78-17:

{
  "text_id": "78-17",
  "search": "7",
  "champ": "NUM_ARTICLE"
}

2. rechercher_code

Busca artículos en los códigos jurídicos franceses.

Por ej. "Redáctame una síntesis sobre el régimen jurídico del PACS"

image

Parámetros:

  • search: Términos de búsqueda
  • code_name: Nombre del código (ej: "Code civil", "Code du travail")
  • champ: Zona de búsqueda
  • sort: Ordenamiento de los resultados
  • type_recherche: Modo de búsqueda
  • page_size: Número de resultados
  • fetch_all: Si se deben recuperar todos los resultados

Ejemplo: Para buscar información sobre el PACS en el Code civil, el modelo de lenguaje enviará la siguiente consulta:

{
  "search": "pacte civil de solidarité",
  "code_name": "Code civil"
}

Para más detalles, cf. https://lab.dassignies.law/api/docs

3. rechercher_jurisprudence_judiciaire

Busca en la base de jurisprudencia judicial. Se puede utilizar el poder de los modelos de lenguaje para realizar búsquedas de jurisprudencia directamente en Legifrance.

Ejemplo 1 Panorama de las últimas jp sobre un tema particular (ej. "Encuéntrame las últimas jp sobre la ruptura brutal de las relaciones comerciales establecidas y redáctame un cuadro de síntesis").

image

Ejemplo 2 A partir de una decisión particular conocida (número de recurso 23-23.382), se pueden hacer análisis por etapas:

  1. Se encuentra la sentencia y Claude genera la ficha de la sentencia
  2. Se le pide que extraiga los artículos citados y que los encuentre en Legifrance
  3. Se le pide que encuentre jp similares
  4. etc...

image

Parámetros:

  • search: Términos o número de caso
  • publication_bulletin: Si se publicó en el boletín ["T"] o no ["F"]
  • sort: Ordenamiento de los resultados
  • champ: Zona de búsqueda
  • type_recherche: Modo de búsqueda
  • page_size: Número de resultados
  • fetch_all: Si se deben recuperar todos los resultados
  • juri_keys: Campos de respuesta a extraer
  • juridiction_judiciaire: Lista de jurisdicciones

Para más detalles, cf. https://lab.dassignies.law/api/docs

Prompts predefinidos

El servidor puede incluir prompts predefinidos para facilitar su uso. Por el momento, solo se ha implementado un prompt a modo de ejemplo. Es posible crear prompts mucho más detallados, especialmente para realizar operaciones de tipo deepsearch o extracciones en varios documentos...

agent_juridique_expert

Crea un agente jurídico experto que:

  • Cite sistemáticamente sus fuentes
  • Utilice las herramientas pertinentes para buscar información
  • Proporcione análisis paso a paso
  • Incluya los enlaces oficiales a los textos jurídicos

Uso:

# Exemple d'utilisation du prompt prédéfini
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": "agent_juridique_expert",
                        "inputs": {
                            "question": "Quelles sont les conditions de validité d'un contrat de mariage?"
                        }
                    }
                }
            ]
        }
    ]
)

Limitaciones

  • Las solicitudes están limitadas a 10 por segundo para respetar los límites de la API
  • Se necesita una conexión a internet para acceder a las bases jurídicas
  • El servidor no almacena en caché los resultados, cada solicitud consulta la API

Contribución

¡Las contribuciones son bienvenidas! Por favor, abre una issue o envía una pull request para cualquier mejora o corrección.

Licencia

MIT License