# Boundary Atlas

> Free MCP server of US and Canadian boundaries: cities and towns, ZIP codes (Census ZCTAs), counties, towns and
> townships, congressional and state legislative districts (the maps in force for the Nov 3, 2026 election) and voting
> precincts, plus Canadian provinces, federal ridings, polling divisions and provincial districts. Find what contains
> any address or point, cross between them with population shares (ZIP to city, county or district), and get
> polygon boundaries as GeoJSON. Every record carries its source, licence and freshness.

Connect any MCP client to https://atlas-production-d344.up.railway.app/mcp (streamable HTTP). No key, no sign-up. Limits per IP address: 60 requests a
minute, 3,000 a day, 4 at once.

## Docs

- [Full agent guide](https://atlas-production-d344.up.railway.app/llms-full.txt): how to use the tools well, every tool with its parameters, IDs, limits
  and attribution
- [Home](https://atlas-production-d344.up.railway.app/): what's in it, how to connect each client, FAQ
- [Map demo](https://atlas-production-d344.up.railway.app/demo?zip=07102): type a ZIP or address and see the tool calls behind the map

## Connect

- Claude Code: `claude mcp add --transport http boundary-atlas https://atlas-production-d344.up.railway.app/mcp`
- Cursor (~/.cursor/mcp.json): `{"mcpServers": {"boundary-atlas": {"url": "https://atlas-production-d344.up.railway.app/mcp"}}}`
- Codex (~/.codex/config.toml): `[mcp_servers.boundary-atlas] then url = "https://atlas-production-d344.up.railway.app/mcp"`
- Claude app (claude.ai or desktop): `Settings → Connectors → Add custom connector → https://atlas-production-d344.up.railway.app/mcp`
- ChatGPT (developer mode): `Add a custom connector: URL https://atlas-production-d344.up.railway.app/mcp, no authentication`

## Tools

- `search_geographies`: Find geographies by name, e.g. 'Essex County', 'Newark ward 5', 'Toronto Centre'.
- `get_geography`: Full record for one geography: attributes, parent chain up to the country, child counts by level, and the source it came from (licence, vintage, last fetched).
- `list_children`: Geographies directly under `id` (state -> counties and districts, county -> precincts and towns, province -> ridings). Filter with `level`; page with limit/offset (max 1000).
- `list_geographies`: Every geography at one level, optionally within one state/province, e.g. all congressional districts in 'NJ' or all federal ridings in 'ON'. Page with limit/offset (max 1000).
- `related_geographies`: Links between geographies that overlap without nesting, with population shares.
- `locate_point`: Which geographies contain a point: precinct, county, town, congressional and state legislative districts in the US; province, census division and subdivision, federal riding, polling divisions and provincial districts in Canada. Point-in-polygon on stored boundaries (simplified to ~10 m, so a point within ~10 m of a line can land on either side). Geocode an address to lat/lon first.
- `get_boundaries`: Polygon boundaries as a GeoJSON FeatureCollection (EPSG:4326, RFC 7946 winding), for drawing dashboard maps.
- `nearest_geographies`: Geographies at `level` whose internal point is closest to (lat, lon). This is a nearest-point approximation, not point-in-polygon. To find the geography containing a point, use locate_point.
- `data_freshness`: When each upstream dataset was last fetched and checked, what period it describes (vintage), how often it is re-checked, and whether it is overdue. Includes the recent refresh history.
- `coverage_summary`: What's in the atlas: row counts by country and level, with the vintage of each layer.

## Pages

- `https://atlas-production-d344.up.railway.app/zip/<5-digit ZIP>`: the cities, county, congressional, state senate and state house districts a ZIP is in,
  with population shares, plus its towns and precinct count (e.g. https://atlas-production-d344.up.railway.app/zip/90210)
- `https://atlas-production-d344.up.railway.app/city/<state>/<name>`: a city's counties, districts and ZIP codes with shares (e.g. https://atlas-production-d344.up.railway.app/city/il/chicago)
- `https://atlas-production-d344.up.railway.app/congressional-district/<state>-<number>`: a district's counties, ZIP codes and population (e.g. nj-10, ak-al)
- `https://atlas-production-d344.up.railway.app/state/<state>`: a state's cities, districts and ZIP codes (e.g. https://atlas-production-d344.up.railway.app/state/nj); index at https://atlas-production-d344.up.railway.app/states

## Optional

- IDs look like `us:place:1714000` (Chicago), `us:county:34013`, `us:congressional_district:3410`, `us:zcta:07102`,
  `ca:federal_electoral_district:35001`.
- ZIP codes are 2020 Census ZIP Code Tabulation Areas, which approximate USPS ZIP Codes.
