ImmigrationDB MCP Server
by streltcoffio.github.streltcoff/immigrationdbv0.3.0
Read-only migration data: cities, visa routes, entry rules, costs, safety, climate, with sources.
context tax
~2,651 tok/turn15 tools
security
97/100
cold start
hosted
freshness
Active8d ago
Our reading of ImmigrationDB, from the data
ImmigrationDB is an MCP server from streltcoff, listed in the official MCP Registry.
Its 15 tools add about 2,651 tokens to every model turn (measured 2026-10-19).
Maintenance is active: the last public signal was 8 days ago (2026-10-10).
It runs as a hosted endpoint, so there is nothing to install.
Install ImmigrationDB MCP server
Install in Claude Code
claude mcp add --transport http immigrationdb https://immigrationdb.com/mcpInstall in Cursor
{
"mcpServers": {
"immigrationdb": {
"url": "https://immigrationdb.com/mcp"
}
}
}Install in Claude Desktop
{
"mcpServers": {
"immigrationdb": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://immigrationdb.com/mcp"
]
}
}
}Or add it as a custom connector under Settings → Connectors. The config above bridges via mcp-remote.
Install in VS Code
{
"servers": {
"immigrationdb": {
"type": "http",
"url": "https://immigrationdb.com/mcp"
}
}
}Install in Windsurf
{
"mcpServers": {
"immigrationdb": {
"serverUrl": "https://immigrationdb.com/mcp"
}
}
}Remote endpoints
- streamable-http
https://immigrationdb.com/mcp
Context tax
Connecting this server adds ~2,651 tokens of tool definitions to every model turn (moderate, 15 tools). Measured 2026-10-19 via its hosted endpoint; o200k tokenizer, worst case for clients that load all tools up front. How we measure
| Model | Per 1,000 turns | With prompt caching |
|---|---|---|
| Claude Opus 5.5 | $10.60 | $0.530 |
| Claude Sonnet 5.5 | $5.30 | $0.530 |
| Claude Haiku 5.5 | $0.265 | — |
Input prices as of 2026-10-06. Excludes your own prompt and output.
Tools (15)
search_facts541 tokArguments: countries, filters, sort_metric, sort_order, limit, cursor, diagnostic. Run bounded deterministic numeric filters over eligible public city facts with explicit counts and provenance. Example: {"countries":["de"],"filters":[{"metric_id":"population_total","op":">","value":100000}],"sort_metric":"population_total","sort_order":"desc","limit":20} Boundary: Filters are ANDed, results are capped and tie-broken by canonical entity ID; wrong-grain or non-comparable facts are excluded unless diagnostic mode is explicit.
compare_cities240 tokArguments: cities (required), metric_ids (required). Compare canonical public cities on compatible metric definitions with provenance for every cell. Example: {"cities":[{"country":"de","slug":"berlin"},{"country":"de","slug":"munich"}],"metric_ids":["population_total"]} Boundary: Incompatible units, periods, definitions or grains are omitted with reasons; no implicit currency, period or geography conversion occurs.
get_city204 tokArguments: country (required), slug (required). Get one admitted city with canonical URL, claim-level facts and source metadata. Required arguments are exactly `country` (ISO 3166-1 alpha-2) and `slug` (the canonical city slug, e.g. "berlin" — not the display name). Example: {"country":"de","slug":"berlin"} Boundary: Returns the backwards-compatible full city record by default; use get_city_fact for one metric.
get_city_fact198 tokArguments: country (required), slug (required), metric_id (required). Return exactly one public city fact with value, unit, geographic grain, dates, source and snapshot provenance. Required arguments are exactly `country` (ISO 3166-1 alpha-2), `slug` (canonical city slug, not the display name) and `metric_id`. Example: {"country":"de","slug":"berlin","metric_id":"population_total"} Boundary: Returns not_available or ambiguous_metric_version instead of guessing across units, periods, definitions or geographic grains.
list_metrics179 tokArguments: country, block, query, comparison_eligible, limit, cursor. List reviewed metric definitions and observed public snapshot coverage with bounded filters and pagination. Example: {"query":"population","country":"de","limit":20} Boundary: Descriptions and units come from the reviewed registry; missing ontology is reported as a contract gap, not generated from a label.
search_entry_rules174 tokArguments: passport, destination, purpose, limit, cursor. Search passport entry rules from the admitted snapshot; unknown and unavailable decisions remain explicit. Example: {"passport":"lv","destination":"us","limit":20} Boundary: Only accepted public entry answers are returned; verify the responsible authority before travel.
search_visa_routes151 tokArguments: destination (required), purpose, limit, cursor. Search admitted destination visa and residence routes without inventing missing eligibility data. Example: {"destination":"de","purpose":"work","limit":20} Boundary: Returns sourced route families; it is reference information, not legal advice or an eligibility decision.
get_entry_rule133 tokArguments: passport (required), destination. Get one passport entry rule using the canonical legal/entry URI identity. Example: {"passport":"lv","destination":"us"} Boundary: A missing answer is returned explicitly and is never replaced with an assumption.
get_country129 tokArguments: cc (required). Get one admitted country page record and official visa-route handoffs. It takes exactly one argument: `cc`, the ISO 3166-1 alpha-2 country code (e.g. "de") — not `country`. Example: {"cc":"de"} Boundary: Only public country records and their published handoffs are returned.
get_legal_route129 tokArguments: destination (required), route_id (required). Get one admitted legal-route record with its official source. Example: {"destination":"de","route_id":"highly-skilled"} Boundary: Missing or incomplete route fields remain explicit; the response does not infer a legal outcome.
list_blocks124 tokArguments: limit, cursor. List stable reviewed metric blocks with observed metric, fact and country coverage. Example: {"limit":20} Boundary: Block order and IDs are deterministic; coverage counts describe the current public snapshot only.
search_destinations122 tokArguments: query (required), limit, cursor. Search admitted ImmigrationDB country and city identities with bounded cursor pagination. Example: {"query":"Berlin, Germany","limit":5} Boundary: Returns ranked public identities; it does not guess a missing country or expose data-only records.
resolve_city117 tokArguments: query (required), limit. Resolve a natural-language city query to bounded ranked public candidates without silently selecting an ambiguous country. Example: {"query":"Berlin, Germany","limit":5} Boundary: A bare or ambiguous city name returns candidates and ambiguity; it must not auto-select a non-exact country.
list_reports108 tokArguments: category, limit, cursor. List public ImmigrationDB reports by optional category with bounded cursor pagination. Example: {"category":"Population","limit":20} Boundary: Lists published reports only; report rows retain their own source and method metadata.
get_report100 tokArguments: report_id (required). Get one public report envelope with canonical and machine-resource URLs. Example: {"report_id":"warmest-published-cities-across-current-coverage"} Boundary: The report response is bounded by the published report contract and does not expose review-only rows.
Security signals
97/100 — no known issues found as of 2026-10-19, from the checks below. This is not a guarantee of safety; review what a server can do before connecting it.
Deductions
- No security policy (SECURITY.md)-3
Checks
- ✓Repository hygiene (archived, activity, license, security policy)
- ○Package metadata (install scripts, provenance) — pending
- ○Tool descriptions (prompt-injection and hidden-text heuristics) — pending
- ○Source scan (secrets, CVEs, risky code) by vectra-guard — pending
Scan it yourself before installing with vectra-guard, the open-source agent security CLI. Scoring rules
Freshness
Active — last maintenance signal 8d ago. The newest of the signals below sets the band.
Last commit (default branch)
2026-10-10 · 8d ago · GitHub
Latest release
no data · GitHub
Package published
no data · npm/PyPI
Registry entry updated
2026-10-10 · 8d ago · official registry · v0.3.0
FAQ
›How do I install the ImmigrationDB MCP server in Claude Code?
Run: claude mcp add --transport http immigrationdb https://immigrationdb.com/mcp. For Cursor, VS Code, Claude Desktop and Windsurf, use the install tabs above.
›Does ImmigrationDB require an API key?
No required environment variables are declared in its published metadata.
›Can I use ImmigrationDB as a remote (hosted) MCP server?
Yes. It is a hosted MCP server; connect to its URL with any client that supports remote MCP.
›Is ImmigrationDB in the official MCP registry?
Yes, as io.github.streltcoff/immigrationdb.
›How many tokens does ImmigrationDB add to my context?
Its tool definitions total about 2,651 tokens, resent on every turn.
Sources and method
- Official MCP Registry entry
- updated 2026-10-10
- GitHub repository
- fetched 2026-10-19
- Tool list (tools/list), measured by us
- 2026-10-19
- Security signals, computed by us
- 2026-10-19
- Last checked against all sources
- 2026-10-19
The description, packages and links come from the maintainer's own published metadata. Token cost, security signals, freshness and the reading above are MCPSkillHub's own measurements; see the methodology. Spot an error? Request a correction or claim the listing.