Boundary Atlas MCP
A free, open-source MCP server providing comprehensive US and Canadian geographic data including cities, ZIP codes, counties, legislative districts, and voting precincts. It enables agents to perform address lookups, cross-reference geographies with population weights, retrieve official representatives, and generate GeoJSON boundaries for mapping and analysis without requiring authentication.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://atlas-production-d344.up.railway.app/mcpWhat its tools do
11 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Look up the city, county, and congressional district for a specific address
- Cross-reference ZIP code data with cities or counties using population weights
- Find elected officials and their contact information for a given location
- Generate GeoJSON maps for cities, counties, or voting precincts
Source and maintenance
Protocol and capabilities
- Server
- boundary-atlas 0.2.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 11 advertised
- Resources
- 0 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
11 advertised
search_geographies
Find geographies by name, e.g. 'Essex County', 'Newark ward 5', 'Toronto Centre'. country: 'US' or 'CA'. level: one of the levels from coverage_summary (e.g. 'county', 'precinct', 'congressional_district', 'federal_electoral_district'). region: USPS state or province code ('NJ', 'ON').
{
"type": "object",
"title": "search_geographiesArguments",
"required": [
"query"
],
"properties": {
"level": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Level",
"default": null
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20
},
"query": {
"type": "string",
"title": "Query"
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"default": null
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}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).
{
"type": "object",
"title": "get_geographyArguments",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}related_geographies
Links between geographies that overlap without nesting, with population shares. Districts: for a precinct, county, town, city (place) or ZIP, the congressional, state senate and state house districts it falls in; for a district, the precincts, counties, towns, cities or ZIPs inside it (filter with `level`, e.g. 'precinct'). A city ('us:place:1714000') also lists its counties. A ZIP ('us:zcta:07102') lists the cities, counties, towns, precincts and districts it overlaps. Ask for `level='zcta'` on a city, county, town or district to list the ZIP codes in it. `weight` is the share of the smaller unit's 2020 population inside the other (for a ZIP, the share of the ZIP's residents in each unit; 0 for parts with land but no residents). relation 'within' means wholly inside (1.0), 'overlaps' means split, 'approximate' means the unit was too small to contain any 2020 block's internal point and was placed by the nearest block. Use min_weight to drop slivers. ZCTAs approximate USPS ZIP Codes.
{
"type": "object",
"title": "related_geographiesArguments",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"level": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Level",
"default": null
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 500
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0
},
"min_weight": {
"type": "number",
"title": "Min Weight",
"default": 0
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}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).
{
"type": "object",
"title": "list_childrenArguments",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"level": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Level",
"default": null
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 200
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}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).
{
"type": "object",
"title": "list_geographiesArguments",
"required": [
"country",
"level"
],
"properties": {
"level": {
"type": "string",
"title": "Level"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 500
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null
},
"country": {
"type": "string",
"title": "Country"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}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.
{
"type": "object",
"title": "nearest_geographiesArguments",
"required": [
"lat",
"lon",
"level"
],
"properties": {
"lat": {
"type": "number",
"title": "Lat"
},
"lon": {
"type": "number",
"title": "Lon"
},
"level": {
"type": "string",
"title": "Level"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 5
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}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.
{
"type": "object",
"title": "data_freshnessArguments",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false
}coverage_summary
What's in the atlas: row counts by country and level, with the vintage of each layer.
{
"type": "object",
"title": "coverage_summaryArguments",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false
}get_boundaries
Polygon boundaries as a GeoJSON FeatureCollection (EPSG:4326, RFC 7946 winding), for drawing dashboard maps. id: the geography to draw, e.g. 'us:county:34013'. children_level: draw everything at that level inside it instead, e.g. every 'precinct' in a county or state, every 'county' in a state, every 'polling_division' in a riding, or every 'precinct' overlapping a congressional district (any share; use related_geographies for shares). detail: 'high' (~10 m), 'medium' (~50 m, default) or 'low' (~200 m). Neighbouring shapes from the same source share identical edges at every detail level. clip_to_land: trim open water (ocean, bays, Great Lakes) using the state/province shoreline outline (default true; inland lakes are not trimmed; shorelines are generalized to ~1:500k, widened ~200 m so land isn't cut); false gives legal extents. include_districts: add each feature's congressional / state senate / state house district holding the largest share of its population. Feature properties: id, level, code, name, parent_id, region, population (2020 Census for precincts and towns, latest estimate for counties and states), vintage and source_id (2020 Census VTDs have source_id 'us-census-vtd-2020'; current precincts don't), shape_source. Small results come back inline as `geojson`. Larger ones are not returned inline (they'd flood the conversation): the hosted service returns a short-lived `download_url` (fetch it with curl into your project); a local server writes the file to its own export folder and returns `file` (copy it into your project). Page big selections with offset/limit (max 5000 features).
{
"type": "object",
"title": "get_boundariesArguments",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 2000
},
"detail": {
"type": "string",
"title": "Detail",
"default": "medium"
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0
},
"clip_to_land": {
"type": "boolean",
"title": "Clip To Land",
"default": true
},
"inline_max_kb": {
"type": "integer",
"title": "Inline Max Kb",
"default": 100
},
"children_level": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Children Level",
"default": null
},
"include_districts": {
"type": "boolean",
"title": "Include Districts",
"default": false
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}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. levels: restrict to some levels (default: all except 'vtd_2020'). If a point is just outside every shape of a level that its state/province has (a pier, a beach, a gap between precinct files), it is matched to the nearest shape of that level in the same state/province within ~1 km and flagged approximate=true with distance_m. not_found lists levels the state/province has data for but no shape here; no_data lists levels with no boundaries there at all (e.g. Nebraska has no state house; Ontario has no provincial polling divisions here).
{
"type": "object",
"title": "locate_pointArguments",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"title": "Lat"
},
"lon": {
"type": "number",
"title": "Lon"
},
"levels": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Levels",
"default": null
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}find_officials
Who represents a place: members of the U.S. House and Senate, state legislators and the mayor, with contacts. Give a geography `id` (a congressional district, state, city 'us:place:...', county, town or ZIP 'us:zcta:...') or a point (`lat`, `lon`; geocode an address first). For a city, county or ZIP that spans several districts, each representative comes with `share` = share of that area's 2020 residents in the district; for an exact answer use a point. Members listed are those serving now (119th Congress, until January 3, 2027); the districts are the 120th Congress maps elected November 3, 2026. In states that redrew for 2026 (AL, CA, FL, LA, NC, OH, TN, TX, UT) a representative's `note` says they were elected under the previous map. A district with no member is vacant. State legislators (state_legislators=True, except for a whole state, where pass it explicitly) come from Open States; members in states that redrew legislative maps for 2026 (MI, MN, MS) carry a similar note. Mayors (local=True) come from Open States (larger cities, while their term runs) or, failing that, Wikidata (one current head of government, in office since 2010; their `note` says to confirm on the city's website). Sources: the @unitedstates congress-legislators dataset (CC0), Open States (public domain), Wikidata (CC0). US only for now.
{
"type": "object",
"title": "find_officialsArguments",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Id",
"default": null
},
"lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Lat",
"default": null
},
"lon": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Lon",
"default": null
},
"local": {
"type": "boolean",
"title": "Local",
"default": true
},
"state_legislators": {
"type": "boolean",
"title": "State Legislators",
"default": true
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}Prompts
0 advertised
Resources
0 advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1247 ms
- 95th percentile latency
- 1247 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1247 ms · metadata changed · 11 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http boundary-atlas-mcp https://atlas-production-d344.up.railway.app/mcpCodex
codex mcp add boundary-atlas-mcp --url https://atlas-production-d344.up.railway.app/mcpCursor
{
"mcpServers": {
"boundary-atlas-mcp": {
"url": "https://atlas-production-d344.up.railway.app/mcp"
}
}
}Cline
{
"mcpServers": {
"boundary-atlas-mcp": {
"type": "streamableHttp",
"url": "https://atlas-production-d344.up.railway.app/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"boundary-atlas-mcp": {
"type": "http",
"url": "https://atlas-production-d344.up.railway.app/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http boundary-atlas-mcp https://atlas-production-d344.up.railway.app/mcpClaude Desktop
https://atlas-production-d344.up.railway.app/mcpWindsurf
{
"mcpServers": {
"boundary-atlas-mcp": {
"serverUrl": "https://atlas-production-d344.up.railway.app/mcp"
}
}
}Let your agent find its tools
Find servers like Boundary Atlas MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.