For agents & researchers

MigrationFit MCP server

MigrationFit publishes a read-only Model Context Protocol (MCP) server that gives AI assistants direct, structured access to migration data — rent, salaries, air quality, legal routes and more for thousands of cities across Europe and beyond. Every response carries its source, observation date and a CC BY 4.0 citation, so attributing the data is automatic.

The server exposes the same static dataset as the /data/ exports, wrapped in a tool interface. All tools are read-only and return the versioned gig-migration-export-v2 envelope. The data_version field signals the observation date; generated_at reflects the build date. No authentication is required in the public tier. Tools mirror the OpenAPI surface (task 82).

Status · In development · Ships with task 92. The tool list below is the planned v1 scope.

Available tools

All tools return a versioned data envelope plus a citation object. The get_route tool (task 90) will be added once route data is published.

MigrationFit MCP v1 tool list — sourced from mcpTools.json (task 92 manifest contract).
Tool What it returns Parameters Example call
get_city Returns the full data envelope for a single city, including all published metrics, sources, and a citation object. country*, slug* get_city(country="de", slug="berlin")
get_country Returns the country-level data envelope with migration metrics, legal routes, and a citation object. cc* get_country(cc="de")
get_region Returns the data envelope for a sub-national region (federal state, NUTS-2 region, etc.) with available metrics and city links. cc*, slug* get_region(cc="de", slug="bavaria")
compare_cities Returns side-by-side data for two cities with computed metric deltas. For curated pairs, returns the pre-built comparison; for non-curated pairs, returns both city envelopes plus deltas with curated: false. a*, b* compare_cities(a="de.berlin", b="nl.amsterdam")
rank_cities Returns an ordered list of cities ranked by a single metric, optionally filtered by country and limited to a set count. metric_id*, country, limit, direction rank_cities(metric_id="rent_avg_nettokalt_eur_per_m2_month", country="de", limit=5, direction="asc")
find_cities Returns cities matching a set of filter criteria (country, population range, metric thresholds). Served from the bulk dump index; cities with missing values for a required metric are excluded. filters* find_cities(filters={ country: "de", metric_thresholds: [{ metric_id: "rent_avg_nettokalt_eur_per_m2_month", max: 10 }] })
get_metric Returns the metric definition — name, unit, domain, description, and all published values across entities for that metric. metric_id* get_metric(metric_id="pm25_annual_mean_ug_m3")
get_source Returns the source definition — official name, URL, coverage, and which metrics it provides. source_id* get_source(source_id="destatis")
explain_score Returns a breakdown of how a city scores against a relocation profile — each metric's contribution, weight, and data confidence. Requires the scoring sub-index data. city*, profile* explain_score(city="de.berlin", profile="remote_worker")

* Required parameter.

Manifest tools.json JSON

Connect

Add MigrationFit as an MCP server in Claude Desktop, Claude Code, or any MCP-compatible client.

Claude Desktop

Add to your claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/; Windows: %APPDATA%/Claude/):

{
  "mcpServers": {
    "migrationfit": {
      "command": "npx",
      "args": ["-y", "@migrationfit/mcp-server@latest"]
    }
  }
}

Claude Code / Remote endpoint

For Claude Code or a remote-capable client, use the HTTP transport endpoint:

{
  "mcpServers": {
    "migrationfit": {
      "type": "http",
      "url": "https://mcp.migrationfit.com/mcp"
    }
  }
}

The remote endpoint URL becomes stable when task 92 ships. Update this snippet from the server manifest at /data/mcp/tools.json.

License & citation

All data returned by the MCP server is published under CC BY 4.0. You may reuse and redistribute it freely with attribution. The attribution requirement is: include the canonical backlink migrationfit.com and the observation date wherever data is displayed or cited.

Citation format

Each tool response includes a citation object with a ready-to-use text field. The canonical format is:

Migration Fit (migrationfit.com), [metric name], observed [date], source: [official source URL shown on the page].

Agent implementations should propagate the citation.text field whenever data from this server appears in an output.

Non-MCP alternatives

If MCP is not available in your environment, the same dataset is accessible as static files:

FAQ

What is the Model Context Protocol?

MCP (modelcontextprotocol.io) is an open standard that lets AI assistants call external tools in a structured, auditable way. The MigrationFit MCP server implements this standard to expose migration data as callable tools rather than raw text.

Is the server free to use?

Yes. The public tier has no authentication and no rate-limit charge. Fair-use rate limits apply at the edge. The data is CC BY 4.0 — free to reuse with attribution.

Can I write data through the server?

No. The v1 server is strictly read-only. No tool can mutate or submit data. This is a hard constraint from the task 92 specification.

How fresh is the data?

Each tool response includes a data_version field (the observation date of the most recent update for that entity) and a generated_at field (the build date). Check data_version to determine when the underlying figure was observed.

What is the difference between the MCP server and the /data/ JSON exports?

The exports are static files — ideal for batch processing and offline use. The MCP server wraps the same data in a tool interface designed for interactive agent sessions, with computed results (rank_cities, compare_cities, explain_score) that would require client-side logic with the raw exports.