PlaceRoot

Keyless MCP server for spatial questions over Overture Maps open data — places, geocoding, routing — token-budgeted answers, no API key.

Documentation

PlaceRoot — Ask about anywhere. Get a real answer. Open map data for your AI — free, no account, no API key.

Quick start · Tools · Reference · Benchmarks · Website

CI PyPI npm Python versions License: MIT

PlaceRoot grounds AI agents in open map data. It's an MCP server that answers spatial questions — what's nearby, what's in this neighborhood, how do I get there — from Overture Maps open data. 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.
  • 🗺️ Real routing, zero keys. route and isochrone walk an actual street graph built from Overture's transportation segments — not a straight-line guess — anywhere on Earth.
  • 🏙️ Rich, filterable place data. Category, brand, confidence, operating status, contactability — 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 a guessed radius circle.
  • Zero setup. Reads Overture's public data directly — no key, no database, nothing to install beyond the server itself.

Quick start

Run it straight from PyPI or npm — no install step:

uvx placeroot             # stdio MCP server
uvx placeroot --http      # HTTP endpoint at http://127.0.0.1:8321/mcp
Add to Claude Code
claude mcp add placeroot -- uvx placeroot
Add to Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "placeroot": {
      "command": "uvx",
      "args": ["placeroot"]
    }
  }
}
Add to Cursor / other MCP clients

Same config as above wherever your client keeps its MCP server list. Prefer npm? Use "command": "npx", "args": ["placeroot"].

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

Then ask your agent something spatial:

"What's around downtown Palo Alto?" · "Compare these two neighborhoods for a bike shop." · "Plan my errands: pharmacy, hardware store, post office."

What it can do

29 tools, grouped into four families — every answer fits in a couple of thousand tokens:

FamilyToolsAnswers questions like
🔍 Search & identifyfind_places, geocode, reverse_geocode, place_details, search_categories, …What cafés are near this point? What's at this address?
📊 Area analysissummarize_area, compare_areas, summarize_buildings, land_use_at, …What's in this neighborhood, and how does it differ from that one?
🚴 Routingroute, isochrone, optimize_route, places_along_route, distance_matrixHow far by bike? What's reachable in 15 minutes? Best order for 6 stops?
🗺️ Geometry & mapsrender_map, simplify_geometryShow me this result as an interactive map

It also ships three workflow prompts (site selection, neighborhood comparison, errand planning) and two attachable resources — and a PLACEROOT_TOOLS setting to load only the tool profiles you need, cutting schema overhead by up to 96%.

📚 Full tool catalog, prompts, resources & configuration → docs/REFERENCE.md

[!NOTE] Open data has honest limits: no live traffic, no opening hours, no ratings or photos — what PlaceRoot deliberately doesn't do. For everything else about where things are and what's reachable from them, it answers without a key.

Why PlaceRoot

It's the only keyless MCP server doing real graph routing over global open map data — with every tool declaring proper MCP annotations so clients know which calls are read-only before prompting you. Stable GERS ids let agents hold onto places across turns; local caching makes repeat queries answer in milliseconds and keeps working offline; and the whole thing is self-hostable end to end.

How it stacks up against Mapbox MCP and Google Maps MCP: head-to-head benchmarks · token-efficiency numbers.

Recreation places

Overture's places theme is derived from business listings, which makes it strong on businesses and thin on the places a family goes on a Saturday — playgrounds, neighbourhood parks, dog parks, beaches. Those features aren't missing from Overture, though; they're in a different theme. Overture's base theme is a direct conflation of OpenStreetMap, and PlaceRoot already queries it for land_use_at and infrastructure_at. The places tools read it too, by default.

Nothing is downloaded, built, or hosted — it's one more live scan of the same public Overture release, and it roughly 2.5xes playground coverage (1,552 vs 674 across New York City in release 2026-07-22.0, with 1,013 of them more than 150 m from any places-theme playground). Every places tool answers from both at once, with no other change: same tools, same response shape, same category filters.

The cost is a second dataset scan per places query (cached like everything else), and these rows carry no confidence or operating_status and are often unnamed — an unnamed playground comes back with name: null rather than being dropped. If you'd rather have the latency than the coverage:

export PLACEROOT_RECREATION_LAYER=0

data_version reports the layer whenever it's active. Full details, including why live Overpass queries and raw OSM Parquet were measured and rejected: docs/RECREATION.md.

Development

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

See CONTRIBUTING.md for dev setup, design rules, and how to propose a tool. Other docs: CHANGELOG · SECURITY · publishing · website · running a data mirror · the recreation layer

Contact

hello@placeroot.dev

Privacy Policy

PlaceRoot runs on your machine — no account, no API key, no sign-up. It has no telemetry and sends nothing to us; the only network traffic is your own queries going straight to Overture Maps' public data on AWS S3 (or a mirror you configure). Full details: placeroot.dev/privacy.html.

License and attribution

The code is MIT. The data it queries is the Overture Maps public release, licensed per theme — places under CDLA-Permissive-2.0; the OSM-derived themes (divisions, transportation, base) under ODbL, which asks for attribution on anything user-facing you build from them:

© Overture Maps Foundation · © OpenStreetMap contributors (ODbL)

Per-theme obligations: docs/DATA-LICENSE.md.

PlaceRoot logo mark

mcp-name: io.github.chuofringer/placeroot