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.
| 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.
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.