AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

MCP BOE

mcp-computingvictor-mcp-boe · by ComputingVictor

MCP server para el BOE 🇪🇸 — Acceso a legislación consolidada, sumarios diarios y tablas oficiales del Boletín Oficial del Estado mediante Model Context Protocol y API REST.

No reviews yet
0 installs
30 views
0.0% view→install

Install

$ agentstack add mcp-computingvictor-mcp-boe

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-computingvictor-mcp-boe)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
4mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of MCP BOE? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

MCP BOE 🇪🇸

Model Context Protocol para el Boletín Oficial del Estado español

Un servidor MCP que permite a Claude y otros LLMs acceder a la API oficial del BOE para consultar legislación consolidada, sumarios diarios y tablas auxiliares del gobierno español.

[](https://python.org) [](https://modelcontextprotocol.io) [](LICENSE)

🚀 Características

  • 🔍 Búsqueda de Legislación: Buscar en más de 50.000 normas consolidadas con filtros por departamento, rango normativo, materia y fechas
  • 📰 Sumarios del BOE/BORME: Acceder a publicaciones diarias, búsquedas recientes y resúmenes semanales
  • 🏛️ Tablas Auxiliares: Consultar códigos de departamentos, materias, rangos normativos y ámbitos
  • 📄 Lectura de PDFs: Descargar y extraer el texto de cualquier documento del BOE para analizarlo
  • 💬 Prompts integrados: Plantillas de consulta listas para usar en Claude
  • 📊 Datos Oficiales: Conecta directamente con la API oficial del BOE
  • ⚙️ Configurable: Timeout, reintentos y nivel de log via variables de entorno

📋 Tabla de Contenidos

  • [Instalación](#-instalación)
  • [Configuración con Claude Desktop](#-configuración-con-claude-desktop)
  • [Configuración con Claude Code](#-configuración-con-claude-code)
  • [Prompts disponibles](#-prompts-disponibles)
  • [Herramientas disponibles](#-herramientas-disponibles)
  • [Lectura de PDFs](#-lectura-de-pdfs)
  • [Variables de entorno](#-variables-de-entorno)
  • [Ejemplos de uso](#-ejemplos-de-uso)
  • [Solución de problemas](#-solución-de-problemas)
  • [Estructura del proyecto](#-estructura-del-proyecto)

🛠️ Instalación

Prerrequisitos

  • Python 3.10 o superior (requerido por la librería mcp)
  • uv (recomendado) o pip

Opción 1: uvx — sin instalación (Recomendado)

Con uvx no necesitas clonar el repositorio ni gestionar dependencias:

uvx --from git+https://github.com/ComputingVictor/MCP-BOE.git mcp-boe

Opción 2: Desde el código fuente con uv

git clone https://github.com/ComputingVictor/MCP-BOE.git
cd MCP-BOE

# Instalar dependencias y ejecutar
uv run python -m mcp_boe.server

Opción 3: Instalación con pip

git clone https://github.com/ComputingVictor/MCP-BOE.git
cd MCP-BOE
pip install -e .

🖥️ Configuración con Claude Desktop

Edita el archivo de configuración de Claude Desktop:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Con uv (Recomendado)

{
  "mcpServers": {
    "mcp-boe": {
      "command": "uv",
      "args": [
        "run",
        "--python", "3.12",
        "--project", "/ruta/absoluta/a/MCP-BOE",
        "python", "-m", "mcp_boe.server"
      ]
    }
  }
}

> Sustituye /ruta/absoluta/a/MCP-BOE por la ruta real donde clonaste el repositorio.

Con uvx

{
  "mcpServers": {
    "mcp-boe": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/ComputingVictor/MCP-BOE.git", "mcp-boe"]
    }
  }
}

Reinicia Claude Desktop tras guardar los cambios.

⚡ Configuración con Claude Code

Con uvx

{
  "mcpServers": {
    "mcp-boe": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/ComputingVictor/MCP-BOE.git", "mcp-boe"],
      "transport": "stdio"
    }
  }
}

También puedes usar el archivo incluido en el repositorio:

# Desde el directorio del proyecto
claude --mcp-config claude_mcp_config_uvx.json

💬 Prompts disponibles

El servidor incluye 4 prompts integrados accesibles desde el selector de prompts de Claude:

buscar_legislacion

Busca y resume normas del BOE.

| Argumento | Descripción | Requerido | |-----------|-------------|-----------| | tema | Texto o nombre de la norma a buscar | ✅ | | departamento | Ministerio u organismo emisor | ❌ |

Ejemplos:

  • tema: protección de datos → encuentra RGPD y LOPDGDD
  • tema: Ley 40/2015 → Ley de Régimen Jurídico del Sector Público
  • tema: tráfico, departamento: Ministerio del Interior

analizar_norma

Análisis completo de una norma: metadatos, estado de vigencia, estructura y relaciones con otras normas.

| Argumento | Descripción | Requerido | |-----------|-------------|-----------| | id_norma | Identificador BOE (ej: BOE-A-2015-10566) | ✅ |

Ejemplos:

  • BOE-A-1978-31229 → Constitución Española
  • BOE-A-2015-10566 → Ley 40/2015 de Régimen Jurídico del Sector Público
  • BOE-A-2018-16673 → Ley Orgánica de Protección de Datos

resumen_boe_dia

Resumen de las publicaciones más relevantes del BOE de una fecha concreta.

| Argumento | Descripción | Requerido | |-----------|-------------|-----------| | fecha | Fecha en formato AAAAMMDD | ✅ | | seccion | Sección del BOE: 1, 2A, 2B, 3, 4, 5 | ❌ |

Ejemplos:

  • fecha: 20250101 → publicaciones del 1 de enero de 2025
  • fecha: 20240529, seccion: 1 → solo disposiciones generales

comparar_normas

Compara dos normas e identifica relaciones de modificación o derogación entre ellas.

| Argumento | Descripción | Requerido | |-----------|-------------|-----------| | id_norma_1 | Identificador de la primera norma | ✅ | | id_norma_2 | Identificador de la segunda norma | ✅ |

Ejemplo:

  • BOE-A-2015-10566 y BOE-A-2015-10565 → Ley 40/2015 y Ley 39/2015 (las dos grandes leyes administrativas)

🔧 Herramientas disponibles

31 herramientas en total organizadas en 5 grupos.

📜 Legislación Consolidada (9 herramientas)

| Herramienta | Descripción | Parámetros clave | |-------------|-------------|------------------| | search_consolidated_legislation | Busca en más de 50.000 normas consolidadas | query, title, department_code, legal_range_code, matter_code, from_date, to_date, limit, include_derogated | | get_consolidated_law | Obtiene metadatos, análisis jurídico y texto de una norma | law_id, include_metadata, include_analysis, include_full_text, include_eli_metadata | | get_law_structure | Índice completo de una norma (artículos, disposiciones, anexos) | law_id | | get_law_text_block | Texto de un artículo o disposición específica | law_id, block_id | | find_related_laws | Normas que modifican, derogan o son modificadas por una norma | law_id, relation_type | | compare_law_versions | Compara el texto de una norma entre dos fechas, detectando artículos añadidos, modificados o eliminados | law_id, from_date, to_date, granularity | | search_law_articles | Busca artículos concretos dentro de una norma sin descargar el texto completo | law_id, query, search_in, limit | | get_law_metadata | Obtiene solo los metadatos de una norma (rango, fecha, órgano, estado, enlaces) sin cargar el texto | law_id | | list_related_laws | Lista normas relacionadas con control granular sobre qué tipos de relación incluir | law_id, include_derogating, include_development, include_references |

📰 Sumarios BOE/BORME (7 herramientas)

| Herramienta | Descripción | Parámetros clave | |-------------|-------------|------------------| | get_boe_summary | Sumario completo del BOE para una fecha | date, section_filter, department_filter, max_items | | get_borme_summary | Sumario del BORME (Registro Mercantil) | date, province_filter, max_items | | search_recent_boe | Busca documentos en los últimos N días | days_back, search_terms, section_filter | | get_weekly_summary | Estadísticas y resumen de una semana completa | start_date, include_statistics | | get_boe_summary_range | Agrega los sumarios de un rango de fechas (máx. 31 días) con filtro de sección | from_date, to_date, section, max_items | | watch_boe_changes | Radar normativo: busca publicaciones recientes por palabras clave | days_back, keywords, sections, max_items | | group_summary_by_department | Agrupa las publicaciones de un rango de fechas por departamento emisor | from_date, to_date, sections, max_items_per_dept |

🏛️ Tablas Auxiliares (10 herramientas)

| Herramienta | Descripción | |-------------|-------------| | get_departments_table | Lista de departamentos oficiales con sus códigos | | get_legal_ranges_table | Rangos normativos (Ley, Real Decreto, Orden, etc.) | | get_matters_table | Vocabulario controlado de materias temáticas | | get_scopes_table | Ámbitos normativos (estatal, autonómico) | | get_consolidation_states_table | Estados de consolidación | | search_auxiliary_data | Búsqueda en todas las tablas a la vez | | get_code_description | Descripción de un código específico | | search_departments_advanced | Búsqueda avanzada de departamentos con filtro por código padre (jerarquía) | search_term, active_only, parent_code, limit | | list_topics_for_law | Lista las materias del vocabulario controlado de una norma concreta | law_id | | suggest_auxiliary_filters | Dado un texto libre, sugiere códigos de departamento, rango y materia para filtrar búsquedas | query, max_suggestions |

🛠️ Calidad de vida para LLMs (4 herramientas)

| Herramienta | Descripción | Parámetros clave | |-------------|-------------|------------------| | summarize_law_sections | Resumen estructurado de una norma con el primer párrafo de cada artículo | law_id | | paginate_law_text | Devuelve el texto de una norma por páginas usando un cursor opaco | law_id, cursor, max_chars | | explain_law_structure | Describe la estructura jerárquica de una norma con recuento de elementos por nivel | law_id | | normalize_boe_reference | Normaliza una referencia textual a una norma o sumario en campos estructurados | reference_text |

📄 Lectura de PDFs (1 herramienta)

| Herramienta | Descripción | Parámetros clave | |-------------|-------------|------------------| | read_boe_pdf | Descarga y extrae el texto de un PDF del BOE | source, max_pages |

source acepta dos formatos:

  • URL directa: la que aparece en el campo url_pdf de los sumarios

https://www.boe.es/boe/dias/2025/03/28/pdfs/BOE-A-2025-6192.pdf

  • Identificador BOE: el servidor consulta la API para obtener la fecha y construye la URL

BOE-A-2025-6192 o BOE-A-2015-10566

max_pages — páginas máximas a leer (por defecto 30, máximo 100).

Límites aplicados: PDFs de hasta 10 MB y 80.000 caracteres de texto devuelto al LLM.

Ejemplos de uso en Claude:

Lee el PDF de BOE-A-2015-10566 y explícame qué regula la Ley 40/2015
Descarga https://www.boe.es/boe/dias/2025/03/28/pdfs/BOE-A-2025-6192.pdf y resume su contenido
Busca el sumario del BOE de hoy y léeme el PDF del primer real decreto que aparezca

📌 Formatos y valores útiles

Secciones del BOE: | Código | Descripción | |--------|-------------| | 1 | Disposiciones generales | | 2A | Autoridades y personal — Nombramientos | | 2B | Autoridades y personal — Oposiciones | | 3 | Otras disposiciones | | 4 | Administración de Justicia | | 5 | Anuncios |

Departamentos frecuentes: | Código | Departamento | |--------|-------------| | 7723 | Jefatura del Estado | | 1430 | Ministerio de Justicia | | 1470 | Ministerio del Interior |

Rangos normativos frecuentes: | Código | Rango | |--------|-------| | 1300 | Ley | | 1250 | Ley Orgánica | | 1200 | Real Decreto | | 1100 | Real Decreto-ley | | 800 | Orden ministerial |

⚙️ Variables de entorno

| Variable | Descripción | Valor por defecto | |----------|-------------|-------------------| | BOE_HTTP_TIMEOUT | Timeout en segundos para peticiones HTTP | 30.0 | | BOE_MAX_RETRIES | Número máximo de reintentos ante errores de red o 5xx | 3 | | BOE_RETRY_DELAY | Segundos de espera base entre reintentos (backoff lineal) | 1.0 | | LOG_LEVEL | Nivel de logging (DEBUG, INFO, WARNING, ERROR) | INFO |

Ejemplo de configuración en Claude Desktop:

{
  "mcpServers": {
    "mcp-boe": {
      "command": "uv",
      "args": ["run", "--project", "/ruta/a/MCP-BOE", "python", "-m", "mcp_boe.server"],
      "env": {
        "BOE_HTTP_TIMEOUT": "60",
        "LOG_LEVEL": "WARNING"
      }
    }
  }
}

💡 Ejemplos de uso

Buscar legislación desde Python

import asyncio
from mcp_boe.utils.http_client import BOEHTTPClient
from mcp_boe.tools.legislation import LegislationTools

async def main():
    async with BOEHTTPClient() as client:
        tools = LegislationTools(client)
        resultados = await tools.search_consolidated_legislation({
            "query": "Ley 40/2015",
            "limit": 3
        })
        for r in resultados:
            print(r.text)

asyncio.run(main())

Obtener sumario del BOE

import asyncio
from datetime import datetime, timedelta
from mcp_boe.utils.http_client import BOEHTTPClient
from mcp_boe.tools.summaries import SummaryTools

async def main():
    async with BOEHTTPClient() as client:
        tools = SummaryTools(client)
        fecha = (datetime.now() - timedelta(days=2)).strftime("%Y%m%d")
        resultados = await tools.get_boe_summary({
            "date": fecha,
            "section_filter": "1",
            "max_items": 10
        })
        for r in resultados:
            print(r.text)

asyncio.run(main())

Diagnóstico de conectividad

# Verificar que la API del BOE es accesible
python -m mcp_boe.server --mode diagnose

🐛 Solución de problemas

El servidor no aparece en Claude Desktop

  1. Verifica que Python 3.10+ está disponible: python3 --version
  2. Comprueba la ruta en el config: debe ser absoluta, no relativa
  3. Reinicia completamente Claude Desktop (no solo la ventana)
  4. Revisa los logs en Claude Desktop → Ayuda → Abrir carpeta de logs

Error: requires-python / incompatibilidad de versión

La librería mcp requiere Python 3.10 o superior. Fuerza la versión con uv:

"args": ["run", "--python", "3.12", "--project", "/ruta/MCP-BOE", "python", "-m", "mcp_boe.server"]

Error: No module named 'mcp_boe'

Asegúrate de pasar --project al directorio raíz del repositorio (donde está pyproject.toml), no al directorio src/.

La API del BOE no responde

python -m mcp_boe.server --mode diagnose

La API del BOE no publica horarios de mantenimiento. Los errores 5xx se reintentan automáticamente hasta 3 veces.

📊 Estructura del proyecto

MCP-BOE/
├── src/mcp_boe/
│   ├── __init__.py
│   ├── __main__.py
│   ├── server.py               # Servidor MCP: tools, prompts, resources
│   ├── models/
│   │   └── boe_models.py       # Modelos Pydantic y validadores
│   ├── tools/
│   │   ├── legislation.py      # 9 herramientas de legislación consolidada
│   │   ├── summaries.py        # 7 herramientas de sumarios BOE/BORME
│   │   ├── auxiliary.py        # 10 herramientas de tablas auxiliares
│   │   ├── analysis.py         # 4 herramientas de calidad de vida para LLMs
│   │   └── documents.py        # 1 herramienta de lectura de PDFs
│   └── utils/
│       └── http_client.py      # Cliente HTTP asíncrono con reintentos
├── examples/
│   └── basic_usage.py
├── tests/
├── pyproject.toml
├── claude_mcp_config.json      # Config de ejemplo para instalación local
├── claude_mcp_config_uvx.json  # Config de ejemplo con uvx
└── rest_api_wrapper.py         # API REST opcional (FastAPI)

🤝 Contribuir

  1. Fork del proyecto
  2. Crea una rama (git checkout -b feature/nueva-funcionalidad)
  3. Haz commit de los cambios (git commit -m 'Agregar nueva funcionalidad')
  4. Push a la rama (git push origin feature/nueva-funcionalidad)
  5. Abre un Pull Request

Desarrollo local

git clone https://github.com/ComputingVictor/MCP-BOE.git
cd MCP-BOE
uv sync --extra dev
uv run python -m pytest tests/
uv run black src/

📝 Changelog

v0.1.0

  • Implementación inicial del servidor MCP

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.