ImmigrationDB

io.github.streltcoffv0.3.0Updated Oct 10, 2026

Read-only migration data: cities, visa routes, entry rules, costs, safety, climate, with sources.

VerifiedStreamable HTTPWeb executableLocation & LifestyleData & Analytics

Overview

AI-generated overview

Read-only migration reference: search countries and cities, visa routes, passport entry rules, costs, safety and climate, each with sources.

What it does
A hosted, read-only MCP server over ImmigrationDB, a sourced migration reference covering 39 countries and 27,000+ cities. Tools search destinations and resolve city names, fetch a city or a single city fact, compare cities on compatible metrics, and run numeric filters over city facts. It also returns country records, visa and residence routes, passport entry rules, and published reports, with metric and block listings. Every value carries its source, observation date and geographic grain, and unknown values stay explicit rather than estimated.
When to use it
Use it when an assistant needs sourced answers about moving or travelling abroad: comparing cities on cost of living, salaries, crime, air quality or climate, looking up visa and residence routes, or checking passport entry rules. It suits research and planning where provenance matters and where the assistant should not invent numbers.
Requirements
A remote Streamable HTTP endpoint; no key, account or environment variable is declared. Any MCP client that supports Streamable HTTP can connect; clients that only speak stdio can go through mcp-remote. Network access is required, and rate limits and response-size caps apply per client.
Before you install
All tools are annotated read-only and idempotent, so nothing is written, sent or deleted. The data is a reference with sources and dates, not legal advice; entry rules and visa routes can change, so verify against official sources before acting. Queries are sent to the hosted service.

Installation

In SourceWeft

  1. Open ImmigrationDB in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Other MCP clients

Add this to your client's mcpServers config.

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

README

ImmigrationDB MCP

Read-only Model Context Protocol server for ImmigrationDB, a sourced migration reference: 39 countries and 27,000+ cities, visa and residence routes, passport entry answers, cost of living, salaries, crime, air quality and climate. Every value carries its source, observation date and geographic grain. The server reads the same release as the website.

  • Live endpoint (Streamable HTTP, no key, no account): https://immigrationdb.com/mcp
  • Protocol versions: 2026-07-28, 2025-11-25
  • Docs: https://immigrationdb.com/data/mcp/
  • Tool catalog with input schemas: https://immigrationdb.com/data/mcp/catalog.json
  • Methodology: https://immigrationdb.com/methodology/
  • Agent index: https://immigrationdb.com/llms.txt

This repository holds the public contract of the hosted server: client configuration, the tool list with input schemas (tools.json), registry metadata (server.json) and a dependency-free smoke test. The service runs only as the hosted endpoint above; its data release is several gigabytes and is published as files at https://immigrationdb.com/data/mcp/.

Tools

ToolArgumentsWhat it does
search_destinationsquery, limit, cursorSearch countries and cities.
resolve_cityquery, limitResolve a city name to ranked candidates; never picks an ambiguous country silently.
get_citycountry, slug, detail, metric_idsOne city with claim-level facts and source metadata.
get_city_factcountry, slug, metric_idExactly one fact: value, unit, grain, dates, source.
compare_citiescities, metric_idsCompare cities on compatible metrics, with provenance for every cell.
search_factscountries, filters, sort_metric, sort_order, limit, cursor, diagnosticNumeric filters over city facts with explicit counts.
list_metricscountry, block, query, comparison_eligible, limit, cursorMetric definitions and their coverage.
list_blockscountry, limit, cursorMetric blocks with coverage.
get_countryccOne country record with official visa-route links.
search_visa_routesdestination, purpose, limit, cursorVisa and residence routes of a destination.
get_legal_routedestination, route_idOne route with its official source.
search_entry_rulespassport, destination, purpose, limit, cursorPassport entry rules; unknown answers stay explicit.
get_entry_rulepassport, destinationOne passport entry rule.
list_reportscategory, limit, cursorPublished reports (largest cities, cheapest rent, cleanest air…).
get_reportreport_idOne report with its rows, method and sources.

Optional arguments are listed with the required ones; tools.json has the full input schemas. Country arguments are ISO 3166-1 alpha-2 codes (de, lv, us); city arguments are canonical slugs (berlin), not display names. All tools are annotated read-only and idempotent.

Resources

  • immigrationdb://country/{cc} — country record and route links
  • immigrationdb://city/{country}/{slug} — city facts with source metadata
  • immigrationdb://legal/routes/{country}/{route_id} — one visa or residence route
  • immigrationdb://legal/entry/{passport}/{destination} — one passport entry answer
  • immigrationdb://legal/entry/{passport} — all entry answers for a passport
  • immigrationdb://report/{report_id} — report rows, method and sources

Client configuration

Any MCP client that supports Streamable HTTP:

json
{  "mcpServers": {    "immigrationdb": {      "url": "https://immigrationdb.com/mcp"    }  }}

Claude Code:

bash
claude mcp add --transport http immigrationdb https://immigrationdb.com/mcp

Clients that only speak stdio can go through mcp-remote: npx -y mcp-remote https://immigrationdb.com/mcp.

Example calls

json
{ "tool": "resolve_city", "arguments": { "query": "Berlin, Germany", "limit": 5 } }{ "tool": "get_city_fact", "arguments": { "country": "de", "slug": "berlin", "metric_id": "population_total" } }{ "tool": "compare_cities", "arguments": { "cities": [{ "country": "de", "slug": "berlin" }, { "country": "de", "slug": "munich" }], "metric_ids": ["population_total"] } }{ "tool": "search_facts", "arguments": { "countries": ["de"], "filters": [{ "metric_id": "population_total", "op": ">", "value": 100000 }], "sort_metric": "population_total", "sort_order": "desc", "limit": 20 } }{ "tool": "get_entry_rule", "arguments": { "passport": "lv", "destination": "us" } }

Response contract

Every response carries the snapshot ID, its generation date and the canonical origin. Facts keep their value, unit, geographic grain, observation date, verification date, source ID, source URL and grade. Unknown or withheld values are returned as such and never estimated. Errors name the requested identifier and the snapshot ID. Rate limits and response-size caps apply per client.

Smoke test

Node 20 or newer, no install step:

bash
node scripts/smoke.mjs                 # initialize, list tools, run six example callsnode scripts/smoke.mjs --write-tools   # also refresh tools.json from the live server

License

The files in this repository are MIT. The ImmigrationDB data is published under CC BY 4.0: credit ImmigrationDB and link to the page or resource you used. The underlying official sources keep their own terms; each value names its publisher and links to it.

ImmigrationDB is an independent reference. It gives no legal advice and sells no visa or immigration services; check current requirements with the responsible authority before acting.

Source: README.md at commit d578564

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v0.3.0LatestOct 10, 2026