mcpField
C
cityparity: Cost-of-Living & Quality-of-Life Comparison

cityparity: Cost-of-Living & Quality-of-Life Comparison

Remote
github.com/summerstateofmindMaps & Travel2Updated 18w ago
Repository

About cityparity: Cost-of-Living & Quality-of-Life Comparison

cityparity lets agents compare pay, living costs, and quality-of-life factors across cities, including safety-net benefits that salary and rent comparisons can miss. It supports relocation and compensation planning across roughly 165 cities in 69 countries.

Key features

  1. 01Two-city cost and pay comparison
  2. 02Equivalent target salary estimates
  3. 03City profiles and supported-city lookup
  4. 04Quality-score ranking with filters
  5. 05Safety-net and inbound tax details

Use cases

  1. 01Compare relocation options across cities
  2. 02Estimate a salary for a move abroad
  3. 03Rank cities by quality score and chosen weights

MCP support

The MCP server provides tools for city comparisons, city and safety-net data, rankings, and inbound tax regimes. It is hosted over Streamable HTTP; a stdio-to-HTTP bridge is available for clients without HTTP MCP support.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://mcp.cityparity.com/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

6
ParameterTypeRequiredDescription
source_citystringYesCity slug for the user's current city. Use list_cities to discover valid slugs (e.g. 'nyc', 'seattle', 'tokyo').
target_citystringYesCity slug for the destination city.
gross_salarynumberYesUser's annual gross salary in the SOURCE city's local currency (e.g. USD for Seattle, NOK for Oslo).
householdobjectNoFamily structure: working-age partner and dependent children. Omit for a single person with no kids.
household.has_partnerbooleanNoWhether the user has a working-age partner. Defaults to false.
household.partner_gross_salarynumberNoPartner's annual gross salary in the SOURCE city's currency. REQUIRED when has_partner=true.
household.partner_works_in_sourcebooleanNoWhether the partner currently earns in the source city. REQUIRED when has_partner=true; cityparity does not default this because spouse-per-city working status materially changes the math (e.g. US childcare may exceed a second income, while Nordic subsidies make the second income viable).
household.partner_works_in_targetbooleanNoWhether the partner would earn in the target city after relocation. REQUIRED when has_partner=true.
household.kids_agesarrayNoAges of dependent children, e.g. [3, 7]. Empty array or omitted if no kids.
livingobjectNoHousing and spending assumptions. Omit to use defaults: rent, 2 bedrooms, typical spending.
living.housing_modeenumNoWhether the household rents or owns. Default rent.rent | own | own_outright
living.bedroomsintegerNoBedroom count for the household. Default 2.
living.lifestyleenumNoSpending multiplier on food and discretionary categories. Default typical (1.0×).frugal | typical | generous
advancedobjectNoOptional fine-tuning: retirement contribution, age bracket, trips home, transit mode, and inbound tax regime. Omit to use defaults.
advanced.retirement_contrib_pctnumberNoPercentage of gross diverted to retirement (pre-tax for US 401k). Default 6.
advanced.age_bracketenumNoAffects US healthcare premium multipliers. Default 25-34.18-24 | 25-34 | 35-44 | 45-54 | 55-64
advanced.trips_home_per_yearintegerNoRound trips back to source country per year (target-only cost). Default 1.
advanced.source_transit_choiceenumNoDefault depends on city; e.g. Seattle defaults to 'car', Oslo defaults to 'transit'.car | transit
advanced.target_transit_choiceenumNoSame as above for the target city.car | transit
advanced.apply_inbound_regimebooleanNoApply the destination country's special inbound-worker tax regime if available (Italy impatriati, Portugal IFICI, Belgium expat, Poland B2B ryczałt, Greece inbound). Default false. Applies only on the target side.
score_weightsobjectNoOverride the composite-score weights. Defaults: financial 30, healthcare 20, vacation 15, childcare 15, safety_net 20.
score_weights.financialnumberNo
score_weights.healthcarenumberNo
score_weights.vacationnumberNo
score_weights.childcarenumberNo
score_weights.safety_netnumberNo

