Boundary Atlas

Boundaries for AI agents. Free.

Boundary Atlas is an MCP server with every US city, ZIP code, county, congressional and state legislative district (the 2026 maps) and voting precinct, plus Canadian ridings and polling divisions. Your agent can find what contains any address, cross between them with population shares, and draw GeoJSON maps, with the source on every record. No key, no sign-up.

MCP endpoint: https://atlas-production-d344.up.railway.app/mcp
The Boundary Atlas map for ZIP 07102 in Newark: the ZIP outline, its 14 precincts, and the line where congressional districts 10 and 8 split it

What people use it for

Route by place

Assign leads, accounts, service areas or field teams by city, county or district.

Join ZIP-level data

Roll ZIP data up to cities, counties or districts with population weights: a ZIP crosswalk that stays current.

Who represents an address

Congressional and state legislative districts and the voting precinct for any address, for advocacy, constituent services and government relations.

Draw maps

GeoJSON for any city, county, district, ZIP or precinct, for dashboards, reports and apps.

Elections and civic data

Current precincts for about 92% of the US, the 2026 district maps, and Canada's ridings and polling divisions.

What's in it

Census cities, towns, ZIP codes and counties; congressional and state legislative districts as in force for the November 3, 2026 election, including the mid-decade redraws; and current official precincts for about 92% of the US population, from 34 statewide files and 437 county, town and municipio sources, with 2020 Census voting districts elsewhere.

32,350cities and towns
33,774ZIP codes (ZCTAs)
3,222counties
36,297towns and townships
437congressional districts
1,958state senate districts
4,873state house districts
182,778voting precincts
343Canadian federal ridings
71,217federal polling divisions
761provincial districts

Connect

Streamable HTTP, no authentication. Limits per IP address: 60 requests a minute, 3,000 a day. Agents can read /llms.txt or the full guide at /llms-full.txt.

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]
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

Ask your agent

  • What city, county and congressional district is 233 S Wacker Dr, Chicago in?
  • Which cities and counties does ZIP 90210 cover, and in what shares?
  • Roll this CSV of ZIP-level sales up to counties using population weights.
  • Which congressional districts does Houston span, and what share of residents is in each?
  • Map every city in Ohio, and every precinct in Essex County, NJ, coloured by congressional district.
  • List the ZIP codes in Austin, TX and the federal ridings in Toronto.

Tools

Ten read-only tools. IDs look like us:county:34013, us:zcta:07102 and ca:federal_electoral_district:35001.

search_geographiesFind geographies by name, e.g. 'Essex County', 'Newark ward 5', 'Toronto Centre'.
get_geographyFull 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_childrenGeographies directly under `id` (state -> counties and districts, county -> precincts and towns, province -> ridings). Filter with `level`; page with limit/offset (max 1000).
list_geographiesEvery 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_geographiesLinks between geographies that overlap without nesting, with population shares.
locate_pointWhich 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_boundariesPolygon boundaries as a GeoJSON FeatureCollection (EPSG:4326, RFC 7946 winding), for drawing dashboard maps.
nearest_geographiesGeographies 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_freshnessWhen 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_summaryWhat's in the atlas: row counts by country and level, with the vintage of each layer.

Questions

Is there an MCP server for US boundaries like cities, ZIP codes, counties and districts?

Yes. Boundary Atlas is a free MCP server of US and Canadian boundaries: cities and towns, ZIP codes, counties, towns and townships, congressional and state legislative districts, and voting precincts, plus Canadian provinces, ridings and polling divisions. Add https://atlas-production-d344.up.railway.app/mcp to Claude, ChatGPT, Cursor or Codex; no key or sign-up.

What city, county and congressional district is an address in?

Geocode the address to latitude and longitude, then call locate_point: a point-in-polygon lookup that returns the city, county, town, ZIP code, congressional and state legislative districts and voting precinct containing it. The map demo does this for any US address with the free Census Geocoder.

What county or city is a ZIP code in?

Often more than one: ZIP codes cross county lines and city limits (90210 is mostly Beverly Hills and partly Los Angeles). related_geographies on a ZIP (for example us:zcta:90210) returns every city, county and town it overlaps with each one's share of the ZIP's 2020 population, so you can split ZIP-level data correctly.

How do I find which congressional district a ZIP code is in?

Many ZIP codes span more than one district, so a single answer is often wrong. Ask Boundary Atlas for the ZIP: related_geographies returns every congressional, state senate and state house district it overlaps with each one's share of the ZIP's residents, and get_boundaries draws them.

Which ZIP codes are in a city, county or district?

Call related_geographies on the city, county or district with level='zcta'. Each ZIP comes with the share of its residents inside, so ZIPs that only clip the edge are easy to drop.

Where can I get GeoJSON boundaries for cities, counties, districts or precincts?

get_boundaries returns GeoJSON for any single area, or everything at one level inside another: every city in a state, every precinct in a county or district, every county in a state. Three detail levels; water can be trimmed. Large sets come back as a download link.

How current are the precincts and district maps?

Precincts are current official files for about 92% of the US population (statewide files in 34 states and DC, plus 437 county, town and municipio sources), with 2020 Census voting districts elsewhere. Districts are the maps in force for the November 3, 2026 election, including the 2025–26 mid-decade redraws.

Are ZIP codes the same as ZCTAs?

Not quite. ZIP Code Tabulation Areas are the Census Bureau's approximation of USPS ZIP Codes, built from 2020 blocks. PO-box-only and single-building ZIPs have none, and a mailing address's ZIP can differ from the ZCTA its location falls in. Boundary Atlas uses ZCTAs and says so.

Does it cover Canada?

Yes: provinces, census divisions and subdivisions, the 343 federal ridings (2023 Representation Order), federal polling divisions from the 2025 general election, provincial electoral districts, and provincial polling divisions for most provinces.

Where does the data come from?

Every record carries its source, licence, vintage and last update, and data_freshness lists each source with its refresh history. Sources include the U.S. Census Bureau (TIGER/Line and the 2020 Census; public domain), state and county election offices, Elections Canada and Statistics Canada. Keep their attribution in anything you publish.

Is it free?

Yes. The hosted server needs no key. It is rate-limited per IP address (60 requests a minute, 3,000 a day) so it stays fast for everyone.