Skip to main content
Glama
ATO097
by ATO097
README.md
# MCP-BOJA · Normativa de la Junta de Andalucía

Servidor [MCP](https://modelcontextprotocol.io) para que Claude (Desktop o Code) y otros
clientes MCP consulten la **normativa de la Junta de Andalucía publicada en el BOJA**:
leyes, decretos, decretos-ley, órdenes, resoluciones, etc.

Usa los datos abiertos de la Junta
([dataset «Normativa de la Junta de Andalucía»](https://www.juntadeandalucia.es/datosabiertos/portal/dataset/normativa-de-la-junta-de-andalucia),
licencia CC BY 4.0). No necesita clave ni registro.

## Herramientas

| Herramienta | Qué hace |
|---|---|
| `buscar_normativa` | Busca por palabras del título, rango, organismo, suborganismo, tema, subtema y rango de fechas. Sin distinguir mayúsculas ni tildes, con paginación. |
| `obtener_norma` | Ficha completa de una norma por su `id`. |
| `leer_texto_boja` | Texto íntegro de la disposición (página del BOJA o PDF), paginado, con el enlace al PDF oficial. |
| `listar_valores_filtro` | Rangos, organismos, suborganismos, temas y subtemas existentes. |
| `contar_normas` | Número total de normas del catálogo. |

Ejemplos de preguntas a Claude:

- «¿Qué decretos sobre viviendas turísticas ha aprobado la Junta?»
- «Lista las normas publicadas en el BOJA en octubre de 2026.»
- «Resume la Ley 13/2011 del Turismo de Andalucía.»
- «¿Qué órdenes ha publicado la Consejería de Hacienda este año?»

## Instalación

Requisitos: Windows, macOS o Linux con conexión a internet. El instalador usa
[uv](https://docs.astral.sh/uv/) (gestor de Python) y lo instala si falta. No hace falta
tener Python instalado.

### Windows (desde el ZIP)

1. Entra en la [última versión](https://github.com/ATO097/mcp_boja/releases/latest),
   descarga **Source code (zip)** (en el apartado *Assets*) y descomprímelo en cualquier
   carpeta. Se crea una carpeta `mcp_boja-<versión>`.
2. Haz doble clic en **`instalar.bat`**.
3. Reinicia Claude Desktop (ciérralo también desde el icono de la bandeja del sistema).

El instalador:

1. instala el servidor con `uv tool install` (queda en `%USERPROFILE%\.local\bin\mcp-boja.exe`),
2. lo añade a `claude_desktop_config.json` (guardando antes una copia `.bak`),
3. lo registra en Claude Code si el comando `claude` está disponible.

Opciones: `instalar.bat --solo-desktop` o `instalar.bat --solo-code`.

### macOS / Linux

```bash
sh instalar.sh
```

### Directamente desde GitHub (sin ZIP)

```bash
uv tool install git+https://github.com/ATO097/mcp_boja
mcp-boja-configurar
```

### Configuración manual

Si prefieres no usar el configurador, añade esto a `claude_desktop_config.json`
(Claude Desktop → Configuración → Desarrollador → Editar configuración):

```json
{
  "mcpServers": {
    "normativa-andalucia": {
      "command": "C:\\Users\\TU_USUARIO\\.local\\bin\\mcp-boja.exe"
    }
  }
}
```

En Claude Code:

```bash
claude mcp add -s user normativa-andalucia -- mcp-boja
```

Sin instalar nada de forma permanente (útil para probar):

```json
"normativa-andalucia": {
  "command": "uvx",
  "args": ["--from", "git+https://github.com/ATO097/mcp_boja", "mcp-boja"]
}
```

## Actualizar y desinstalar

- **Actualizar:** descomprime la versión nueva y vuelve a ejecutar `instalar.bat`.
- **Desinstalar:** `desinstalar.bat` (quita el registro de Claude y el programa).

## Desarrollo

```bash
uv sync
uv run mcp-boja                    # servidor por stdio
uv run python tests/prueba_cliente.py   # prueba de extremo a extremo contra la API real
uv run mcp dev src/mcp_boja/server.py   # MCP Inspector
```

### Notas sobre la API de la Junta

- `GET /search` distingue mayúsculas y tildes, solo busca la frase exacta en el título
  y responde **400** cuando no hay resultados. Por eso el servidor descarga el catálogo
  completo (`/all`, unos 3 MB, regenerado a diario), lo guarda en memoria 3 horas y busca
  en local. Si falla la descarga, recurre a `/search`.
- Los filtros de `/search` exigen el valor exacto (o `-` para no filtrar).
- El texto de `leer_texto_boja` sale de la web del BOJA, que puede omitir imágenes o
  tablas. La versión auténtica es el PDF firmado (`pdf_oficial`).

## Licencia

Código bajo licencia MIT. Datos: © Junta de Andalucía, licencia
[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/deed.es).

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a largely distinct role: contar_normas counts, buscar_normativa searches, obtener_norma fetches metadata by id, listar_valores_filtro enumerates filter values, and leer_texto_boja reads full text. The only mild overlap is between obtener_norma (ficha/metadata) and leer_texto_boja (full disposition text), but the descriptions distinguish them adequately.

Naming Consistency5/5

All five tools follow a consistent Spanish verb_noun pattern (contar_normas, buscar_normativa, obtener_norma, listar_valores_filtro, leer_texto_boja). No mixing of conventions or casing styles.

Tool Count4/5

Five tools is well-scoped for a read-only normative catalog: search, count, retrieve, filter discovery, and full-text reading each earn their place. It is on the lean side but nothing is redundant.

Completeness4/5

For a read-only BOJA catalog, the surface covers search with rich filters, counting, detail retrieval, filter value discovery, and full-text access with pagination, which is a solid lifecycle. Minor gaps like related-norms or citation lookup exist but are workable.

Maintenance

ActivityMaintained
ResponsivenessNo issues