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.
Lo que busques en los catálogos de Madrid, Barcelona, Málaga, Córdoba y Reus, pregúntalo aquí.
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.
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.
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.
Las mismas herramientas que usa este chat puedes conectarlas a Claude, Codex o cualquier otro agente. Cómo conectarlo.
Cargando el índice…
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)…
Las usa el chat, la búsqueda directa y cualquier agente que conectes. Toda ficha lleva su procedencia.
Busca datasets por texto libre.
consulta · ciudad · tema · anio · limite
Ficha completa de un dataset.
id con la forma ciudad:id
Formatos y URLs de descarga de un dataset.
id con la forma ciudad:id
Compara qué publica cada ciudad sobre un tema.
tema · ciudades · limite_por_ciudad
Cada ficha lleva url_origen, fecha_sincronizacion y licencia_declarada.
Sin resultados no es una lista vacía: es un campo sin_resultados que pide no inventar.
Las mismas cuatro herramientas, con tu modelo y sin coste para nadie más.
https://datosabiertos.sejas.es/mcp
· Streamable HTTP · JSON-RPC 2.0 · sin autenticación · solo lectura
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
Comprueba que conecta:
claude mcp list # datosabiertos: https://datosabiertos.sejas.es/mcp (HTTP) - ✔ Connected
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.
Añade el servidor (Codex CLI ≥ 0.20 admite servidores streamable HTTP con --url):
codex mcp add datosabiertos --url https://datosabiertos.sejas.es/mcp
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"
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.
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"]
}
}
}Reinicia Claude Desktop. Las herramientas aparecen en el menú de conectores de la conversación.
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"
}
}
}Cursor — .cursor/mcp.json en el proyecto (o ~/.cursor/mcp.json para todos):
{
"mcpServers": {
"datosabiertos": { "url": "https://datosabiertos.sejas.es/mcp" }
}
}VS Code (Copilot) — .vscode/mcp.json:
{
"servers": {
"datosabiertos": { "type": "http", "url": "https://datosabiertos.sejas.es/mcp" }
}
}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.
Lista las herramientas:
curl -s https://datosabiertos.sejas.es/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'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}}}'Estado del índice:
curl -s https://datosabiertos.sejas.es/salud
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.