Overture Maps MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Overture Maps MCP Server What is the land use composition in downtown Austin?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Overture Maps MCP Server
An open-source MCP server that exposes Overture Maps data as spatial analytics tools for AI agents.
What This Does
AI agents need geospatial intelligence. This server gives them direct access to Overture Maps data through clean, composable tool primitives.
Ask questions like:
"What percentage of buildings within 1km are residential vs commercial?"
"What's the land use composition — residential, industrial, or mixed-use?"
"How does cafe density compare between two potential retail locations?"
Related MCP server: @terranode-co/mcp-server
How It Fits in the Agent Stack
+---------------------------------------------------+
| AI Agent (Claude, Mistral, etc.) |
+-----------------+---------------------------------+
| Geocoding / | Overture Maps MCP |
| Routing / | ---------------------- |
| Display MCP | Place analytics |
| -------------- | Building composition |
| Geocoding | Admin boundary lookups |
| Routing | Transportation analysis |
| Directions | Land use classification |
| ETA | Category discovery |
| Map display | |
+-----------------+---------------------------------+Overture MCP handles spatial analytics that need direct data access. Geocoding/Routing/Display MCPs handle geocoding, routing, directions, and map display via APIs.
They're complementary — use them together for a complete geospatial agent.
Available Tools (V1)
Tool | Theme | What It Does |
| Places | Search Overture's place category taxonomy |
| Places | Find all places matching a category within a radius |
| Places | Find the single closest place of a given type |
| Places | Count places of a category in an area |
| Buildings | Count buildings in an area |
| Buildings | Get % breakdown of building types |
| Divisions | Find what country/region/city contains a point |
| Transportation | Count road segments by class in an area |
| Transportation | Find the closest road of a given class |
| Transportation | Get % breakdown of road surface types |
| Land Use | Determine land use designation at a point |
| Land Use | Get % breakdown of land use types in an area |
| Land Use | Find land use parcels of a specific subtype |
The server also supports a progressive disclosure mode (TOOL_MODE=progressive) that exposes 3 meta-tools instead of 13 individual tools — useful when running alongside many other MCPs where context overhead matters. See docs/TOOLS.md for details.
See docs/OPERATIONS.md for full parameter and response specifications.
Quick Start
Prerequisites
Python 3.10+
An MCP-compatible AI agent (Claude Desktop, Claude Code, etc.)
Install from Source
git clone https://github.com/your-username/overture-mcp-server.git
cd overture-mcp-server
pip install -e .Run Locally (stdio transport)
# stdio is default — no API key needed for local use
python -m overture_mcp.server
# or via the CLI entry point
overture-mcp-serverRun as Hosted Server (SSE transport)
export OVERTURE_API_KEY="your-api-key"
export TRANSPORT=sse
python -m overture_mcp.server
# Server starts on http://0.0.0.0:8000Connect from Claude Desktop
Local (stdio): Add to your Claude Desktop MCP config (claude_desktop_config.json):
{
"mcpServers": {
"overture-maps": {
"command": "python",
"args": ["-m", "overture_mcp.server"]
}
}
}Remote (SSE): Connect to a hosted instance:
{
"mcpServers": {
"overture-maps": {
"url": "http://localhost:8000/sse",
"headers": {
"Authorization": "Bearer your-api-key"
}
}
}
}Example Agent Interaction
User: "Compare cafe density near two potential retail locations in Amsterdam"
Agent:
1. Calls Geocoding MCP -> geocode("Leidseplein, Amsterdam") -> (52.3636, 4.8828)
2. Calls Geocoding MCP -> geocode("De Pijp, Amsterdam") -> (52.3509, 4.8936)
3. Calls Overture MCP -> get_place_categories({query: "cafe"})
4. Calls Overture MCP -> count_places_by_type_in_radius(
{lat: 52.3636, lng: 4.8828, radius_m: 500, category: "cafe"}) -> 12
5. Calls Overture MCP -> count_places_by_type_in_radius(
{lat: 52.3509, lng: 4.8936, radius_m: 500, category: "cafe"}) -> 7
6. Returns: "Leidseplein has 12 cafes within 500m vs 7 in De Pijp..."Architecture
Runtime: Python + FastMCP
Database: DuckDB (in-process) with Spatial extension
Data: Overture Maps GeoParquet on S3 (queried directly, no data copying)
Auth: Bearer token via
Authorizationheader (HTTP/SSE transports)Transports: stdio (local, default), SSE (hosted), Streamable HTTP (hosted)
Hosting: Railway, Docker, or any container platform
Tool modes: Direct (default, 13 tools) or progressive (3 meta-tools)
See ARCHITECTURE.md for full technical details and design decisions.
Data Source
This server queries Overture Maps data directly from S3.
Current release: 2026-01-21.0
Update frequency: Quarterly
License: Overture Maps data is available under ODbL and CDLA Permissive 2.0
Coverage: Global, with varying completeness by region
No AWS credentials needed — the Overture S3 bucket is publicly accessible
Environment Variables
Variable | Required | Default | Description |
| For SSE/HTTP | — | Bearer token for client auth |
| No |
|
|
| No |
|
|
| No |
| Overture release version |
| No |
| DuckDB concurrency limit |
| No |
| Safety cap on radius (meters) |
| No |
| Server port (SSE/HTTP only) |
| No |
| Server host (SSE/HTTP only) |
Documentation
ARCHITECTURE.md — Technical architecture and all design decisions
docs/TOOLS.md — MCP tool specifications
docs/OPERATIONS.md — Operation catalog with full specs
docs/DATA_MODEL.md — Overture schema reference
docs/DEPLOYMENT.md — Railway deployment guide
Contributing
Contributions welcome! Please read the architecture doc first to understand design decisions.
# Clone and set up dev environment
git clone https://github.com/your-username/overture-mcp-server.git
cd overture-mcp-server
pip install -e ".[dev]"
# Run tests (no S3 access needed)
pytest tests/ -m "not s3"
# Run full test suite
pytest tests/License
MIT
Available Tools
13 toolsbuilding_class_compositionC
Get the percentage breakdown of building types within a radius
Inputs: lat (required), lng (required), radius_m (required). Returns: result
building_count_in_radiusB
Count total buildings within a radius of a point
Inputs: lat (required), lng (required), radius_m (required). Returns: result
count_places_by_type_in_radiusA
Count how many places of a category exist within a radius
Inputs: lat (required), lng (required), category (required), radius_m (required). Returns: result
get_place_categoriesA
Search and browse the Overture Maps place category taxonomy
Inputs: query. Returns: result
land_use_at_pointC
Determine the land use designation at a specific point
Inputs: lat (required), lng (required). Returns: result
land_use_compositionB
Get the percentage breakdown of land use types within a radius
Inputs: lat (required), lng (required), radius_m (required). Returns: result
land_use_searchC
Find land use parcels of a specific subtype within a radius
Inputs: lat (required), lng (required), subtype (required), radius_m (required), +2 more. Returns: result
nearest_place_of_typeB
Find the single closest place of a given type to a point
Inputs: lat (required), lng (required), category (required), max_radius_m, +1 more. Returns: result
nearest_road_of_classC
Find the single closest road segment of a given class to a point
Inputs: lat (required), lng (required), road_class (required), max_radius_m, +1 more. Returns: result
places_in_radiusB
Find all places matching a category within a radius of a point
Inputs: lat (required), lng (required), category (required), radius_m (required), +2 more. Returns: result
point_in_admin_boundaryB
Determine what administrative boundaries contain a given point
Inputs: lat (required), lng (required). Returns: result
road_count_by_classB
Count road segments by class within a radius of a point
Inputs: lat (required), lng (required), radius_m (required). Returns: result
road_surface_compositionA
Get the percentage breakdown of road surface types within a radius
Inputs: lat (required), lng (required), radius_m (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Each tool targets a distinct combination of data type and operation. Place queries separate count, nearest, and all-in-radius; building, road, and land use tools likewise have unique analytical purposes. No two tools overlap in function.
Snake_case is used throughout, and names are generally descriptive. However, some tools begin with verbs (get_, count_) while others use noun phrases (places_in_radius, building_class_composition), making the pattern not fully uniform. Within each data type, naming is predictable.
13 tools is well-scoped for a geospatial server covering places, buildings, roads, land use, and administrative boundaries. Each tool has a clear purpose and the count feels neither sparse nor excessive.
The set provides comprehensive read-only coverage of Overture Maps data themes: place category browsing and spatial queries, building aggregates, road analysis, land use queries, and boundary containment. All typical geospatial analytics are supported, with no obvious dead ends.
Maintenance
Related MCP Connectors
Geospatial AI MCP server — satellite imagery, embeddings, weather, GNS governance
MCP server for Japan geodata: cadastral lot numbers (chiban) and reverse geocoding, for AI agents.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA geospatial MCP server that provides tools for geocoding, routing, elevation profiles, and spatial analysis. It enables AI agents to process GIS file formats like GeoJSON and Shapefiles while performing complex coordinate transformations and distance calculations.4MIT
- AlicenseAqualityDmaintenanceMCP server for spatial queries via the Terranode Geospatial API, enabling AI agents to perform point-in-polygon lookups, nearest feature search, distance calculations, and spatial joins.655 npmMIT
- AlicenseNot gradedqualityBmaintenanceFree geospatial MCP server for AI agents, providing geocoding, reverse geocoding, POI search, and route planning using OpenStreetMap data via Nominatim, Overpass, and OSRM.GPL 3.0
- AlicenseNot gradedqualityAmaintenanceAn MCP server that connects AI agents to cloud-native geospatial data via STAC metadata and DuckDB with H3 spatial indexing, enabling zero-configuration SQL queries on terabyte-scale datasets over S3.22BSD 3-Clause