npm placerootstdioupdated 12d ago
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.
O que dá para fazer com PlaceRoot?
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.
An independent project by vibemapper.
- 🎯 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.
routeandisochronewalk an actual street graph built from Overture's transportation segments — not a straight-line guess — anywhere on Earth. - 🚶 Reachability-filtered search.
find_places(..., within={"minutes": 15, "mode": "walk"})keeps only results truly inside the street-graph walk/cycle/driveshed — not a radius that guesses at it, and not a second call to intersect a polygon yourself. - 🏙️ 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
claude mcp add placeroot -- uvx placeroot
Add to your claude_desktop_config.json:
{
"mcpServers": {
"placeroot": {
"command": "uvx",
"args": ["placeroot"]
}
}
}
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
44 tools, grouped into four families — every answer fits in a couple of thousand tokens:
| Family | Tools | Answers questions like |
|---|---|---|
| 🔍 Search & identify | find_places, find_near, geocode, reverse_geocode, place_details, search_categories, warmup_city, … |
What cafés are near this point? Coffee near the Eiffel Tower? |
| 📊 Area analysis | summarize_area, compare_areas, neighborhood_verdict, summarize_buildings, land_use_at, … |
What's in this neighborhood, should I live here, and how does it differ from that one? |
| 🚴 Routing | route, from_to, isochrone, optimize_route, places_along_route, distance_matrix, travel_time_matrix, map_match |
How far to walk from A to B? What's reachable in 15 minutes? Best order for 6 stops? Which streets did this GPS trace actually take? |
| 🗺️ Geometry & maps | render_map, simplify_geometry |
Show me this result as an interactive map |
It also ships seven workflow prompts (site selection, neighborhood comparison, errand planning, should I live here, get to know my city, verify listing claims, plan area visit) and three attachable resources — and a PLACEROOT_TOOLS setting to load only the tool profiles you need, cutting schema overhead by up to 95%.
📚 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
Developed by vibemapper.
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.
mcp-name: io.github.chuofringer/placeroot
Instalação
Adicione PlaceRoot ao seu cliente. Escolha o que você usa.
claude mcp add placeroot -- npx -y placerootcodex mcp add placeroot -- npx -y placerootamp mcp add placeroot -- npx -y placeroot{
"mcpServers": {
"placeroot": {
"command": "npx",
"args": [
"-y",
"placeroot"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"placeroot": {
"command": "npx",
"args": [
"-y",
"placeroot"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"placeroot","command":"npx","args":["-y","placeroot"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"placeroot": {
"command": "npx",
"args": [
"-y",
"placeroot"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"placeroot": {
"command": "npx",
"args": [
"-y",
"placeroot"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"placeroot": {
"command": "npx",
"args": [
"-y",
"placeroot"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"placeroot": {
"type": "local",
"command": "npx",
"args": [
"-y",
"placeroot"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"placeroot": {
"command": {
"path": "npx",
"args": [
"-y",
"placeroot"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y placerootRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
Pontuação
39 / 100
Incompleta
- Documentação25/25
- Manutenção25/25
- Confiança6/20
- Capacidade0/15
- Instalação12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 5 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Histórico de versões
| Versões | Publicada |
|---|---|
| 0.10.0Mais recente | 27 de ago. de 2026 |
| 0.9.9 | 23 de ago. de 2026 |
| 0.9.8 | 23 de ago. de 2026 |
| 0.9.7 | 15 de ago. de 2026 |
| 0.9.6 | 14 de ago. de 2026 |