Skip to main content
Glama
zornade

enriched-cadastre-italy

README.md
# Zornade MCP Server

Model Context Protocol server for Italian cadastral, geospatial and real
estate data, powered by the [Zornade API v2](https://api.zornade.com).

Add it to any MCP client (Claude, Cursor, VS Code Copilot, Cline, ...) and ask
questions about Italian properties in natural language: geocoding, cadastral
parcels, risk layers, valuations, solar potential, administrative lists.

## Endpoint

```
https://mcp.zornade.com/mcp
```

## Authentication

A free Zornade API key (`zrn_...`) from
[https://app.zornade.com/api](https://app.zornade.com/api) is required. Send it
as `x-api-key` header, `Authorization: Bearer`, or `?api_key=` query parameter.
Rate limits and scopes are the ones of your key (10,000 requests/hour).

## Tools

| Tool | Description |
| --- | --- |
| `zornade_geocode_search` | Forward geocoding on 18.7M+ Italian addresses (ANNCSU) |
| `zornade_geocode_reverse` | Reverse geocoding by WGS84 coordinates |
| `zornade_parcel_by_id` | Enriched cadastral parcel profile (risk, economics, solar, valuations, POI, ...) |
| `zornade_parcel_locate` | Parcels by point, multiple points, or bounding box |
| `zornade_parcel_search` | Parcels by comune, foglio, label |
| `zornade_admin_lists` | Regions, provinces, municipalities |

## Connect

Claude Code:

```bash
claude mcp add zornade -t http https://mcp.zornade.com/mcp \
  --header "x-api-key: zrn_YOUR_KEY"
```

Claude Desktop (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "zornade": {
      "type": "http",
      "url": "https://mcp.zornade.com/mcp",
      "headers": { "x-api-key": "zrn_YOUR_KEY" }
    }
  }
}
```

## Test

```bash
curl -X POST https://mcp.zornade.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "x-api-key: zrn_YOUR_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

## Architecture

- `functions/mcp/index.ts` - Supabase Edge Function (Deno), built with
  [mcp-lite](https://github.com/fiberplane/mcp-lite) + Hono, streamable HTTP
  transport. Pattern from the official Supabase MCP guide.
- `netlify.toml` + `public/` - Netlify reverse proxy for the clean hostname
  `mcp.zornade.com` (no build step).

## Documentation

- API docs: [api.zornade.com](https://api.zornade.com)
- API keys: [app.zornade.com/api](https://app.zornade.com/api)
- Main site: [zornade.com](https://zornade.com)

## Known limitations

- The HTTP transport is stateless: no persistent SSE sessions. Some modern
  SDK clients open a persistent SSE GET after initialize and receive a 400;
  request/response calls work normally and that error is harmless.
- Protocol revision negotiation: the server supports the 2025 MCP revisions
  (2025-03-26 and 2025-06-18). A client requesting a newer or unknown
  revision is answered with the oldest supported revision instead of an
  error.
- Tool responses are text-only: geometries are omitted to keep the LLM
  context light.
- Tool calls require a free Zornade API key. Direct API v2 calls are the
  right tool for batch pipelines, see [api.zornade.com](https://api.zornade.com).

## License

Two distinct layers:

- **Server code: MIT.** Free to use, modify and redistribute, also for
  commercial purposes. The full text is in `LICENSE`.
- **Data: licenses of the original sources, which remain in force for every
  consumer of the API and of this server.** Key ones:
  - cadastral parcels and cadastral data: Agenzia delle Entrate (free reuse,
    attribution required)
  - addresses: ANNCSU, ISTAT and Agenzia delle Entrate (CC BY 4.0, partly
    CC BY 3.0 IT)
  - buildings and map layers: OpenStreetMap (ODbL 1.0)
  - risk and environmental layers: ISPRA, INGV, Copernicus (CC BY 4.0 /
    Copernicus Data Policy)
  - solar potential: PVGIS-SARAH3, JRC European Union (free reuse)
  - real estate market data: OMI and MEF (free reuse)

Every API response lists the applicable licenses in `meta.licenses` and the
required attribution text. Two attribution levels exist: source attributions
are always mandatory; the "Dati elaborati da Zornade" attribution with link to
zornade.com is required for free plan keys and can be waived with a commercial
license (the response field `meta.zornade_attribution_required` tells you
which rule applies). Full terms: [api.zornade.com](https://api.zornade.com).

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct operation: forward vs reverse geocoding, parcel retrieval by ID vs spatial locate vs cadastral reference search, and administrative list lookup. No two tools overlap in purpose.

Naming Consistency4/5

All names follow a consistent snake_case pattern with the zornade_ prefix and a domain identifier (geocode, parcel, admin). However, the action parts mix verbs (search, locate) with noun-like descriptors (by_id, lists), so the convention is readable but not perfectly uniform.

Tool Count5/5

Six tools is well-scoped for a geocoding and cadastral data server. Each tool covers a distinct core capability without redundancy or bloat.

Completeness4/5

The surface covers key workflows: forward/reverse geocoding, parcel lookup by ID or spatial search, cadastral reference search, and admin reference data. The only minor gap is the deliberate omission of parcel geometry in by_id, but other tools compensate with centroids and bounding-box queries.

Maintenance

ActivityMaintained
ResponsivenessNo issues