Versioned shapefiles + dataset joins as an MCP server. Bring your data, we handle geography.
An MCP server that lets your agent (Claude Desktop, Cursor, an Anthropic SDK app, …) work with U.S. political and demographic geography. The shape collections below are globally readable; the data you ingest stays in your workspace.
| slug | name | level | shapes | versions |
|---|---|---|---|---|
us-precincts-2024 |
U.S. Precincts (2024) | precinct | 327,850 | 51 |
us-cd113 |
US Congressional Districts (113th) | cd | 441 | 1 |
us-cd114 |
US Congressional Districts (114th) | cd | 441 | 1 |
us-cd115 |
US Congressional Districts (115th) | cd | 441 | 1 |
us-cd116 |
US Congressional Districts (116th) | cd | 441 | 1 |
us-cd118 |
US Congressional Districts (118th) | cd | 441 | 1 |
us-cd119 |
US Congressional Districts (119th) | cd | 441 | 1 |
us-counties |
US Counties | county | 3,235 | 1 |
us-sldl |
US State Legislative Districts (Lower) | sld | 4,879 | 1 |
us-sldu |
US State Legislative Districts (Upper) | sld | 1,964 | 1 |
us-states |
US States | state | 56 | 1 |
Once you have a key, paste one of these snippets into your MCP client of choice. The server URL is https://www.mapsmcp.com/mcp.
{
"mcpServers": {
"shapes": {
"url": "https://www.mapsmcp.com/mcp",
"transport": "http",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
mcp_servers: [{
type: "url",
url: "https://www.mapsmcp.com/mcp",
authorization_token: "YOUR_API_KEY",
name: "shapes"
}]
curl -sS -X POST https://www.mapsmcp.com/mcp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
| tool | summary |
|---|---|
list_shape_collections | Browse globally-shared shape collections (states, counties, CDs, …). |
create_shape_collection | Add a new collection. Becomes globally readable; you're recorded as creator. |
list_shape_versions | List versions of a collection (e.g. tiger-2024). |
upload_shape_version | Add a new version from GeoJSON or a base64-zipped shapefile. |
compare_shape_versions | Diff two versions: added / removed / changed shapes. |
list_shapes | List individual shapes in a version, filterable by name or external_id. |
adjacent_shapes | Find shapes that share a boundary with a target (PostGIS ST_Touches) — coalition / neighbor queries. |
shapes_within_radius | Find shapes within N meters of a longitude/latitude point — event/venue catchment. |
lookup_shape_at_point | Reverse-geocode a longitude/latitude to a shape. |
query_shapes_by_intersection | Find shapes intersecting / within / containing a GeoJSON geometry. |
ingest_dataset | Upload tabular records and auto-match to shapes (external_id / name / point). |
list_datasets | List your workspace's datasets. |
get_dataset_records | Inspect joined records, filter by matched/unmatched. |
summarize_dataset_matches | Match-quality report: confidence histogram, unmatched samples, version coverage, duplicate joins. |
compute_dataset_freshness | Freshness signal: dataset age vs. latest source archive — tells you when to re-ingest. |
lock_dataset | One-way privacy lock: locked datasets cannot back a public report. |
lock_report | One-way privacy lock: locked reports reject any flip to public. |
set_workspace_default_privacy_locked | Toggle workspace-wide default: new datasets/reports are privacy_locked at creation. |
list_admin_access_log | Receipts of operator (Maps MCP team) reads of resources in your workspace. |
export_workspace | Lock-in protection: dump every dataset, record, report, and ticket as portable JSON. |
get_quota | Per-workspace resource counts + recent API-key activity. |
build_geojson | Render a FeatureCollection joining one or more datasets onto a version. |
compute_dataset_stats | Per-shape numeric aggregation + optional class breaks for choropleths. |
create_report | Save a report config; set public:true to make it viewable at /v/<slug>. |
list_reports | List your workspace's reports. |
get_report | Fetch a single report by slug or id. |
ingest_538_results | Curated: 538 election results (state + CD level, 1998–present). |
ingest_county_pres | Curated: county-level presidential, 2016 / 2020 / 2024. |
ingest_nyt_precincts_2024 | Curated: NYT 2024 presidential precinct map, rolled up to counties. |
ingest_cook_pvi | Cook PVI per district, joined to cd113-cd119 by Congress number. |
ingest_voteview | DW-NOMINATE per member from Voteview, joined to House CDs or to states for Senators. |
ingest_dime | DIME (Bonica) candidate-level CF scores, aggregated to congressional districts. |
set_workspace_kek | Declare your AWS KMS / Vault / GCP KMS key reference for upcoming envelope encryption. |
get_workspace_kek | Read your workspace's declared KEK reference. |
clear_workspace_kek | Remove the workspace's declared KEK reference. |
register_runner | Pre-register a self-hosted runner; reserves cert pin + identity ahead of dispatch. |
list_runners | List runners registered for the current workspace. |
decommission_runner | Mark a runner decommissioned; future dispatch refuses it. |
lookup_district_for_address | Geocode a free-form address (Census) and resolve the containing shape. |
bulk_match_addresses | Vectorized address → shape resolution for contact / donor imports (≤10k per call). |
submit_ticket | Submit a bug, feature request, or question to the Maps MCP team. |
list_my_tickets | List your workspace's tickets with comment counts + latest-author signal. |
get_ticket | Fetch a single ticket with the full conversation thread. |
reply_to_ticket | Append a reply to your own ticket; re-opens resolved/needs_info threads. |
share_ticket_with_admin | Toggle admin visibility on a ticket. Private tickets are invisible to operators. |
Visit /dashboard to see your workspace's datasets, reports, and API keys. Paste your key once; it stays in your tab's sessionStorage.
Reports your workspace creates with public: true are viewable at /v/<slug>. Drop /embed/<slug> in an iframe for a chrome-free embed. Live demos:
/v/house-119/v/us-precincts-2024/v/tx-precincts-2024/v/nv-precincts-2024/v/us-counties-2024-turnout/v/house-119-by-party/v/pres-counties-multi/v/house-2024-winner/v/pres-2020-counties/v/pres-2016-counties/v/pres-2024-counties/v/house-2024-margin