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>
[](https://www.typescriptlang.org/)
[](https://modelcontextprotocol.io)
[](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