cityparity-mcp
v0.1.1
Published
Stdio→HTTP bridge for cityparity's MCP server. Lets MCP clients that only speak stdio (older Claude Desktop, some Cursor configs) talk to the hosted Streamable HTTP server at mcp.cityparity.com.
Maintainers
Readme
cityparity-mcp
A small stdio to HTTP bridge for cityparity's MCP server. Use this if your MCP client only supports stdio transport.
If your client speaks Streamable HTTP MCP natively (most modern Claude Desktop builds, Cursor with the HTTP MCP option, etc.), point it at
https://mcp.cityparity.com/mcpdirectly. You don't need this package.
What is cityparity?
cityparity is a cost-of-living and quality-of-life calculator that takes the social safety net seriously: it folds childcare subsidies, parental leave, universal healthcare, and statutory vacation into the comparison alongside take-home pay.
The MCP server exposes six tools agents can call:
compare_cities: full scenario comparison between two citieslist_cities: discover supported city slugsget_city_summary: single-city profilerank_cities: top N cities by composite QoLget_safety_net: parental leave, healthcare, vacation lookupget_inbound_tax_regime: Italy impatriati, Portugal IFICI, etc.
Install
npm install -g cityparity-mcpUse with Claude Desktop
Edit your config (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; Windows: %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"cityparity": {
"command": "cityparity-mcp"
}
}
}Restart Claude Desktop. The cityparity tools appear in the Settings, Developer panel.
Use with Cursor
In Cursor settings, MCP, "Add MCP Server":
{
"name": "cityparity",
"command": "cityparity-mcp"
}Environment
| Variable | Default | Purpose |
|---|---|---|
| CITYPARITY_MCP_URL | https://mcp.cityparity.com/mcp | Override the upstream endpoint (useful for local dev) |
| CITYPARITY_MCP_DEBUG | unset | If set, log request/response framing to stderr |
Privacy
This bridge forwards every JSON-RPC message to mcp.cityparity.com. Your queries reach that endpoint; cityparity logs nothing personally identifiable beyond standard HTTP server logs. No accounts, no telemetry on the client side.
How it works
Reads line-delimited JSON-RPC from stdin, POSTs each line to the MCP HTTP endpoint, writes responses back to stdout. SSE responses stream line-by-line. Notifications (no id) get no reply. The whole bridge is around 150 lines; read bin/cityparity-mcp.mjs if you want to verify.
License
MIT.
