Skip to main content

PlaceRoot

Ground AI agents in open map data.

PlaceRoot is an MCP server that answers spatial questions from Overture Maps — no API key, no signup, no vendor platform.

  • Answers, not data dumps. Every tool returns compact, ranked results sized for an agent's context window — never a raw GeoJSON dump.
  • Rich, filterable place data. Category, brand, confidence, operating status, contactability — all queryable, sourced from Overture's open dataset (contributed by Meta, Uber, TomTom, and others).
  • Boundary-accurate. Search inside a named place's real administrative polygon, not just a guessed radius circle.
  • Zero setup. Reads Overture's public data directly — nothing to install beyond the server itself, no key, no database.

Quick start

Add to Claude Desktop / Claude Code:

{
  "mcpServers": {
    "placeroot": {
      "command": "uvx",
      "args": ["placeroot"]
    }
  }
}

(npx placeroot also works, if you'd rather use the npm launcher: set "command": "npx".)

Or run it directly:

uvx placeroot             # stdio MCP server
uvx placeroot --http      # HTTP endpoint at http://127.0.0.1:8321/mcp

What it can do

22 tools, all returning compact, budgeted answers. Several single-item tools have a *_batch sibling that collapses many calls into one round-trip.

Tool Answers
find_places Named places near a point or inside a named area / division polygon, nearest first — filter by category, brand, confidence, operating status, or has-website / has-phone
summarize_area What's in an area: total places and top categories
compare_areas 2–5 areas side by side: category mix, density, and what differs most
within_distance Is the nearest matching place within N meters of a point?
distance_matrix Straight-line distances between many origins and destinations at once
place_details One place in full: addresses, contacts, brand, sources, confidence
admin_lookup The admin hierarchy containing a point: neighborhood up to country
summarize_buildings Building stock in an area: count, footprint area, height and use mix
buildings_at Nearest building footprints to a point
land_use_at What kind of land is this: land use and land cover classification at a point
geocode Free-text place name → ranked candidates with coordinates and admin context (geocode_batch for many at once)
resolve_place Free-text place reference → stable ids an agent can hold onto across turns (resolve_place_batch)
reverse_geocode Point → nearest address plus its containing admin areas (reverse_geocode_batch)
search_categories Free text → the right Overture category slug to filter find_places by
isochrone The area reachable within N minutes on foot, bike, or car
route Shortest-path distance and duration between two points, on foot, bike, or car
render_map Any result → a self-contained interactive HTML map
simplify_geometry Any geometry → simplified to fit a token budget
data_version Which Overture release the answers are drawn from

Why

Agents are bad at maps. Existing map tools either require vendor API keys or return payloads far too large for a context window. PlaceRoot's rule: every answer fits in a couple of thousand tokens, and anything bigger comes back as a summary.

A few things that set it apart:

  • Stable place ids. Every place carries its Overture GERS id, so an agent can hold onto a place across turns and look it up again later instead of re-searching.
  • Built-in geocoding. Place-name lookup works out of the box — no third-party geocoding service involved.
  • Fast repeat queries. Frequently used data is cached locally, so repeat questions answer in milliseconds and keep working offline.
  • Self-hostable end to end. Run it locally, serve it over HTTP, or point it at your own copy of the data — no dependency on anyone else's service.

Development

uv sync           # install dev dependencies
uv run pytest     # offline test suite
uv run ruff check .

Docs

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

placeroot-0.5.0.tar.gz (737.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

placeroot-0.5.0-py3-none-any.whl (153.8 kB view details)

Uploaded Python 3

File details

Details for the file placeroot-0.5.0.tar.gz.

File metadata

  • Download URL: placeroot-0.5.0.tar.gz
  • Upload date:
  • Size: 737.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for placeroot-0.5.0.tar.gz
Algorithm Hash digest
SHA256 e097fde36a445b5a5971d677e8e8a10626862d62a168801c63a249f41bc79f86
MD5 075a3337d7d449e80cb180aacdf0038f
BLAKE2b-256 49bdc09bcb4e126642703a76bb2b621a5238202cbb5e145242dad3880f2c2d02

See more details on using hashes here.

Provenance

The following attestation bundles were made for placeroot-0.5.0.tar.gz:

Publisher: release.yml on chuofringer/placeroot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file placeroot-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: placeroot-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 153.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for placeroot-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 beec4b07adba5dfd02171d705249e3aeb09e8e39a7168997edd4cf062f6e3e72
MD5 2381bdd0c568ae1e6de31173290f1eb1
BLAKE2b-256 14009e021bbd86975bc7cdc3786e0f2206b5a2ca87da8a4179bfc658b6fd307d

See more details on using hashes here.

Provenance

The following attestation bundles were made for placeroot-0.5.0-py3-none-any.whl:

Publisher: release.yml on chuofringer/placeroot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page