Skip to main content

unhcr-refugees-mcp-server

io.github.cyanheads/unhcr-refugees-mcp-serverVersion 0.3.0

Query UNHCR refugee, IDP, and stateless populations, asylum decisions, returns, and resettlement.

Status

Responds264 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:48 UTC
Latency
264 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://unhcr-refugees.caseyjhand.com/mcpResponds264 ms
No sign-in

Claude Code

claude mcp add --transport http unhcr-refugees-mcp-server https://unhcr-refugees.caseyjhand.com/mcp

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: unhcr-refugees-mcp-server
Remote MCP server URL: https://unhcr-refugees.caseyjhand.com/mcp

Cursor

{
  "mcpServers": {
    "unhcr-refugees-mcp-server": {
      "url": "https://unhcr-refugees.caseyjhand.com/mcp"
    }
  }
}

VS Code

code --add-mcp '{"name":"unhcr-refugees-mcp-server","type":"http","url":"https://unhcr-refugees.caseyjhand.com/mcp"}'
Streamable HTTP
npm: @cyanheads/unhcr-refugees-mcp-server 0.3.0
Package only

npm (npx)

claude mcp add unhcr-refugees-mcp-server -- npx -y @cyanheads/unhcr-refugees-mcp-server@0.3.0
Streamable HTTP
npm: @cyanheads/unhcr-refugees-mcp-server 0.3.0
Package only

npm (npx)

claude mcp add unhcr-refugees-mcp-server -- npx -y @cyanheads/unhcr-refugees-mcp-server@0.3.0

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

8 tools

Tools of unhcr-refugees-mcp-server
Read-only
Idempotent
Open world
unhcr_dataframe_describeDescribe a dataframe (df_XXXXX_XXXXX) staged by the unhcr_get_* tools — any response carrying a dataset or nowcast_dataset handle staged its full result here — or list them all where this deployment allows listing. Each entry gives the source tool, query parameters, creation and expiry time, row count, whether the upstream fetch was complete, and the column schema. Read the columns here before writing SQL for unhcr_dataframe_query.Not declaredYesYesNo
unhcr_dataframe_queryRun a single-statement SELECT against the dataframes staged by the unhcr_get_* tools. Check a dataframe’s columns with unhcr_dataframe_describe first. Writes, DDL, DROP, COPY, PRAGMA, ATTACH, file references, external-data functions, engine introspection, dynamic table lookup, and system catalogs are rejected; query() accepts only a single SQL string literal, checked by the same gate. Optional register_as saves the result as a new dataframe with a fresh TTL. Recompute rates from summed counts rather than averaging rate columns.Not declaredYesYesNo
unhcr_get_asylum_applicationsGet asylum applications lodged per year (2000 to the latest year) by country of origin and/or asylum, split by default into application stage — new, repeat, appeal, and the combined stages some countries report — so new claims are not added to appeals of old ones. Counts given as cases are never added to counts of persons; each row states its unit. Decode stage, authority, and decision-level codes with unhcr_list_reference (topic asylum_codes).Not declaredYesYesYes
unhcr_get_asylum_decisionsGet asylum decisions per year (2000 to the latest year) by country of origin and/or asylum: recognized as refugees, complementary protection, rejected, and otherwise closed, with UNHCR's Refugee Recognition Rate and Total Protection Rate computed over substantive decisions (otherwise-closed cases excluded). By default all decision levels are summed and each row lists the levels it includes; appeal-stage decisions can concern people already decided at first instance, so split_by decision_level or filter decision_levels to FI for first-instance rates. Cases and persons are never added together.Not declaredYesYesYes
unhcr_get_demographicsGet UNHCR year-end stocks (2001 to the latest year) broken down by population type, sex, and age band (0–4, 5–11, 12–17, 18–59, 60+, unknown age), by country of origin and/or asylum. Coverage is partial: each row gives the share of its total that UNHCR could disaggregate by sex, and age bands are null where no breakdown exists. These totals come from a separate collection and need not match unhcr_get_population.Not declaredYesYesYes
unhcr_get_populationGet UNHCR year-end displacement stocks (1951 to the latest year) by country of origin and/or asylum: refugees, asylum-seekers, other people in need of international protection, IDPs, stateless people, others of concern, and host communities, plus refugees and IDPs who returned during the year. Stocks count people in a situation on 31 December, not arrivals. Palestine refugees under UNRWA's mandate and IDMC's conflict-IDP estimate are separate series shown beside each row. Set include_nowcast for UNHCR's current-year estimate by asylum country; for sex and age breakdowns, use unhcr_get_demographics.Not declaredYesYesYes
unhcr_get_solutionsGet durable solutions per year (1959 to the latest year) by country of origin and/or asylum: refugees who returned home, refugees resettled to a third country, refugees naturalised, and IDPs who returned. The asylum country means something different per column: the country refugees returned from, the country they were resettled to, the country that naturalised them; IDP returns sit on the origin country itself. Null means the figure was not collected for that country and year, not zero.Not declaredYesYesYes
unhcr_list_referenceDecode the vocabulary the unhcr_* tools take as input: countries (ISO3, ISO2, UNHCR code, names, UNHCR and UN regions), UNHCR’s regional bureaus, each dataset’s first and latest year, population-type definitions, and the asylum authority, stage, decision-level, and unit codes. Filter countries with name_contains to turn a country name into the ISO3 code that origin and asylum take.Not declaredYesYesYes

Details

Registry status
Active
Published
Nov 4, 2026
Updated
Nov 4, 2026
Website
Not given
Categories (suggested)
Data and analyticsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing