mcp-catastro
MCP server for the Spanish Cadastre, enabling local queries of official INSPIRE parcel data (area, geometry, neighboring parcels, searches) and online queries to the OVC and electronic headquarters for additional details, with rate limiting and caching.
README
mcp-catastro
Servidor MCP para el Catastro español. Descarga el parcelario oficial INSPIRE de un municipio y responde en local (superficie, geometría, parcelas colindantes, búsqueda por paraje), y consulta el OVC y la sede electrónica cuando hace falta la red, con límites diarios que evitan que el Catastro te corte la IP.
Nació de un caso real: localizar las fincas de una herencia en Muxía (A Coruña). Por el camino aprendimos a base de errores qué vía usar para cada cosa, y este servidor encapsula esas decisiones para que nadie tenga que repetirlas.
Instalación
Con Claude Code (Node 22 o superior):
claude mcp add catastro -- npx -y mcp-catastro
Con Claude Desktop o cualquier cliente MCP, en claude_desktop_config.json:
{ "mcpServers": { "catastro": { "command": "npx", "args": ["-y", "mcp-catastro"] } } }
El servidor corre en tu máquina y consulta al Catastro con tu IP, así que la
cuota y los bloqueos son solo tuyos. La caché se crea en ~/.catastro-mcp/.
¿Cliente sin soporte de MCP local (claude.ai web, app móvil, ChatGPT)? Hay una instancia pública, sin registro:
https://catastro.mestria.es/mcp
Añádela como conector personalizado. Cuota anónima de 50 llamadas al día por IP, con Muxía precargada en la caché. Todos los usuarios de esa instancia comparten la IP de salida hacia el Catastro, así que para volumen serio instala el paquete o monta tu propia instancia (abajo).
Ejemplo de uso
Con el conector añadido, se le habla en lenguaje natural. Una conversación real (los datos son reales, verificados contra el Catastro el 11/08/2026):
Tú: Descarga el parcelario de Muxía (provincia 15, municipio 15053) y dime cuánto mide la parcela 1 del polígono 9 y quién linda con ella.
Claude/ChatGPT: He descargado el parcelario de Muxía: 43.188 parcelas. La parcela 1 del polígono 9 es la referencia catastral
15053A00900001y su superficie oficial es de 15.149 m² (1,5 hectáreas). Linda con dos parcelas:15053A00900002al noreste (1.497 m²) y15053A00909043al suroeste (4.262 m²).
Tú: ¿En qué paraje está y de qué clase es?
Claude/ChatGPT: Según la ficha de la sede electrónica, está en el paraje FONTE SALGUEIRA (Muxía, A Coruña). Es suelo rústico de uso agrario, y su referencia catastral completa es
15053A009000010000RY.
Tú: Mi abuela decía que la finca se llamaba "fonte salgeira" o algo así. ¿Hay parcelas con ese nombre?
Claude/ChatGPT: Sí. Buscando por similitud aparece FONTE SALGUEIRA con un 93 % de parecido: es la parcela
15053A00900001, de 15.149 m². Un nombre que no existe en el municipio no devuelve resultados, así que la coincidencia es fiable.
La búsqueda por paraje funciona sobre las fichas ya consultadas. Para un
municipio recién descargado, primero se rellenan con
catastro_completar_parajes (respeta el límite diario y se puede reanudar
otro día).
Herramientas
Sin red, contra la caché local:
| Herramienta | Qué hace |
|---|---|
catastro_descargar_municipio |
Baja el parcelario INSPIRE completo del municipio y construye la caché. Es la operación fundacional: el resto la da por hecha |
catastro_parcela_local |
Superficie oficial, centroide y geometría de una parcela |
catastro_vecinas |
Parcelas colindantes, con distancia y orientación cardinal |
catastro_en_radio |
Parcelas cuyo centroide cae dentro de un círculo |
catastro_buscar_paraje |
Búsqueda difusa por nombre de paraje |
Con red, una petición por llamada y siempre con el limitador puesto:
| Herramienta | Qué hace |
|---|---|
catastro_ficha |
Ficha de la sede electrónica: paraje, clase, uso, superficie gráfica y referencia de 20 caracteres |
catastro_por_poligono_parcela |
Resuelve la referencia catastral desde la numeración polígono/parcela |
catastro_por_coordenada |
Qué parcela hay en un punto |
De control:
| Herramienta | Qué hace |
|---|---|
catastro_estado |
Diagnóstico de acceso: distingue "el dato no existe" de "me han cortado" |
catastro_completar_parajes |
Recorre una lista de referencias rellenando parajes, reanudable |
Las tres vías del Catastro
El Catastro tiene tres formas de acceso que no se parecen en nada, y elegir mal es lo que arruina el trabajo.
| Vía | Host | Para qué | Límite |
|---|---|---|---|
| Descarga INSPIRE (GML) | www.catastro.hacienda.gob.es | Más de ~20 parcelas, geometría, superficie oficial | Ninguno |
| OVC (SOAP) | ovc.catastro.meh.es | Resolver referencias por polígono/parcela o coordenada | Sin límite documentado, pero con ~32.000 peticiones acumuladas cortan la IP |
| Sede electrónica (HTML) | www1.sedecatastro.gob.es | Paraje, clase, uso, referencia de 20 caracteres | Host distinto del OVC: sobrevive a su bloqueo |
Tres detalles de la sede que no están documentados en ningún sitio: acepta la referencia de 14 caracteres (sin dígitos de control, que es justo lo que da el GML), vive en otro host (el bloqueo del OVC no le afecta) y devuelve más campos que la consulta SOAP básica.
Decisiones de diseño
La caché no es una optimización, es el diseño. El servidor responde desde disco por defecto y sale a la red solo cuando el dato no está o se lo pides. De las preguntas típicas sobre una finca (¿cuánto mide?, ¿quién linda?, ¿qué hay cerca?), solo el nombre del paraje necesita red.
El limitador cuenta el total diario por host (techo de 1000 peticiones), no solo el ritmo. Un ritmo razonable con un acumulado grande también corta la IP: lo medimos a 3,2 peticiones por segundo. A 10 fallos consecutivos el servidor para solo.
Una ficha vacía o un 403 no se interpretan solos. Una referencia inventada
devuelve el mismo 403 que una IP cortada, así que catastro_estado consulta a
la vez una referencia que funcionó y una inventada: si las dos fallan igual, el
problema es tu acceso, no los datos.
La superficie sale siempre del areaValue del GML, que es la fuente oficial.
La superficie gráfica de la sede se guarda como dato informativo, pero no pisa
a la del GML.
Lo que no puede dar
El valor de referencia solo se consulta en la sede identificándose con certificado digital o Cl@ve, y la titularidad es dato protegido. Ninguna API pública los expone, y este servidor tampoco.
Montar tu propia instancia remota
En python/ hay una implementación equivalente en Python que además expone el
servidor por streamable HTTP, pensada para servir a varias personas:
cd python && uv sync
CATASTRO_MCP_PUBLIC_HOST=tu-dominio uv run python -m catastro_mcp.http
Cada persona recibe un token (python -m catastro_mcp.http crear-token nombre)
con cuota diaria propia de 2000 llamadas, y CATASTRO_MCP_ANONIMO=1 abre
además el acceso sin token con cuota de 50 al día por IP de cliente. El token
puede ir en la cabecera X-Auth-Token o en la ruta
(https://tu-dominio/t/<token>/mcp) para clientes que solo aceptan una URL.
El access log va apagado a propósito, porque el token viaja en la ruta.
Verificado en vivo
Todo lo de arriba está medido, no copiado de documentación (11/08/2026):
- Muxía (15053): 43.188 parcelas descargadas y cacheadas en 5 segundos.
- Polígono 9, parcela 1: referencia
15053A00900001, 15.149 m², paraje FONTE SALGUEIRA. - Prueba cruzada de fuentes: la superficie del GML y la superficie gráfica de la sede coinciden al metro.
- Control negativo de la búsqueda difusa: un paraje inventado devuelve cero resultados.
catastro_estadodiagnosticó un bloqueo real de IP en el OVC mientras la sede seguía operativa.
Licencia
MIT. No afiliado a la Dirección General del Catastro. Los datos catastrales son públicos y se sirven bajo las condiciones de la DGC.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.