Saltar a la pregunta
datosabiertos

Hola, datos abiertos.

Lo que busques en los catálogos de Madrid, Barcelona, Málaga, Córdoba y Reus, pregúntalo aquí.

Comprobando el servidor…
Comprobando si tu navegador tiene WebGPU…

Pregunta en español (o en catalán para Barcelona y Reus). Verás cada llamada a las herramientas antes de la respuesta: es la traza que permite comprobar de dónde sale cada dato.

Cada respuesta cita el dataset real con su enlace al portal municipal, o dice que no existe. Sin cuentas ni cookies; con el modelo en tu navegador, nada sale de tu máquina.

Qué es

Un agente que responde con fuentes, no con suposiciones.

Cinco catálogos municipales

Busca en los metadatos DCAT de Madrid, Barcelona, Málaga, Córdoba y Reus, en una copia local que lleva la fecha de sincronización de cada ficha.

Cita o dice que no existe

Responde citando el dataset real con su enlace al portal. Si el índice no tiene nada, lo dice; y si el portal no declara licencia, lo avisa.

Un servidor MCP público

Las mismas herramientas que usa este chat puedes conectarlas a Claude, Codex o cualquier otro agente. Cómo conectarlo.

El índice en cifras

Lo que hay detrás de cada respuesta.

Cargando el índice…

Sin modelo · el punto de referencia

Búsqueda directa

Las herramientas sin ningún modelo, sobre el índice abierto en tu navegador. Si aquí aparece un dataset y el agente no lo encuentra, el fallo es del modelo, no del índice.

Descargando el índice (3,4 MB comprimidos)…

Herramientas MCP

Cuatro herramientas, un mismo contrato.

Las usa el chat, la búsqueda directa y cualquier agente que conectes. Toda ficha lleva su procedencia.

buscar_datasets

Busca datasets por texto libre.

consulta · ciudad · tema · anio · limite

detalle_dataset

Ficha completa de un dataset.

id con la forma ciudad:id

listar_distribuciones

Formatos y URLs de descarga de un dataset.

id con la forma ciudad:id

comparar_ciudades

Compara qué publica cada ciudad sobre un tema.

tema · ciudades · limite_por_ciudad

Procedencia

Cada ficha lleva url_origen, fecha_sincronizacion y licencia_declarada.

Ausencias

Sin resultados no es una lista vacía: es un campo sin_resultados que pide no inventar.

Conecta tu agente

Conecta el MCP a tu agente

Las mismas cuatro herramientas, con tu modelo y sin coste para nadie más.

POST https://datosabiertos.sejas.es/mcp · Streamable HTTP · JSON-RPC 2.0 · sin autenticación · solo lectura
  1. Registra el servidor (una vez; --scope user para tenerlo en todos tus proyectos):

    claude mcp add --transport http --scope user datosabiertos https://datosabiertos.sejas.es/mcp
  2. Comprueba que conecta:

    claude mcp list
    # datosabiertos: https://datosabiertos.sejas.es/mcp (HTTP) - ✔ Connected
  3. Abre claude y pregunta. Dentro de la sesión, /mcp muestra las herramientas. Para usarlo sin confirmación en modo no interactivo:

    claude -p --allowedTools "mcp__datosabiertos__*" "¿Qué publica Córdoba sobre presupuestos y con qué licencia?"

Probado con Claude Code 2.1: conecta, lista las cuatro herramientas y las llama sin ningún ajuste.

  1. Añade el servidor (Codex CLI ≥ 0.20 admite servidores streamable HTTP con --url):

    codex mcp add datosabiertos --url https://datosabiertos.sejas.es/mcp
  2. O escríbelo a mano en ~/.codex/config.toml; es exactamente lo que genera el comando anterior:

    [mcp_servers.datosabiertos]
    url = "https://datosabiertos.sejas.es/mcp"
  3. Comprueba con codex mcp list (no hace falta codex mcp login: el servidor no pide credenciales) y pregunta desde codex.

Verificado con Codex CLI 0.154: el comando registra el servidor como streamable_http.

Claude Desktop habla con servidores locales por stdio. El puente mcp-remote (necesita Node.js ≥ 20) convierte este servidor remoto en uno local.

  1. Abre Settings → Developer → Edit Config y añade el servidor a claude_desktop_config.json:

    {
      "mcpServers": {
        "datosabiertos": {
          "command": "npx",
          "args": ["-y", "mcp-remote", "https://datosabiertos.sejas.es/mcp", "--transport", "http-only"]
        }
      }
    }
  2. Reinicia Claude Desktop. Las herramientas aparecen en el menú de conectores de la conversación.

  3. Si prefieres no depender de Node, clona el repositorio y usa el transporte stdio nativo (Python 3.11, sin pip install):

    {
      "mcpServers": {
        "datosabiertos": {
          "command": "python3",
          "args": ["-m", "datosabiertos.mcp"],
          "cwd": "/ruta/a/datosabiertos"
        }
      }
    }
  1. Cursor — .cursor/mcp.json en el proyecto (o ~/.cursor/mcp.json para todos):

    {
      "mcpServers": {
        "datosabiertos": { "url": "https://datosabiertos.sejas.es/mcp" }
      }
    }
  2. VS Code (Copilot) — .vscode/mcp.json:

    {
      "servers": {
        "datosabiertos": { "type": "http", "url": "https://datosabiertos.sejas.es/mcp" }
      }
    }
  3. Gemini CLI:

    gemini mcp add --transport http datosabiertos https://datosabiertos.sejas.es/mcp

Cualquier cliente que admita el transporte Streamable HTTP sin autenticación vale. Si el tuyo solo habla stdio, usa el puente mcp-remote de la pestaña de Claude Desktop.

  1. Lista las herramientas:

    curl -s https://datosabiertos.sejas.es/mcp \
      -H 'Content-Type: application/json' \
      -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
  2. Llama a una:

    curl -s https://datosabiertos.sejas.es/mcp \
      -H 'Content-Type: application/json' \
      -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"buscar_datasets","arguments":{"consulta":"calidad del aire","ciudad":"malaga","limite":3}}}'
  3. Estado del índice:

    curl -s https://datosabiertos.sejas.es/salud

Un primer prompt para probarlo

Pide explícitamente la cita y la licencia: es lo que distingue una respuesta comprobable de una inventada.

Usa las herramientas de datosabiertos para responder: ¿qué datos abiertos publica Málaga sobre calidad del aire? Para cada dataset dame el título, la url_origen tal cual la devuelve la herramienta, la fecha de modificación y si el portal declara licencia. Si no hay resultados, dilo sin inventar nada. Después compara con Madrid usando comparar_ciudades.

Límites. Sin SSE ni sesiones; sin cuota más allá del sentido común. Es un prototipo de TFM.