Install
$ agentstack add mcp-tabibhasann-geo-mcp ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
mcp-geo
A geospatial MCP server that gives agents dependable GIS tools: geocoding, routing, OpenStreetMap queries, geometry operations, file inspection, raster sampling, elevation, isochrones, static maps, and workspace storage.
[](https://pypi.org/project/mcp-geo/) [](https://github.com/tabibhasann/geo-mcp/actions/workflows/ci.yml) [](https://github.com/tabibhasann/geo-mcp/actions) [](LICENSE) [](https://www.python.org/)
Demo: Interactive demo: https://tabibhasann.github.io/geo-mcp/
+-------------------+
Natural-language | mcp-geo | Deterministic
agent request -----> | 44 MCP tools | ---> geospatial results
(Claude, Cursor, ...) | 12 categories | + rendered maps
+-------------------+
Why it exists
Geospatial work usually requires several specialized libraries and services. mcp-geo packages common GIS operations behind stable MCP tools so an agent can compose real spatial workflows instead of generating one-off scripts.
How it compares
| Tool | Tools count | Geocoding | Routing | OSM | Elevation | Isochrones | Raster | Static maps | File I/O | Self-hostable | |---|---|---|---|---|---|---|---|---|---|---| | mcp-geo | 44 | ✅ Nominatim | ✅ OSRM | ✅ Overpass | ✅ Open-Elevation | ✅ ORS | ✅ rasterio | ✅ matplotlib | ✅ pyogrio | ✅ all providers | | gis-mcp | ~15 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | partial | | CARTO MCP | ~10 | ✅ CARTO | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ SaaS only | | Felt MCP | ~8 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ SaaS only |
mcp-geo is the most comprehensive open-source MCP server for GIS — from geocoding to raster sampling to static map rendering — in a single package. Unlike CARTO and Felt, it requires no API keys for core functionality and can be fully self-hosted.
Example workflow:
geocodea place such as "Buriganga River, Dhaka".bufferthe returned point by 2 km.osm_featuresfor{"amenity": "hospital"}inside that area.distanceornearest_neighborto rank the results.static_maporsave_mapto create a visual preview.
Installation
pip install mcp-geo
For local GIS files:
pip install "mcp-geo[files,raster,visual]"
MCP client config
{
"mcpServers": {
"geo": {
"command": "uvx",
"args": ["mcp-geo"]
}
}
}
The default transport is stdio. HTTP and SSE are also available:
mcp-geo --http --host 127.0.0.1 --port 8000
mcp-geo --sse --host 127.0.0.1 --port 8000
Check provider connectivity and configuration:
mcp-geo doctor
Tools
Geometry
buffer, distance, area, length, centroid, simplify, convex_hull, bbox, spatial_predicate, transform_crs, validate_geojson
Geocoding and OSM
geocode, reverse_geocode, build_overpass_query, osm_features, overpass_query
Routing, elevation, and accessibility
route, route_matrix, nearest_road, elevation, elevation_profile, isochrone
Files and rasters
vector_info, vector_read, raster_info, zonal_stats, sample_raster
Advanced workflows
build_spatial_index, spatial_query, spatial_join, cached_geocode, batch_geocode, nearest_neighbor, repair_geometry, validate_geometry
Workspace and visualization
workspace_store, workspace_get, workspace_list, workspace_clear, workspace_rename, static_map, save_map, suggest_tools, list_all_tools
Example: MCP tool call
// Agent calls: geocode("Brandenburg Gate, Berlin")
// Server returns:
[
{
"lat": 52.5163,
"lon": 13.3777,
"display_name": "Brandenburg Gate, Berlin, Germany",
"type": "tourism",
"importance": 0.8
}
]
// Agent chains: buffer(point, distance_m=1000)
// Server returns:
{
"type": "Polygon",
"coordinates": [[[13.3689, 52.5074], ...]]
}
Examples
End-to-end workflows and example agent prompts are in [EXAMPLES.md](EXAMPLES.md). Highlights:
- Hospital search around the Buriganga river
- 15-minute drive-time isochrone + restaurant search
- Elevation profile for a hike
- Local GeoPackage inspection
- Raster sampling and zonal stats
- Accelerated spatial queries over large collections
Service usage policies
The default providers are free public services with usage policies:
- Nominatim: Max 1 request/second, requires a valid User-Agent. See Nominatim Usage Policy.
- OSRM: Free demo server, not for production. Self-host for heavy use.
- Overpass: Fair use, avoid large queries during peak hours.
For production, self-host these services or use commercial providers (Mapbox, Google, OpenRouteService).
Configuration
The server works without configuration by using public geospatial services. For production use, self-host high-volume providers where possible.
| Variable | Default | Description | | --- | --- | --- | | GEO_MCP_NOMINATIM_URL | https://nominatim.openstreetmap.org | Forward and reverse geocoding | | GEO_MCP_OSRM_URL | https://router.project-osrm.org | Routing and nearest-road lookup | | GEO_MCP_OVERPASS_URL | https://overpass-api.de/api/interpreter | OpenStreetMap feature queries | | GEO_MCP_ORS_API_KEY | unset | OpenRouteService key for isochrones | | GEO_MCP_HTTP_RETRIES | 3 | HTTP retry count |
mcp-geo sends a project-specific User-Agent and rate-limits Nominatim calls to one request per second by default.
Development
git clone https://github.com/tabibhasann/geo-mcp.git
cd geo-mcp
uv sync --group dev
uv run ruff check src/ tests/
uv run mypy src/
uv run pytest
Optional GIS dependencies can be tested with:
uv sync --group dev --extra files --extra raster --extra visual
uv run pytest
Docker
docker build -t mcp-geo .
docker run --rm -p 8000:8000 mcp-geo mcp-geo --http --host 0.0.0.0 --port 8000
Roadmap
What works now:
- 44 MCP tools across 12 categories (geometry, geocoding, OSM, routing, elevation, isochrones, files, raster, spatial index, workspace, visualization, meta-tools)
- stdio, HTTP, and SSE transports
- Rate limiting and retry logic for public APIs
mcp-geo doctorconnectivity checker--dry-runmode (returns mock data without hitting APIs)--quietflag for CI (suppresses progress output)- Quota tracking with 80% warning and 100% error thresholds
mcp-geo toolscommand for tool discoverymcp-geo providerscommand for provider listing
Planned:
- Provider plugin system (Mapbox, Google Maps geocoding)
- WebSockets transport
- Batch file processing tools
- More raster operations (reproject, clip, mosaic)
Quick Start
# Install
pip install mcp-geo
# Run as MCP server (add to your agent's MCP config)
mcp-geo
# List all available tools
mcp-geo tools
# List configured providers
mcp-geo providers
Agent Configuration (Claude Desktop)
{
"mcpServers": {
"geo": {
"command": "mcp-geo",
"env": {
"NOMINATIM_EMAIL": "you@example.com",
"OPENTRIPMAP_KEY": "optional"
}
}
}
}
API
MCP Tool Categories
| Category | Tools | Description | |----------|-------|-------------| | Geocoding | 4 | Forward/reverse geocoding via Nominatim | | Routing | 3 | Route planning via OSRM | | OSM | 5 | OpenStreetMap queries (POI, isochrones, static maps) | | Geometry | 6 | Buffer, intersect, distance, area, centroid, transform | | Files | 5 | Inspect GeoJSON, Shapefile, GeoPackage, KML, CSV | | Raster | 4 | Sample, stats, contour, reproject | | Elevation | 3 | Point, profile, batch elevation | | Workspace | 4 | Save/retrieve spatial data between tool calls |
Python API
from geo_mcp.server import mcp
# Run the MCP server
mcp.run()
CLI Reference
\\\bash geo-mcp --help # Show all available commands and options geo-mcp --version # Print the installed version \\\
Contributing
PRs welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
License
MIT
⭐ Star tabibhasann/geo-mcp on GitHub if this helped you.
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: tabibhasann
- Source: tabibhasann/geo-mcp
- License: MIT
- Homepage: https://pypi.org/project/mcp-geo/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.