summerstateofmind avatar

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

summerstateofmind/cityparity

Hosted cost-of-living calculator that exposes six MCP tools for comparing cities across 69 countries. You get take-home pay after taxes, rent and groceries breakdowns, equivalent salary math, and quantified safety-net deltas like parental leave, vacation days, and universal healthcare. Use compare_cities for full scenario analysis, rank_cities to filter by composite quality scores, or get_inbound_tax_regime to check expat programs like Italy's impatriati or Portugal's IFICI. Free tier, no API key, rate-limited at the edge. Built on Streamable HTTP so Claude Desktop, Cursor, and ChatGPT Desktop connect with one JSON line. Ships an optional stdio bridge for older clients.

tools
6
transport
HTTP
last updated
May 31, 2026

Install

From registry metadata
$ npx add-mcp https://mcp.cityparity.com/mcp --name cityparity

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http cityparity https://mcp.cityparity.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 6 tools

Verified live against the running server on Nov 6, 2026.

compare_citiesCompare two cities for one household: take-home pay, full cost breakdown, the equivalent target salary needed to match source net cash, non-cash lifestyle deltas (vacation, parental leave, healthcare), and a 0-100 quality score on five weighted dimensions. Use this for a head-...7 params

Compare two cities for one household: take-home pay, full cost breakdown, the equivalent target salary needed to match source net cash, non-cash lifestyle deltas (vacation, parental leave, healthcare), and a 0-100 quality score on five weighted dimensions. Use this for a head-...

Parameters* required
advancedobject
Optional fine-tuning: retirement contribution, age bracket, trips home, transit mode, and inbound tax regime. Omit to use defaults.
gross_salary*number
User's annual gross salary in the SOURCE city's local currency (e.g. USD for Seattle, NOK for Oslo).
householdobject
Family structure: working-age partner and dependent children. Omit for a single person with no kids.
livingobject
Housing and spending assumptions. Omit to use defaults: rent, 2 bedrooms, typical spending.
score_weightsobject
Override the composite-score weights. Defaults: financial 30, healthcare 20, vacation 15, childcare 15, safety_net 20.
source_city*string
City slug for the user's current city. Use list_cities to discover valid slugs (e.g. 'nyc', 'seattle', 'tokyo').
target_city*string
City slug for the destination city.
list_citiesList all city slugs supported by cityparity, grouped by country. Call this first to discover valid slugs before any other tool; the optional country filter narrows to one country. Read-only, no side effects; returns a text summary plus structured JSON.1 params

List all city slugs supported by cityparity, grouped by country. Call this first to discover valid slugs before any other tool; the optional country filter narrows to one country. Read-only, no side effects; returns a text summary plus structured JSON.

Parameters* required
countrystring
Optional case-insensitive country filter. Use the canonical name as stored in city_data.country (e.g. "Norway", "USA", "United Kingdom"). If omitted, returns all countries.
get_city_summaryConcise profile of one city: currency, tax shape (bracket count + top rate + payroll/national insurance), headline costs (rent / groceries / transit / childcare), safety-net values (parental leave, vacation, universal healthcare), and data freshness. Lighter than compare_citie...1 params

Concise profile of one city: currency, tax shape (bracket count + top rate + payroll/national insurance), headline costs (rent / groceries / transit / childcare), safety-net values (parental leave, vacation, universal healthcare), and data freshness. Lighter than compare_citie...

Parameters* required
city*string
City slug. Use list_cities to discover valid slugs.
rank_citiesRank supported cities by composite quality-of-life score across five weighted dimensions (financial, healthcare, vacation, childcare, safety_net). Returns top N (default 10), with filters for country, countries, region (europe/asia/north_america/south_america/oceania), has_uni...4 params

Rank supported cities by composite quality-of-life score across five weighted dimensions (financial, healthcare, vacation, childcare, safety_net). Returns top N (default 10), with filters for country, countries, region (europe/asia/north_america/south_america/oceania), has_uni...

Parameters* required
filterobject
Restrict which cities are ranked, by country, region, universal-healthcare flag, or explicit include/exclude slug lists. Omit to rank all supported cities.
limitinteger
Max results to return. Default 10.
scenarioobject
Override the default ranking scenario. The same scenario is applied to every city so scores are comparable.
weightsobject
Override the composite-score weights. Defaults: financial 30, healthcare 20, vacation 15, childcare 15, safety_net 20.
get_safety_netBatch lookup of safety-net values for 1 to 20 cities at once: parental leave weeks + how it is paid, universal healthcare flag, vacation days, public holidays (public_holidays is the count the statute lists; public_holidays_effective is how many of those fall on a working day...1 params

Batch lookup of safety-net values for 1 to 20 cities at once: parental leave weeks + how it is paid, universal healthcare flag, vacation days, public holidays (public_holidays is the count the statute lists; public_holidays_effective is how many of those fall on a working day...

Parameters* required
cities*array
Array of city slugs (1-20). Use list_cities to discover valid slugs.
get_inbound_tax_regimeLook up a city's inbound-worker tax regime, the special reduced-tax schemes for relocating workers that general cost-of-living tools do not surface. Returns regime=null when the country has no modeled regime, which is most cities. Modeled across 13 regimes in Belgium, Denmark,...1 params

Look up a city's inbound-worker tax regime, the special reduced-tax schemes for relocating workers that general cost-of-living tools do not surface. Returns regime=null when the country has no modeled regime, which is most cities. Modeled across 13 regimes in Belgium, Denmark,...

Parameters* required
city*string
City slug. Use list_cities to discover valid slugs. Most cities return regime=null because their country has no special inbound-worker tax regime.

Sponsors

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


View the full README on GitHub

Details

Repository
github.com/summerstateofmind/cityparity
Transport
HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026