Maps MCP

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.

System collections

slugnamelevelshapesversions
us-cd119 US Congressional Districts (119th) cd 441 1
us-counties US Counties county 3,235 1
us-states US States state 56 1

Get an API key

Connect your client

Once you have a key, paste one of these snippets into your MCP client of choice. The server URL is https://mapsmcp.com/mcp.

Claude Desktop / Cursor / Claude Code
{
  "mcpServers": {
    "shapes": {
      "url": "https://mapsmcp.com/mcp",
      "transport": "http",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}
Anthropic SDK (Managed Agents)
mcp_servers: [{
  type: "url",
  url: "https://mapsmcp.com/mcp",
  authorization_token: "YOUR_API_KEY",
  name: "shapes"
}]
Raw curl (sanity check the URL works)
curl -sS -X POST https://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"}'

Tools you can call (22)

toolsummary
list_shape_collectionsBrowse globally-shared shape collections (states, counties, CDs, …).
create_shape_collectionAdd a new collection. Becomes globally readable; you're recorded as creator.
list_shape_versionsList versions of a collection (e.g. tiger-2024).
upload_shape_versionAdd a new version from GeoJSON or a base64-zipped shapefile.
compare_shape_versionsDiff two versions: added / removed / changed shapes.
list_shapesList individual shapes in a version, filterable by name or external_id.
lookup_shape_at_pointReverse-geocode a longitude/latitude to a shape.
query_shapes_by_intersectionFind shapes intersecting / within / containing a GeoJSON geometry.
ingest_datasetUpload tabular records and auto-match to shapes (external_id / name / point).
list_datasetsList your workspace's datasets.
get_dataset_recordsInspect joined records, filter by matched/unmatched.
build_geojsonRender a FeatureCollection joining one or more datasets onto a version.
compute_dataset_statsPer-shape numeric aggregation + optional class breaks for choropleths.
create_reportSave a report config; set public:true to make it viewable at /v/<slug>.
list_reportsList your workspace's reports.
get_reportFetch a single report by slug or id.
ingest_538_resultsCurated: 538 election results (state + CD level, 1998–present).
ingest_county_presCurated: county-level presidential, 2016 / 2020 / 2024.
ingest_nyt_precincts_2024Curated: NYT 2024 presidential precinct map, rolled up to counties.
submit_ticketSubmit a bug, feature request, or question to the Maps MCP team.
list_my_ticketsList your workspace's tickets and any team responses.
get_ticketFetch a single ticket by id.

Already have a key?

Visit /dashboard to see your workspace's datasets, reports, and API keys. Paste your key once; it stays in your tab's sessionStorage.

Public report examples

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: