Inspiration
GIS work is powerful, but it often requires stitching together geocoding, routing, OpenStreetMap queries, geometry operations, raster tools, and map rendering by hand. I built mcp-geo so AI agents can use reliable geospatial tools directly instead of generating fragile one-off GIS scripts.
What it does
mcp-geo exposes 44 geospatial tools through the Model Context Protocol. Agents can geocode places, reverse geocode coordinates, query OpenStreetMap, calculate routes, build isochrones, inspect vector and raster files, run spatial joins, find nearest features, validate and repair geometries, store intermediate workflow results, and generate static map previews.
How I built it
The server is built in Python with FastMCP. Core spatial operations use Shapely and PyProj. Network-backed tools integrate with Nominatim, OSRM, Overpass, OpenRouteService, and Open-Elevation. The project includes CI across Python 3.10, 3.11, and 3.12, CodeQL scanning, Docker support, typed configuration, MCP-safe error handling, and a broad test suite.
Challenges
The hardest parts were making geospatial tools dependable inside agent workflows: validating coordinates, handling provider response differences, keeping Overpass queries safe, supporting multiple MCP transports, and returning useful errors instead of stack traces.
Accomplishments
mcp-geo now works as a practical GIS toolbox for AI agents and developers. It is packaged on PyPI, tested, documented, released, and ready for public use.
What I learned
Good geospatial developer tools need more than algorithms. They need predictable inputs, clear outputs, careful rate limiting, provider-aware behavior, and workflows that can be composed step by step.
What's next
Next steps include GeoParquet and PMTiles support, provider plugins, richer example notebooks, PostGIS import/export helpers, and a public gallery of real GIS workflows.
Built With
- codeql
- docker
- fastmcp
- geopandas
- github-actions
- httpx
- matplotlib
- model-context-protocol
- open-elevation
- openrouteservice
- openstreetmap-nominatim
- osrm
- overpass
- pydantic
- pyproj
- python
- rasterio
- shapely
- uv

Log in or sign up for Devpost to join the conversation.