Details

From the project README

cityparity MCP server

Cost-of-living and quality-of-life comparison tools that AI agents can call. Point an agent at two cities and it returns take-home pay, a full cost breakdown, the equivalent salary you'd need in the target city, and the non-cash deltas people actually move for: vacation, parental leave, universal healthcare.

Hosted at https://mcp.cityparity.com/mcp. Free, no API key, rate-limited at the edge. Built on the Model Context Protocol (spec 2025-06-18, Streamable HTTP).

What it covers

About 165 cities across 69 countries. Most calculators stop at salary and rent. cityparity prices the social safety net (childcare subsidies, parental leave, statutory vacation, universal healthcare), so "the lower-salary city actually pays more" stops being a hand-wave and becomes a number.

Tools

ToolWhat it does
compare_citiesFull scenario comparison between two cities: take-home, cost breakdown, equivalent target salary, lifestyle deltas, quality score.
list_citiesDiscover supported city slugs, grouped by country.
get_city_summaryOne-city profile: tax shape, headline costs, safety-net values.
rank_citiesTop N cities by composite quality score, with custom weights and region/country filters.
get_safety_netParental leave, universal-healthcare flag, vacation, public holidays for 1 to 20 cities.
get_inbound_tax_regimeInbound-worker regimes: Italy impatriati, Portugal IFICI, Belgium expat, Poland B2B ryczałt, Greece inbound.

City slugs are kebab-case (san-francisco, hong-kong). Call list_cities first if you're unsure.

Connect

Most modern clients speak Streamable HTTP and need no install. Just point them at the URL.

Claude Code
claude mcp add --transport http cityparity https://mcp.cityparity.com/mcp
Claude Desktop / ChatGPT Desktop
{
  "mcpServers": {
    "cityparity": {
      "url": "https://mcp.cityparity.com/mcp"
    }
  }
}

Claude Desktop config lives at ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows). ChatGPT Desktop uses …/OpenAI/ChatGPT/mcp.json. Restart the app after editing.

Cursor
{
  "name": "cityparity",
  "url": "https://mcp.cityparity.com/mcp"
}
Codex CLI
mcpServers:
  cityparity:
    url: https://mcp.cityparity.com/mcp
Stdio-only clients (this package)

If your client can't do HTTP MCP yet, the npm package in this repo bridges stdio → HTTP:

{
  "mcpServers": {
    "cityparity": {
      "command": "npx",
      "args": ["-y", "cityparity-mcp"]
    }
  }
}

The bridge (this package)

cityparity-mcp is a ~150-line stdio→HTTP forwarder. It reads line-delimited JSON-RPC from stdin, POSTs each line to the MCP endpoint, and writes the responses back to stdout (streaming SSE line by line). That's the whole job: no data, no calc engine, no secrets. Read bin/cityparity-mcp.mjs if you want to verify.

npm install -g cityparity-mcp   # or use npx, as above
Env varDefaultPurpose
CITYPARITY_MCP_URLhttps://mcp.cityparity.com/mcpOverride the upstream endpoint (local dev)
CITYPARITY_MCP_DEBUGunsetLog request/response framing to stderr

Run the tests (zero dependencies, Node ≥ 20):

npm test

Methodology

The full methodology (how taxes, costs, childcare subsidies, and safety-net scoring work) is on the homepage. One thing worth flagging: RSU income is not an input. Grants are treated as source-only because they usually don't follow you across employers. If you're keeping a US employer remotely, treat the result as directional in that direction.

Privacy

Queries reach mcp.cityparity.com and nothing else. No accounts, no client-side telemetry, nothing personally identifiable logged beyond standard HTTP server logs.

License

MIT. cityparity's underlying data and calculation engine are not part of this package. This repo is the public MCP surface plus the open-source stdio bridge.


Found a bug or want a city added? https://cityparity.com/contact/

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.