Skip to main content
Glama
anamtb

BOE & EUR-Lex MCP Server

by anamtb
README.md
<div align="center">
  <img src="https://raw.githubusercontent.com/anamtb/boe-mcp/main/assets/boe_ai.gif" width="300" alt="BOE AI Demo" />

<h1>🏛️ BOE & EUR-Lex MCP Server</h1>
<h3><i>"Bestia Legal Pro Plus" v1.3.0 — El radar jurídico definitivo</i></h3>

[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
[![MCP](https://img.shields.io/badge/MCP-Protocol-orange?style=for-the-badge)](https://modelcontextprotocol.io)
[![NPM](https://img.shields.io/badge/NPM-red?style=for-the-badge&logo=npm&logoColor=white)](https://www.npmjs.com/package/boe-eurlex-mcp)

<p align="center">
  <a href="#-la-crisis-de-identidad">La Crisis</a> •
  <a href="#-anatomía-técnica-del-modo-dios">Tecnología</a> •
  <a href="#-el-diccionario-del-hacker-del-boe">Los IDs</a> •
  <a href="#-estrategia-de-búsqueda-radar-vs-brújula">Estrategias</a> •
  <a href="#-guía-de-supervivencia-para-queries">Ejemplos</a> •
  <a href="#-instalación-e-integración">Instalación</a>
</p>

</div>

---

## 🚨 La Crisis de Identidad (¿Por qué existe esto?)

Seamos brutalmente honestos: los LLMs son unos **artistas a la hora de alucinar leyes**. Se inventan artículos del Código Penal con la misma soltura con la que un político improvisa una promesa electoral. Suenan convincentes, tienen buena gramática y **no existen**.

El **BOE & EUR-Lex MCP Server** es el suero de la verdad que tu agente necesita. Conecta directamente a Gemini, Claude, Cursor y compañía con el **Boletín Oficial del Estado** y **EUR-Lex (Unión Europea)**, las únicas fuentes que importan cuando la cosa se pone seria.

> **V1.2.0 "Bestia Legal"** 🏛️�: Evolución proactiva. Incorpora **Búsqueda Relajada** (OR/Wildcard), **Detector de Referencia Cruzadas** automático y **Análisis de Relaciones** jurídicas. La IA ahora no solo lee, sino que investiga conexiones.

---

## 🎯 El Arte de la Query: Cómo preguntar para no fallar

No es solo *qué* buscas, sino *cómo* lo pides. Aquí tienes el manual de estilo para que tu IA sea un ninja legal:

### 1. 🏛️ Extracción Quirúrgica (Leyes y Artículos)
Para leyes consolidadas, sé específico con el número o el ID. 
*   **Template**: *"Usa el MCP para buscar la [Ley 28/2022] y dime qué dice el [Artículo 15] sobre [nómadas digitales]."*
*   **Análisis Avanzado**: *"Usa el artículo 1 de la [Ley Orgánica 1/2024] y dime si menciona algo sobre la '[normalización institucional]'."* 

### 2. 📋 El Modo Detective (Anuncios y Licitaciones)
Los anuncios suelen estar solo en PDF. Para que la IA "despierte" al servidor, dale contexto:
*   **Template**: *"Busca el anuncio de la [AEAT] sobre [achatarramiento de barcos] que se publicó en el BOE el 19 de febrero de 2026 y léelo entero (`article: 'todo'`)."*

*   **Resultado**: Localiza el ID, descarga el PDF y extrae los datos (como los 654.000,00€ que encontramos en nuestras pruebas).

### 3. 📡 Vigilancia Diaria (Sumarios)
No le pidas "un resumen del BOE". Pídele que **busque** dentro del sumario:
*   **Template**: *"Mira el sumario de hoy (`boe_get_daily_summary`). Busca si hay algún [nombramiento de Director General] y, si lo hay, dame su nombre."*

### 4. 🇪🇺 Búsqueda Internacional (EUR-Lex)
> [WARNING]
> **Acceso Restringido**: Actualmente el portal EUR-Lex ha incrementado su protección anti-bots (AWS WAF), lo que puede causar fallos (`Status 202`) en búsquedas automatizadas. Esta funcionalidad se mantiene como **Experimental**.

> [IMPORTANT]
> **La Regla de Oro**: Cuando busques algo que **no es una ley** (anuncios, multas, nombramientos), añade siempre a tu instrucción: **"Lee el texto íntegro usando article: 'todo'"**.

### 5. 🔬 Casos de Éxito: La Bestia en Acción
*   **Caso SMI 2024**: Buscamos *"cuantia salario minimo profesional 2024"*.
    *   **Acción de la Bestia**: El motor detectó 0 resultados exactos, activó el **Relaxed Search**, descompuso la frase y encontró el **RD 142/2024**.
    *   **Análisis**: Automáticamente detectó que el Art. 1 mencionaba el `BOE-A-2015-11430` (Estatuto Trabajadores) y ofreció el link para seguir investigando.
## ⚙️ Arquitectura de la "Bestia Legal"

Este servidor no es un simple script de scraping. Es un motor de inteligencia legal con fallbacks recursivos y análisis proactivo:

<div align="center">
  <img src="https://raw.githubusercontent.com/anamtb/boe-mcp/main/assets/architecture.png" width="800" alt="Arquitectura Bestia Legal" />
</div>

1.  **🏛️ Capa Legislada (API Consolidada)**: El carril rápido. Buscamos en la base de datos oficial de legislación consolidada. Velocidad máxima, datos estructurados. Perfecta para leyes vigentes (Código Civil, Ley de Startups, etc.).

2.  **📋 Capa Diaria (XML Nativo)**: Cuando el documento es reciente o no es una ley (un anuncio de ayer, un nombramiento de esta mañana), saltamos al `xml.php` oficial del boletín del día. Sin intermediarios.

3.  **🦅 Capa de Rescate (Heurística de PDF)**: Aquí ocurre la magia real. Si el XML viene más vacío que las promesas electorales, el servidor:
    *   📐 Calcula la ruta exacta del PDF oficial usando algoritmos de fecha e ID.
    *   📥 Descarga el documento en memoria.
    *   📖 Extrae el texto bruto usando `pdf-parse`.
    *   🍽️ Se lo sirve a la IA en bandeja de plata.
    
4.  **🧠 Capa de Análisis (Novedad v1.2.0)**: Detecta automáticamente IDs del BOE y nombres de leyes citadas en el texto para que la IA pueda "navegar" la red legal.

5.  **🌐 Capa de Investigación Externa (Pro Plus v1.3.0)**: Detecta URLs externas y ofrece la herramienta `boe_follow_link` para que el agente pueda salir del BOE y leer pliegos, bases en webs regionales o detalles técnicos en otros portales gubernamentales.
---

## 🗺️ El Diccionario de los IDs (El mapa de la jungla)

El BOE no es un libro, es una jungla organizada en secciones. Memoriza los prefijos y nunca te perderás:

*   **`BOE-A-YYYY-NNNN`**: **Leyes, Reales Decretos y Nombramientos.** (Ej: BOE-A-2024-11776).
*   **`BOE-B-YYYY-NNNN`**: **Anuncios, Licitaciones y Subastas.** (Ej: BOE-B-2024-4144).
*   **`BOE-S-YYYY-NNNN`**: **Otras Notificaciones.** (Multas, citaciones, etc.).

---

## 🎯 Estrategia de Búsqueda: Radar vs. Brújula

**Esta sección te puede salvar de pensar que el sistema "no funciona".** La clave está en elegir la herramienta correcta:

### 1. 🧭 La Brújula (`boe_search`) — Para LEYES
Úsala cuando sabes el nombre de la norma o quieres encontrar legislación consolidada.
- ✅ *Busca la Ley de Propiedad Horizontal y dame el Artículo 9.*
- ❌ NO la uses para buscar multas individuales o anuncios del día.

### 2. 📡 El Radar (`boe_get_daily_summary`) — Para ANUNCIOS DEL DÍA
Úsala para descubrir qué se ha publicado hoy o en una fecha concreta (multas, licitaciones, nombramientos).
- ✅ *Mira el sumario del BOE del 19 de febrero y sácame los IDs de los anuncios de la AEAT.*
- Una vez tienes el ID, usa la siguiente herramienta. El Radar te descubre la presa; otra herramienta la abate.

### 3. 👁️ El Ojo de Sauron (`boe_get_article`) — Para LEER TODO
El núcleo del sistema. Una vez tienes el ID (de la Brújula, del Radar, o porque ya lo sabes), esta herramienta te devuelve el texto completo, lo que implique XML o PDF.
- ✅ *Lee el anuncio BOE-B-2024-4144 con article: "todo".*

---

## 💡 Guía de Supervivencia para Queries

Para que tu IA no se pierda, ayúdala a ser un mejor abogado:

### ❌ Malas Queries (Así no)
*   *"Busca la ley de educación."* — Hay 50. Gemini se agobiará y tú también.
*   *"Dime qué dice el BOE hoy."* — Como pedirle el Quijote resumido en 10 segundos.
*   *"Busca una multa a mi nombre."* — El `search` no busca multas individuales, busca **leyes**.

### ✅ Buenas Queries (Nivel Senior)
*   🏛️ **Para Leyes**: *"Usa el MCP para buscar la Ley 28/2022 y dime qué dice el Artículo 15 sobre nómadas digitales."*
*   📋 **Para Anuncios con ID**: *"Usa el MCP para leer el anuncio BOE-B-2024-4144 (artículo 'todo'). ¿De qué ayuntamiento es y para qué proyecto están expropiando?"*
*   📡 **Para Notificaciones del Día**: *"Mira el sumario de hoy con `boe_get_daily_summary`. Busca notificaciones de juzgados y léeme el texto de la primera que encuentres."*

> [!TIP]
> Cuando busques anuncios, nombramientos o cualquier cosa que **no sea un artículo numerado**, dile siempre a la IA: `article: "todo"`. Eso activa el modo lectura completa y el "Modo Rescate PDF" si hace falta.

---

## 🛠️ Arsenal de Herramientas (El Maletín del Abogado)

| Herramienta | Misión | Parámetros clave |
| :--- | :--- | :--- |
| **`boe_search`** | 🧭 **Brújula.** Encontrar el ID de una ley (con fallback "Relajado"). | `q`: "Amnistía 2024" |
| **`boe_get_article`** | 👁️ **Bisturí.** Extraer texto y detectar Referencias Cruzadas. | `id`: "BOE-A-...", `article`: "1" |
| **`boe_get_relationships`**| 🔗 **Linaje.** Ver qué normas modifica o deroga esta ley. | `id`: "BOE-A-..." |
| **`boe_search_recent_summaries`** | 📡 **Radar.** Escanear sumarios de los últimos N días. | `keyword`: "Oposiciones", `days`: 7 |
| **`boe_get_daily_summary`** | � **Sumario.** Ver todo lo publicado en una fecha concreta. | `date`: "20260219" |
| **`eurlex_search`** | 🇪🇺 **Pasaporte.** Normativas de la Unión Europea. | `q`: "RGPD" |

---

## 🚀 Instalación e Integración

### 1. Instalación Global (Una vez y para siempre)
```bash
npm install -g boe-eurlex-mcp
```
O usa `npx` directamente en los comandos de configuración de abajo. No instala nada y siempre trae la última versión.

---

### 💎 Gemini CLI (Antigravity)
Dale superpoderes legales a tu terminal con un solo comando:
```bash
gemini mcp add boe_eurlex npx -y boe-eurlex-mcp --scope user
```

---

### 🤖 Claude Desktop
Abre tu archivo de configuración (`%APPDATA%\Claude\claude_desktop_config.json` en Windows, `~/Library/Application Support/Claude/claude_desktop_config.json` en Mac) y añade:

```json
{
  "mcpServers": {
    "boe_eurlex": {
      "command": "npx",
      "args": ["-y", "boe-eurlex-mcp"]
    }
  }
}
```

---

### 🌌 Antigravity / Cursor / Cline / IDEs con soporte MCP
Configura un nuevo servidor MCP en tu IDE con:
- **Comando:** `npx`
- **Argumentos:** `-y`, `boe-eurlex-mcp`

> [!IMPORTANT]
> **Reglas de Oro para Agentes (Antigravity/Cursor/Cline):**
> 1. Para anuncios (`BOE-B`) o nombramientos (`BOE-A`), usa SIEMPRE `article: "todo"`.
> 2. Si un documento no está en XML, el servidor activará el "Modo Rescate PDF" automáticamente. No interrumpas el proceso.
> 3. Usa `boe_search` para leyes consolidadas y `boe_get_daily_summary` para encontrar anuncios del día.

---

## 🔐 Garantía de Verdad (SHA-256 Anti-Alucinaciones)

Cada respuesta del servidor incluye una **huella digital criptográfica SHA-256** del texto. Si alguien modifica el contenido aunque sea una coma, el hash cambia. Porque en la ley, una coma puede mandarte a prisión... o sacarte de ella.

```json
{
  "source": "BOE",
  "id": "BOE-A-2024-11776",
  "sha256": "a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e",
  "nota": "Si el hash no coincide con el BOE oficial, alguien ha tocado el texto. (Spoiler: no hemos sido nosotros)."
}
```

---

## 📜 Licencia
**MIT**. Úsalo, cámbialo, ámalo. (Pero no nos demandes si Gemini te dice que puedes aparcar en doble fila, ¡comprueba siempre la fuente oficial!).

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct operation: general search, article retrieval, relationship analysis, and recent summary scanning. No functional overlap.

Naming Consistency5/5

All tools follow a consistent 'boe_' prefix with a verb_noun pattern (e.g., boe_search, boe_get_article). No naming conflicts or style mixing.

Tool Count5/5

4 tools is well-scoped for a legislative document server, covering core research needs without bloat or deficiency.

Completeness4/5

Covers searching, detailed retrieval, relationship extraction, and recent alerts. Missing EUR-Lex coverage despite server name, but for BOE alone it is reasonably complete.

Maintenance

ActivityInactive
ResponsivenessNo issues