mcp-catastro
Provides access to official Spanish cadastral parcel data via the INSPIRE GML download service, enabling local queries for parcel surface, geometry, neighboring parcels, and place name search.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-catastrodescarga el parcelario de Muxía y dame la superficie de la parcela 123 del polígono 5"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-catastroCon 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/mcpAñá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).
Related MCP server: catastro_mcp_server
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 |
| Baja el parcelario INSPIRE completo del municipio y construye la caché. Es la operación fundacional: el resto la da por hecha |
| Superficie oficial, centroide y geometría de una parcela |
| Parcelas colindantes, con distancia y orientación cardinal |
| Parcelas cuyo centroide cae dentro de un círculo |
| Búsqueda difusa por nombre de paraje |
Con red, una petición por llamada y siempre con el limitador puesto:
Herramienta | Qué hace |
| Ficha de la sede electrónica: paraje, clase, uso, superficie gráfica y referencia de 20 caracteres |
| Resuelve la referencia catastral desde la numeración polígono/parcela |
| Qué parcela hay en un punto |
De control:
Herramienta | Qué hace |
| Diagnóstico de acceso: distingue "el dato no existe" de "me han cortado" |
| 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) | 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.httpCada 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.
Available Tools
10 toolscatastro_buscar_parajeA
Búsqueda difusa por nombre de paraje sobre los ya cacheados (los rellena catastro_ficha / catastro_completar_parajes). Local, sin red. Un nombre inventado debe quedar bajo el umbral.
| Name | Required | Description | Default |
|---|---|---|---|
| texto | Yes | ||
| umbral | No | ||
| municipio | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that the tool is local and makes no network calls, and that it operates on cached data. It also specifies that invented names should fall below the threshold, giving insight into matching behavior. However, it does not describe what happens if the cache is empty or the output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary function and key constraints. Every word contributes meaning, including the local/no-network note and the threshold behavior. No redundancy or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description is incomplete. It does not state what the search returns, how results are ordered, or the exact role of 'municipio' in scoping the cache. It also does not explicitly instruct to first run the population tools, though it implies their role. This leaves significant gaps for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains 'umbral' via the threshold behavior, but 'municipio' and 'texto' are not explicitly described beyond their names. The names are fairly self-explanatory, but the description adds limited meaning for two of three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: fuzzy search by place name over already cached parajes. It specifies the resource (cached parajes), the action (búsqueda difusa), and differentiates from siblings by noting it is local and relies on cache populated by catastro_ficha / catastro_completar_parajes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: after other tools have populated the cache, for local fuzzy searching without network. It does not explicitly name alternatives or exclusions, but the context of caching and local operation gives clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catastro_completar_parajesA
Recorre una lista de RCs rellenando el paraje que falte vía la sede, con limitador. Reanudable: se salta las que ya tienen ficha; si el techo diario corta, se relanza otro día con la misma lista.
| Name | Required | Description | Default |
|---|---|---|---|
| rcs | Yes | ||
| municipio | Yes | ||
| municipio_mun | No | 53 | |
| provincia_del | No | 15 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well by disclosing key behaviors: it is resumable, skips entries that already have a record, respects a daily limit, and can be relaunched. This gives the agent a realistic picture of the tool's side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences effectively front-load the main action and then provide essential resumability details. There is no redundant text or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core workflow and operational limits (resumability, daily cap), but it omits parameter semantics and return/error behavior. Given the tool's specialized batch nature, this is a strong but not perfect completion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description only clarifies the 'rcs' parameter (list of RCs). The other parameters (municipio, municipio_mun, provincia_del) remain unexplained, forcing the agent to guess their formats and purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: iterate over a list of RCs and fill in missing 'paraje' via the official source, with a limiter. This distinctly sets it apart from sibling tools that query, download, or search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for use (batch completion of missing parajes) and explains resumability and the daily cap, but it does not explicitly name alternatives or state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catastro_descargar_municipioA
Baja el parcelario INSPIRE completo del municipio (GML oficial, sin límite) y construye la caché local. Operación fundacional: el resto la da por hecha. Códigos numéricos (Muxía: provincia '15', municipio '15053'). Cualquier operación sobre más de ~20 parcelas se resuelve aquí, nunca una a una.
| Name | Required | Description | Default |
|---|---|---|---|
| municipio | Yes | ||
| provincia | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses side effects (builds local cache) and scope (no limit, GML official), but does not cover auth, rate limits, or return format. The context is helpful but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver purpose, usage guidance, and parameter format without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a foundational download tool with no output schema, the description covers the purpose, parameter semantics, and usage threshold. It doesn't describe return values or edge cases, but it is adequate for this operation's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains that both provincia and municipio are numeric codes and gives a concrete example (Muxía: '15', '15053'), which adds meaning beyond the bare string schema. With 0% schema coverage, this is essential.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Baja' (downloads) and resource 'parcelario INSPIRE completo del municipio', and explicitly defines its scope as foundational and for bulk operations, distinguishing it from sibling tools like catastro_parcela_local.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states 'Operación fundacional: el resto la da por hecha' and 'Cualquier operación sobre más de ~20 parcelas se resuelve aquí, nunca una a una', which clearly directs when to use this tool over per-parcel siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catastro_en_radioB
Parcelas cuyo centroide cae dentro de un círculo (x, y en EPSG:25829, radio en metros). Local, sin red.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| srs | No | EPSG:25829 | |
| radio | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the operation is local and offline ('Local, sin red'), which is useful, but it does not state whether the operation is read-only, what the response format will be, or any side effects. This is a significant gap for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no filler. It front-loads the core function and key parameter details in a single sentence, making every word earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple query tool, the description provides minimal information. It does not explain what the response will look like, whether it returns a list of parcels, or any prerequisites. Given no annotations and no output schema, this lack of detail makes the tool under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It explicitly indicates that x and y are in EPSG:25829 and radio is in meters, adding crucial meaning to the bare schema properties. It does not explain the optional srs parameter, but the default is provided in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns parcels whose centroid falls within a circle, specifying coordinate system (EPSG:25829) and units (meters) for the inputs. While it lacks an explicit verb like 'returns' or 'searches', the intent is unambiguous and distinguishes it from siblings like catastro_por_coordenada.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The phrase 'Local, sin red' provides some context about offline capability but does not mention exclusions or when to prefer this over sibling tools like catastro_vecinas or catastro_por_coordenada.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catastro_estadoB
Control de tres puntas contra ambos hosts (RC que funcionó + RC inventada): distingue 'no existe' (error de datos con canario OK) de 'no puedo' (todo falla igual → bloqueo de IP). Llamar antes de una tanda y cuando algo devuelva vacío. Un 403 aislado no dice nada.
| Name | Required | Description | Default |
|---|---|---|---|
| municipio | No | MUXIA | |
| provincia | No | A CORUÑA |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining what the tool does. It discloses the testing method (three-pronged check against two hosts, canary) and the interpretation logic (distinguishes data error from IP block). It also adds context about 403s, going beyond a generic 'check status' description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long and each sentence adds information: method, usage, and interpretation. It is compact and well-ordered, though the heavy use of technical shorthand ('RC', 'canario') might reduce immediate clarity. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex and has no output schema or annotations. The description explains the diagnostic approach and the meaning of differences, but it does not describe what the tool returns (e.g., a status code, a string, a boolean) or how to map the outcome to specific outputs. This is a notable gap for an agent that needs to act on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description provides no information about the 'municipio' and 'provincia' parameters. It does not explain their role, accepted values, or how they affect the check. The parameter names are self-explanatory, but no additional meaning is added, which is required given the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific diagnostic function ('Control de tres puntas contra ambos hosts') and distinguishes two failure modes, but uses jargon ('RC que funcionó + RC inventada', 'canario') that requires domain knowledge. It is not a clear, straightforward statement of purpose like 'Check connection status'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: 'Llamar antes de una tanda y cuando algo devuelva vacío' and 'Un 403 aislado no dice nada'. This clearly indicates when to use the tool and when not to rely on a lone 403, though it does not name specific alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catastro_fichaA
Consulta la sede electrónica (host www1, distinto del OVC — sobrevive a sus bloqueos): paraje, clase, uso, superficie gráfica (informativa; la oficial es la del GML) y RC de 20. Acepta RC de 14. provincia_del/municipio_mun: códigos de la sede (Muxía: del '15', mun '53'). NO existe por vía pública: valor de referencia (pide certificado/Cl@ve) ni titularidad (dato protegido).
| Name | Required | Description | Default |
|---|---|---|---|
| rc | Yes | ||
| municipio_mun | Yes | ||
| provincia_del | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does so admirably. It discloses the host and its resilience to blocks, clarifies that the surface data is informative ('informativa; la oficial es la del GML'), and specifies accepted RC formats and missing data types. This provides rich behavioral context beyond a simple action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence packed with information, but it remains relatively concise given the breadth of content. It uses parentheses and colons to organize details efficiently. While it could be better structured with separate sentences, every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the essential aspects: purpose, input formats, limitations, and an example. It lists return fields (paraje, clase, uso, etc.) but does not describe the response structure or error behavior, which keeps it from a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description explains parameter semantics. It defines RC formats ('RC de 20. Acepta RC de 14') and gives concrete examples for provincia_del/municipio_mun ('Muxía: del \'15\', mun \'53\''). This adds significant meaning beyond the bare schema properties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Consulta la sede electrónica' with specific data fields (paraje, clase, uso, superficie gráfica, RC). It is specific about what it returns, but it does not explicitly differentiate from sibling tools by name, though the 'ficha' (record) nature and detail imply a targeted lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context: it mentions the host differs from the OVC ('distinto del OVC — sobrevive a sus bloqueos'), indicating when this tool is preferable. It also warns about what is not available ('NO existe por vía pública: valor de referencia... ni titularidad') and explains parameter code formats. However, it does not explicitly name alternative tools for those cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catastro_parcela_localA
Superficie oficial (areaValue del GML — la única fuente aceptada), centroide y geometría, desde caché, sin red.
| Name | Required | Description | Default |
|---|---|---|---|
| rc | Yes | referencia catastral de 14 o 20 caracteres |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full transparency burden. It discloses the exact data source (areaValue del GML, the only accepted source), the outputs (centroid and geometry), and the cache/network behavior. However, it omits details about potential errors, cache staleness, or what happens if the cache is not populated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core outputs and key behavioral constraints (cache, no network). Every word contributes value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter readonly lookup, the description covers the essential return values (area, centroid, geometry), the authoritative source (GML areaValue), and the network behavior. It lacks an output schema but explicitly lists what the tool returns. Minor gaps around error handling and cache availability prevent a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the single parameter 'rc' with the constraint 'referencia catastral de 14 o 20 caracteres', giving 100% coverage. The description adds no extra semantic detail about the parameter, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'Superficie oficial (areaValue del GML — la única fuente aceptada), centroide y geometría' from cache without network. It identifies a specific resource (parcela_local) and its outputs, but does not explicitly contrast with sibling tools, relying on the cache/network distinction to imply differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'desde caché, sin red' implies this tool is intended for situations where network access is unavailable or cached data is preferred. However, there is no explicit guidance on when to use this tool versus siblings like catastro_ficha or catastro_por_coordenada, nor any stated exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catastro_por_coordenadaA
Resuelve qué parcela hay en un punto vía OVC (Consulta_RCCOOR). Prefiere catastro_en_radio si el municipio está cacheado.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| srs | No | EPSG:25829 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that it uses OVC and hints at a caching preference, but it does not mention whether the operation is read-only, what happens on invalid coordinates, or whether any side effects occur. It is better than nothing but lacks substantial behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no unnecessary words. It front-loads the core purpose and adds the key usage hint. This is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no output schema, and no annotations, the description is too thin. It omits parameter explanations, output format, and edge-case behavior. It provides some usage guidance but is insufficient for an agent to invoke the tool correctly in diverse scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain the meaning of x, y, or srs, nor their units or coordinate system. It provides no parameter-level insight beyond the bare schema, so it fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it resolves which parcel exists at a given point using the OVC service. It also distinguishes itself from the sibling tool catastro_en_radio by explicitly mentioning a preference condition, making its specific role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Prefiere catastro_en_radio si el municipio está cacheado', which tells the agent when to use an alternative tool, and by implication when to use this one (when the municipality is not cached). This is clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catastro_por_poligono_parcelaA
Resuelve la RC desde polígono/parcela vía OVC (Consulta_DNPPP). provincia/municipio en texto OVC ('A CORUÑA', 'MUXIA').
| Name | Required | Description | Default |
|---|---|---|---|
| parcela | Yes | ||
| poligono | Yes | ||
| municipio | Yes | ||
| provincia | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that provincia/municipio must be provided in OVC text format, with examples ('A CORUÑA', 'MUXIA'), which is a meaningful behavioral constraint. However, with no annotations present, the description carries the full burden, and it does not mention permissions, return value, error behavior, or other potential side effects. It adds partial transparency but not a complete picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a clarifying parenthetical, containing no redundant words. It is front-loaded with the main action and includes only necessary details about input format. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool, the description conveys what it does (resolves RC), the key input format constraint, and the underlying service (OVC). It lacks details about return structure or error handling, but these can be partially inferred from the tool name and the explicit mention of 'RC' as the output. Given the tool's low complexity, this is reasonably complete, though not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides explicit format guidance for provincia and municipio (OVC text), but leaves poligono and parcela completely unspecified beyond their string type in the schema. This adds partial value, but fails to fully compensate for the lack of schema descriptions on two of the four required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Resuelve la RC desde polígono/parcela vía OVC' – resolving a cadastral reference from polygon/plot via a specific service. This is a specific verb+resource combination that distinguishes it from siblings like catastro_por_coordenada (by coordinate) or catastro_ficha (by cadastral reference).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'desde polígono/parcela' provides clear context for when to use this tool: when the user has polygon and parcel identifiers. Although it does not explicitly mention alternatives or exclusions, the context is unambiguous, and the tool name reinforces the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catastro_vecinasB
Parcelas que tocan (o quedan a menos de contacto_max metros de) una dada, con orientación cardinal. Local, sin red.
| Name | Required | Description | Default |
|---|---|---|---|
| rc | Yes | ||
| contacto_max | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses core behavior: distance-based filtering, cardinal orientation inclusion, and local/no-network execution. However, it omits details such as edge cases, output format, or what happens with no matches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that packs essential operational details without filler or repetition, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is too terse to provide complete context. It fails to explain the input parameter rc, the structure of the output, or edge cases, making it insufficient for robust tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description explains contacto_max as a distance in meters but does not explain the rc parameter at all, leaving its format and purpose ambiguous beyond 'una dada'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: it returns parcels that touch or are within a configurable distance of a given parcel, and it mentions cardinal orientation. This distinguishes it from siblings like catastro_en_radio, though it lacks an explicit verb like 'returns'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus alternatives like catastro_en_radio or catastro_ficha. 'Local, sin red' implies an offline context, but it does not state when to prefer this tool or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v1.0.2- First observed
catastro_buscar_paraje - First observed
catastro_completar_parajes - First observed
catastro_descargar_municipio - First observed
catastro_en_radio - First observed
catastro_estado - First observed
catastro_ficha - First observed
catastro_parcela_local - First observed
catastro_por_coordenada - First observed
catastro_por_poligono_parcela - First observed
catastro_vecinas
TDQS
Most tools have clearly distinct purposes: download, local lookup, proximity search, radius search, fuzzy name search, online ficha, coordinate/polygon resolution, status check, and paraje completion. The only mild overlap is between catastro_en_radio and catastro_por_coordenada, but descriptions clearly distinguish local radius search from direct OVC coordinate lookup.
All tools share the 'catastro_' prefix, but the remainder follows mixed conventions: some start with verbs (descargar, buscar, completar), some with nouns (parcela, ficha, estado), and some with prepositions (en_radio, por_poligono_parcela, por_coordenada). This inconsistency makes the naming pattern less predictable despite the shared prefix.
With 10 tools, the server is well-scoped for a cadastre domain. Each tool addresses a specific need (download, query, search, status, completion) without redundancy or bloat, making the count appropriate for the stated purpose.
The tool set covers the core lifecycle: downloading municipal data, querying parcels locally and online, finding nearby parcels, searching by place name, resolving parcels from coordinates/polygons, and checking service status. Minor gaps include no explicit cache management (e.g., update/delete) and some online queries are intentionally omitted (titularity), but agents can work around these.
Maintenance
Related MCP Connectors
MCP server for Japan geodata: cadastral lot numbers (chiban) and reverse geocoding, for AI agents.
- earthOAuthcom.mireye
MCP server for Mireye Earth — federal-source-cited geospatial data for any MCP-aware agent.
Unofficial MCP server for the public PortlandMaps property/permit/zoning API. Not city-affiliated.
Catastro espanol en JSON limpio: inmuebles por referencia catastral, coordenadas o direccion.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAn experimental MCP server providing spatial context for LLMs by interfacing with French Geoplateforme services. It enables tasks such as geocoding, altitude lookups, and querying administrative, cadastral, or urban planning data.124MIT
- FlicenseBqualityDmaintenanceA Python MCP server that queries Spanish Cadastre services for non-protected cadastral data and exports parcel geometry in GML, GeoJSON, and IFC formats.195-
- AlicenseAqualityCmaintenanceMCP server for geocoding French addresses, POIs, and cadastral parcels using the Géoplateforme API. Supports direct geocoding, reverse geocoding, and capability queries.3MIT

io.github.stucchi/italyofficial
AlicenseNot gradedqualityDmaintenanceMCP server exposing Italian open data (municipalities, provinces, regions, postal codes, coordinates, geographic data) through simple, developer-friendly tools.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MrGo2/catastro-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server