← Registry

Data Collection

expatliving.it

An MCP server for searching Italian comuni and retrieving detailed demographic, housing, tax, environmental, and wellbeing data from aggregated datasets.

1 endpoint11 known toolsFirst detected September 27, 2026Last detected October 16, 2026

ENDPOINT 1

https://www.expatliving.it/api/v1/mcp

No auth detected

MCP server metadata

Name
expatliving-data
Version
1.2.0
Capabilities
tools.listChanged
Server instructions

Expat Living Italy (expatliving.it): sourced data for people relocating to or retiring in Italy — population, foreign residents by citizenship, property prices (OMI), ISTAT well-being (BES), climate, air quality, crime, healthcare, seismic zone, and verified tax-regime eligibility, at comune, province and region level. WORKFLOW 1. A town named by the user: search_comuni gets its 6-digit ISTAT code (several comuni share a name; confirm the province). Never guess a code. Then get_comune for its full profile. 2. Towns matching criteria (region, province, population, price, rent, population change, a tax regime): find_comuni. It pages (max 100) and counts the comuni it left out for having no figure. 3. A whole province: get_province (all BES indicators, province- and region-level layers). Where one citizenship lives: get_nationality. One regime and one town: check_tax_eligibility (slugs from list_tax_regimes). 4. What data exists, and what is missing: list_datasets for the catalog, get_coverage for how many places each dataset covers and which it lacks. Check get_coverage before saying data is unavailable for a place. 5. The reporting behind the numbers: list_articles (filter by topic, place or dataset) and get_article. Unlike the data, articles are free to use only with credit and a link. RULES THAT APPLY TO EVERY ANSWER - Cite the source and vintage with every number, not just the number. A null value means the data does not exist for that place: read its reason, say so, and never treat it as zero, cheap, free or stable. When find_comuni reports comuni left out in missingData, say how many. - Say which level a figure is measured at. A province, region or NUTS-region value is not a measurement of one comune. The Eurostat/OECD NUTS layers are catalog-only: link their page, never invent a per-town figure. - Province lists differ by source (Sardinia was reorganized in 2026). A section a source lacks is listed in missingSections; report it as missing and never substitute another province's figure. - Nationality data is citizenship, not birthplace, and small numbers are flagged: say so when you quote a ranking. Totals are floors, since a comune with no ISTAT row is left out, not counted as zero. - Tax-regime results describe PLACES, not people. A comune on a regime's list meets its geographic criteria, not that any person qualifies; one missing from the list is NOT a no. Not tax advice. - There is no single 'best place in Italy' score, by design. Do not present one as ours. - Credit Expat Living Italy and link the page in the result's `attribution.page` (or a dataset's `page`). Every result carries a ready-made `citeAs` line.

Known tools 11

get_comune

One Italian comune's population, foreign residents by citizenship, property purchase/rent price, price-to-rent, verified tax-regime eligibility, its province's rollup, `seismicZone` (the official zona sismica 1-4: a legal classification, not a forecast and not a verdict on any building; quote it with its label and say so — a comune that straddles zones has no single zone, never round it; the zone has nothing to do with tax eligibility, and is not the 7% regime’s “seismic” routes, which depend on the 2009 and 2016-17 earthquake areas), `layers` (climate, air quality, crime, healthcare quality, age, population change and every other Italy-map layer) and `provinceWellbeing` (ISTAT BES indicators, polarity-aware percentiles) — looked up by 6-digit ISTAT code.

Potential side effects
search_comuni

Look up Italian comuni by name (case- and accent-insensitive, partial names work) and get each one's 6-digit ISTAT code, province and region — the code get_comune needs.

Inferred read-only
find_comuni

Which Italian comuni match: region, province, population range, purchase-price and rent ranges (OMI), population change 2019–2025, and/or the verified comuni of a tax regime.

Potential side effects
get_province

One Italian province (two-letter code such as AQ, or its slug — a comune's `provinceCode`): population, OMI prices, foreign residents by citizenship (citizenship, not birthplace), ALL ISTAT BES well-being indicators with polarity-aware percentiles among provinces (no composite score), every province- and region-grain map layer, `seismicZones` (how many of its comuni sit in each official seismic zone — a count of comuni, never an average, since a province has no zone of its own), and how much of the province meets each verified tax regime (places, not people).

Inferred read-only
get_nationality

For one tracked citizenship (ISO-2 code such as US, GB, DE): the comuni, provinces and regions where its holders concentrate, with counts and shares.

Inferred read-only
get_coverage

For every dataset: how many places it covers, out of how many at its grain, plus the source's own coverage caveat.

Inferred read-only
list_datasets

The catalog: each dataset's source institution, vintage (the period it describes), geographic grain, license, the expatliving.it page that presents it, and whether it is servable (false = still an unverified draft; never quote its values).

Inferred read-only
list_tax_regimes

Each regime's status (verified or draft), whether it depends on place (geographic) or on the person, its legislation, population ceiling and how many comuni meet its verified criteria.

Inferred read-only
check_tax_eligibility

For one regime slug (from list_tax_regimes) and one 6-digit ISTAT code (from search_comuni): qualifies, does_not_qualify or not_assessable, with a one-sentence reason to quote.

Inferred read-only
list_articles

Dated, sourced reporting on moving to and retiring in Italy, newest first.

Inferred read-only
get_article

One article's full text as Markdown, with its places, datasets and a ready-made citation.

Inferred read-only

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.expatliving-data]
url = "https://www.expatliving.it/api/v1/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "expatliving-data": {
      "type": "http",
      "url": "https://www.expatliving.it/api/v1/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: expatliving-data
Remote MCP URL: https://www.expatliving.it/api/v1/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "expatliving-data": {
      "url": "https://www.expatliving.it/api/v1/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "expatliving-data": {
      "type": "http",
      "url": "https://www.expatliving.it/api/v1/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "expatliving-data",
  "transport": "streamable-http",
  "url": "https://www.expatliving.it/api/v1/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

TRUST AND VERIFICATION EVIDENCE

Loading Trust v2 evidence…

Checking the associated registrable domain. The BuiltWith key remains server-side.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.