AgentStack
MCP verified MIT Self-run

Geo Mcp

mcp-tabibhasann-geo-mcp · by tabibhasann

Geospatial MCP server for AI agents: geocoding, routing, spatial operations, elevation, isochrones, and OSM queries.

No reviews yet
0 installs
16 views
0.0% view→install

Install

$ agentstack add mcp-tabibhasann-geo-mcp

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No 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.

Are you the author of Geo Mcp? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

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:

  1. geocode a place such as "Buriganga River, Dhaka".
  2. buffer the returned point by 2 km.
  3. osm_features for {"amenity": "hospital"} inside that area.
  4. distance or nearest_neighbor to rank the results.
  5. static_map or save_map to 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 doctor connectivity checker
  • --dry-run mode (returns mock data without hitting APIs)
  • --quiet flag for CI (suppresses progress output)
  • Quota tracking with 80% warning and 100% error thresholds
  • mcp-geo tools command for tool discovery
  • mcp-geo providers command 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.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.