geo-mcp
The geo-mcp server provides OSM-backed multimodal (walk + transit) navigation and geospatial tools for LLM applications without proprietary map APIs.
Geocoding & Reverse Geocoding: Convert place names/addresses to coordinates (
geocode) and coordinates to human-readable locations (reverse_geocode).Multimodal Route Planning: Plan walk + transit routes with adaptive strategies (A* for short trips, hierarchical transit-skeleton for longer journeys) and optional deferred processing (
plan_route).Area Loading & Caching: Load and cache OSM walk and transit graph data for a place or bounding box, enabling offline/local processing and faster queries (
load_area).Points of Interest Discovery: Find nearby OSM POIs such as cafes, pharmacies, and parks by category and radius (
find_nearby).Transit Options Lookup: List nearby transit stops and the lines serving them (
list_transit_options).Area Description: Get a structured summary of an area's major roads, neighborhoods, and landmarks for geographic context (
describe_area).Network Snapping: Snap coordinates to the nearest graph node (intersection or transit stop) for precise routing (
snap_to_network).Asynchronous Job Management: Submit, check, cancel, and list background jobs for long routing tasks (
submit_route,get_job,cancel_job,list_jobs).Offline Operation & Resilient Data Handling: Operate offline after initial OSM ingestion; uses retries, circuit breakers, and deadlines for online operations.
Provides tools for geocoding, routing, and exploring points of interest using OpenStreetMap data, enabling multimodal (walking and transit) navigation.
Click on "Install 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., "@geo-mcpPlan a walking route from Central Park to Times Square"
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.
geo-mcp
OSM-backed multimodal (walk + transit) navigation MCP server. Gives LLM apps structured routing and geo tools for any distance — neighborhood walks to cross-city transit — without proprietary map APIs.
Features
Offline / local PBF: download a Geofabrik extract once (
geo-mcp ingest), then route without OverpassDistance-adaptive routing: local multimodal A* for short trips; hierarchical transit-skeleton + walk access/egress for long ones
Tiled parallel loads: walk/transit graphs from local clips or Overpass tiles
Deferred jobs + progress: long routes can return
job_id; poll withget_jobResilient OSM I/O: retries, circuit breakers, deadlines (online mode)
Transports: stdio (default) and optional Streamable HTTP
Related MCP server: Geo MCP Worker
Tools
Tool | Purpose |
| Place ↔ coordinates |
| Adaptive multimodal route (optional |
| Always-background route job |
| Job lifecycle |
| Prefetch tiles for explore/ |
| Nearby OSM POIs |
| Nearby stops and lines |
| Major roads, neighborhoods, landmarks |
| Nearest graph node (auto-loads a local tile if needed) |
Requirements
Python 3.14+
For offline clipping: osmium-tool (
brew install osmium-tool)
Install
cd /path/to/geo-mcp
uv sync
brew install osmium-tool # once, for offline bbox extractsOffline mode (recommended)
Download once, then never hit Overpass for routing:
# ~300–400 MB for Île-de-france
uv run geo-mcp ingest --region ile-de-france
uv run geo-mcp status
# Serve MCP offline
GEO_MCP_OFFLINE=true uv run geo-mcpCursor env example: set GEO_MCP_OFFLINE=true and GEO_MCP_PBF_REGION=ile-de-france. Other regions: berlin, greater-london, france. Or pass --url for any .osm.pbf.
Run
# Cursor / Claude Desktop (stdio)
uv run geo-mcp
# Optional Streamable HTTP
uv run geo-mcp --transport streamable-http --host 127.0.0.1 --port 8000
# Verbose logs
uv run geo-mcp --log-level INFOCursor config
{
"mcpServers": {
"geo-mcp": {
"command": "uv",
"args": [
"--directory",
"/path/to/geo-mcp",
"run",
"geo-mcp"
],
"env": {
"PYTHONWARNINGS": "ignore"
}
}
}
}Suggested agent flow
geocodeorigin and destinationplan_routewith coordinates (no priorload_arearequired)If the response has
job_id, pollget_jobuntilstatusiscompleted(orfailed)Optionally
describe_area/find_nearbyafter a localload_area
Tests
uv run pytestLive OSM smoke (needs network):
uv run python scripts/smoke_route.pyConfiguration
Environment variables use the GEO_MCP_ prefix. Important knobs:
Variable | Default | Meaning |
|
| Never call Overpass; require local PBF/cache |
|
| Geofabrik region for ingest |
| — | Explicit path to |
|
| Use local PBF when present |
|
| Below this → local A*; above → hierarchical |
|
| Access/egress stop search radius |
|
| Walk tile grid size (~1 km) |
|
| Parallel tile workers |
|
| Soft sync budget (long trips auto-defer) |
|
| Hard deadline per route/load |
|
| Retries per Overpass endpoint |
|
| Disk graph cache |
Architecture
src/geo_mcp/
domain/ # geo, network, pathfinding, hierarchical router
application/ # use cases, job service, DTOs
infrastructure/
resilience/ # retry, circuit breaker, deadline
graph/ # disk cache + tile store
osm/ # Nominatim, Overpass, OSMnx repository
interfaces/mcp/ # FastMCP tools (+ progress)Limits
Transit uses OSM topology and heuristic speeds (not GTFS realtime schedules)
Hierarchical routing stitches transit with walk tiles / geodesic walk fallbacks at the ends
First fetch for uncached tiles still depends on Overpass/OSMnx latency
Attribution & policy
Map data © OpenStreetMap contributors
Respect Nominatim usage policy and Overpass etiquette
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceA comprehensive MCP server providing 30 tools for geocoding, routing, and OpenStreetMap data analysis. It enables AI assistants to search for locations, calculate travel routes, and perform quality assurance checks on map data.303MIT
- 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.1GPL 3.0
- AlicenseAqualityCmaintenanceAn MCP server that provides live geospatial data such as geocoding, POI search, isochrones, and area density from open data sources to LLM clients like Claude, Cursor, or Claude Code.6MIT
- AlicenseAqualityCmaintenanceAn OpenStreetMap MCP server that provides location-based services including geocoding, route directions, points of interest search, and neighborhood analysis to enhance LLMs with geospatial capabilities.12MIT
Related MCP Connectors
MCP server for Japan geodata: cadastral lot numbers (chiban) and reverse geocoding, for AI agents.
MCP server for Mireye Earth — federal-source-cited geospatial data for any MCP-aware agent.
OpenStreetMap Overpass MCP — programmatic queries against the OSM database
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/FaresKi/geo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server