Descripción general
Servidor MCP (Model Context Protocol) en Python que expone herramientas para consultar servicios oficiales del Catastro de España y obtener información catastral no protegida de forma estructurada.
Además permite la exportación de la geometría de la parcela en formatos GML, GeoJSON e IFC.
El servidor integra dos familias de servicios:
- OVC / Servicios WCF en JSON (Catastro): consultas de callejero, referencia catastral y conversión entre RC ↔ coordenadas.
- INSPIRE WFS Cadastral Parcels (CP): consulta de parcelas y descarga de geometría en GML, además de utilidades de diagnóstico (GetCapabilities / DescribeFeatureType).
Está pensado para integrarse con clientes compatibles con MCP (p. ej. Claude Desktop) y para facilitar la automatización de flujos BIM / GIS / AECO (enriquecimiento de modelos, auditorías, obtención de geometría, análisis territorial, etc.), manteniendo una arquitectura modular y fácil de desplegar (por ejemplo con uv/uvx).
Nota: este proyecto no está afiliado a la Dirección General del Catastro. Solo consume endpoints públicos y devuelve los resultados de forma normalizada.
Componentes
Herramientas
El servidor ofrece las siguientes herramientas:
obtener_provincias
- Lista provincias disponibles en los servicios del Catastro.
obtener_municipios
- Lista municipios de una provincia (puedes filtrar por nombre parcial)
- Input:
- provincia (str): nombre de provincia (según obtener_provincias)
- municipio_filtro (str): texto parcial.
OPCIONAL
obtener_vias
- Lista las vías / calles de un municipio (podemos filtrar por nombre parcial).
- Input:
- provincia (str): nombre de provincia (según obtener_provincias)
- municipio (str): nombre de municipio (según obtener_municipios)
- tipo_via (str): tipo de vía (idealmente código: CL, AV, PZ, etc. Anexo II).
OPCIONAL
- via_filtro (str): texto parcial opcional (nombre de vía / calle a buscar).
OPCIONAL
obtener_numeros
- Consulta número de una vía (devuelve RC del número si existe o aproximación).
- Input:
- provincia (str): nombre de provincia (según obtener_provincias)
- municipio (str): nombre de municipio (según obtener_municipios)
- tipo_via (str): tipo de vía (idealmente código: CL, AV, PZ, etc. Anexo II)
- via (str): nombre de vía (según obtener_vias)
- numero (str): número de la vía (puede ser parcial)
dcnp_por_direccion
- Consulta los datos catastrales no protegidos de un inmueble por su localización.
- Input:
- provincia (str): nombre de provincia (según obtener_provincias)
- municipio (str): nombre de municipio (según obtener_municipios)
- sigla (str): tipo de vía (idealmente código: CL, AV, PZ, etc. Anexo II).
- calle (str): nombre de vía (según obtener_vias)
- numero (str): número de la vía (según obtener_numeros)
- bloque (str): número del bloque.
OPCIONAL
- escalera (str): identificador de la escalera.
OPCIONAL
- planta (str): identificador de la planta.
OPCIONAL
- puerta (str): identificador de la puerta.
OPCIONAL
dcnp_por_rc
- Consulta los datos catastrales no protegidos de un inmueble por su Referencia Catastral.
- Input:
- refcat (str): Referencia Catastral. Puede tener 14, 18 o 20 posiciones. En caso de que sean 14 posiciones (lo que se corresponde con la referencia de una finca), se devuelve una lista de todos los inmuebles de esa finca (es decir cuyos
14 primeros caracteres de la RC coinciden con el parámetro).
- provincia (str): nombre de provincia.
OPCIONAL
- municipio (str): nombre de municipio.
OPCIONAL
dcnp_por_poligono_parcela
- Consulta los datos catastrales no protegidos de un inmueble por su polígono y parcela.
- Input:
- provincia (str): nombre de provincia.
- municipio (str): nombre de municipio.
- poligono (str): polígono catastral.
- parcela (str): parcela catastral.
rc_a_coordenadas
- Convierte una Referencia Catastral a coordenadas.
- Input:
- refcat (str): Referencia Catastral (14/18/20 según caso)
- srs (str): sistema de referencia (p.ej. EPSG:4326)
- provincia (str): nombre de provincia.
OPCIONAL
- municipio (str): nombre de municipio.
OPCIONAL
coordenadas_a_rc
- Devuelve la(s) referencia(s) catastral(es) asociadas a unas coordenadas.
- Input:
- x (float): CoorX (si EPSG:4326 suele ser longitud)
- y (float): CoorY (si EPSG:4326 suele ser latitud)
- srs (str): sistema de referencia (p.ej. EPSG:4326)
distancia_coordenadas_a_rc
- Devuelve la(s) referencia(s) catastral(es) por proximidad a unas coordenadas.
A partir de unas coordenadas (X e Y) y su sistema de referencia se obtiene la lista de
referencias catastrales próximas a un punto así como el domicilio (municipio, calle y
número o polígono, parcela y municipio), y la distancia a dicho punto.
- Input:
- x (float): CoorX (si EPSG:4326 suele ser longitud)
- y (float): CoorY (si EPSG:4326 suele ser latitud)
- srs (str): sistema de referencia (p.ej. EPSG:4326)
exportar_parcela_gml_y_geojson
- Exporta GML + GeoJSON de una parcela en una sola llamada.
- GML: se pide con srs (AUTO o el que indiques)
- GeoJSON: siempre se entrega en lon/lat (WGS84). Si pyproj no está, fuerza GML en EPSG:4326.
Input:
- refcat (str): RC (se usa base 14).
- srs (str): "AUTO" o EPSG/URN para el GML.
- out_dir (str): carpeta destino (debe estar dentro de EXPORT_ROOT).
- basename (str): nombre base sin extensión (si vacío usa ref14).
- overwrite (bool): sobrescribir si existe.
exportar_parcela_ifc
- Exporta una parcela catastral a IFC4 como superficie plana cerrada.
El IFC generado incluye una estructura mínima válida para uso en
entornos BIM como Bonsai:
- IfcProject
- IfcSite
- IfcProjectedCRS
- IfcMapConversion
- IfcGeographicElement
La geometría se construye en coordenadas locales y la posición real
se conserva mediante georreferenciación IFC.
- Input:
- refcat (str): referencia catastral (se usa base 14)
- srs (str): "AUTO" o EPSG/URN para pedir el GML base
- out_dir (str): carpeta destino dentro de EXPORT_ROOT
- basename (str): nombre base sin extensión (si vacío usa ref14)
- overwrite (bool): sobrescribir si existe
Requisitos
- Tener instalado
uv (incluye uvx).
- Para usar MCP Inspector: tener instalado Node.js (incluye
npx).
- Un cliente MCP (por ejemplo Claude Desktop) para consumir las herramientas.
Uso con Claude Desktop
Añade el servidor dentro de mcpServers en tu claude_desktop_config.json.
Nota: si ya tienes otros MCP servers configurados, no sustituyas tu archivo completo.
Añade únicamente el bloque "Catastro": { ... } dentro de mcpServers.
Opción A (recomendada): uvx en PATH
Si uv/uvx está en el PATH del sistema, usa:
"Catastro": {
"command": "uvx",
"args": [
"--from",
"catastro_mcp_server @ https://github.com/carlosGalisteo/catastro_mcp_server/archive/refs/tags/v0.1.3.zip",
"catastro_mcp_server"
]
}
Opción B (Windows): ruta absoluta a uvx.exe
Si Claude no encuentra uvx, obtén la ruta con where uvx y úsala como command:
"Catastro": {
"command": "C:\\Users\\TU_USUARIO\\.local\\bin\\uvx.exe",
"args": [
"--from",
"catastro_mcp_server @ https://github.com/carlosGalisteo/catastro_mcp_server/archive/refs/tags/v0.1.3.zip",
"catastro_mcp_server"
]
}
Prueba rápida (prompts de ejemplo)
Una vez activo el servidor en Claude Desktop, prueba con estas consultas:
- Listar provincias
- “Usa la herramienta
obtener_provincias y muéstrame el resultado.”
- Buscar municipios por filtro
- “Usa
obtener_municipios para la provincia Santa Cruz de Tenerife y filtra por Laguna.”
- Obtener información por localización
- “Usa
dcnp_por_direccion para el municipio de Madrid y por calle Alcala, 48.”
- Obtener GeoJSON de una parcela por RC
- “Usa
parcela_geojson_por_rc con refcat = 1146801VK4714E y devuélveme el GeoJSON.”
Test con MCP Inspector
Ejecuta en una consola (no es necesario clonar el repositorio; puedes hacerlo desde cualquier carpeta):
npx -y @modelcontextprotocol/inspector uvx --from "catastro_mcp_server @ https://github.com/carlosGalisteo/catastro_mcp_server/archive/refs/tags/v0.1.3.zip" catastro_mcp_server
Solución de problemas (Troubleshooting)
Licencia
Este servidor MCP está licenciado bajo la Licencia MIT. Esto significa que puedes usar, modificar y redistribuir el software, siempre que se cumplan los términos de dicha licencia. Para más detalles, consulta el archivo LICENSE incluido en el repositorio.
Copyright (c) 2026 Carlos Galisteo
Links