GIS MCP Server

GIS MCP Server

Empower AI with advanced geospatial operations via Model Context Protocol.

70
Stars
21
Forks
70
Watchers
3
Issues
GIS MCP Server provides a Model Context Protocol (MCP) server implementation that enables Large Language Models to access and perform sophisticated GIS operations. It bridges AI assistants with Python geospatial libraries such as Shapely, GeoPandas, PyProj, Rasterio, and PySAL. The server supports a wide range of spatial analysis, coordinate transformations, raster and vector data processing, and geospatial intelligence tasks. By integrating with MCP-compatible clients, it enhances AI tools with precise and extensible spatial capabilities.

Key Features

Performs advanced geometry operations such as intersection, union, and buffer
Supports coordinate reference system transformations and reprojection
Provides accurate measurement tools for distance, area, and centroid calculations
Enables spatial analysis including overlays, joins, and validation
Processes both raster and vector geospatial data
Integrates with popular GIS Python libraries (Shapely, GeoPandas, PyProj, Rasterio, PySAL)
Offers spatial statistics and modeling tools including autocorrelation and clustering
Facilitates easy integration with MCP-compatible AI clients
Extensible architecture for custom geospatial tools and workflows
Supports both static and interactive map visualizations

Use Cases

Enhancing AI assistants with geospatial reasoning capabilities
Automating environmental analysis and reporting for chatbots
Generating and transforming mapping data within AI-powered platforms
Validating and processing location-based datasets in data science workflows
Supporting urban planning and land use analysis with spatial intelligence
Analyzing movement, climate, or ecology data for research
Performing remote sensing and satellite imagery analysis
Geomarketing and spatial business intelligence applications
Automated conversion and transformation of GIS datasets via LLMs
Spatial decision support in emergency response and logistics

README

GIS MCP Server

A Model Context Protocol (MCP) server implementation that connects Large Language Models (LLMs) to GIS operations using GIS libraries, enabling AI assistants to perform geospatial operations and transformations.


🌐 Website: gis-mcp.com

Current version is 0.9.0 (Beta):

Version 0.10.0 (Beta) is under active development. We welcome contributions and developers to join us in building this project.

🎥 Demo

Rasterio Demo

📋 Table of Contents

🚀 Features

GIS MCP Server empowers AI assistants with advanced geospatial intelligence. Key features include:

  • 🔹 Comprehensive Geometry Operations – Perform intersection, union, buffer, difference, and other geometric transformations with ease.
  • 🔹 Advanced Coordinate Transformations – Effortlessly reproject and transform geometries between coordinate reference systems.
  • 🔹 Accurate Measurements – Compute distances, areas, lengths, and centroids precisely.
  • 🔹 Spatial Analysis & Validation – Validate geometries, run proximity checks, and perform spatial overlays or joins.
  • 🔹 Raster & Vector Support – Process raster layers, compute indices like NDVI, clip, resample, and merge with vector data.
  • 🔹 Spatial Statistics & Modeling – Leverage PySAL for spatial autocorrelation, clustering, and neighborhood analysis.
  • 🔹 Easy Integration – Connect seamlessly with MCP-compatible clients like Claude Desktop or Cursor IDE.
  • 🔹 Flexible & Extensible – Supports Python-based GIS libraries and is ready for custom tools or workflow extensions.

🌟 Tip: With GIS MCP Server, your AI can now “think spatially,” unlocking new capabilities for environmental analysis, mapping, and location intelligence.


📋 Prerequisites

  • Python 3.10 or higher
  • MCP-compatible client (like Claude Desktop or Cursor)
  • Internet connection for package installation

🛠 Installation

Choose the installation method that best suits your needs:

🛠 Installing via Smithery

To install GIS MCP Server for Claude Desktop automatically via Smithery:

bash
npx -y @smithery/cli install @mahdin75/gis-mcp --client claude

📦 pip Installation

The pip installation is recommended for most users:

  1. Install uv package manager:
bash
pip install uv
  1. Create the Virtual Environment (Python 3.10+):
bash
uv venv --python=3.10
  1. Install the package:
bash
uv pip install gis-mcp

Install with Visualization Features

To install with visualization capabilities (Folium and PyDeck for interactive maps):

bash
uv pip install gis-mcp[visualize]

This will install additional dependencies:

  • folium>=0.15.0 - For creating interactive web maps
  • pydeck>=0.9.0 - For advanced 3D visualizations
  1. Start the server:
bash
gis-mcp

pip Configuration

To use the pip installation with Claude or Cursor, add the following configuration:

Claude Desktop:

Windows:

json
{
  "mcpServers": {
    "gis-mcp": {
      "command": "C:\\Users\\YourUsername\\.venv\\Scripts\\gis-mcp",
      "args": []
    }
  }
}

Linux/Mac:

json
{
  "mcpServers": {
    "gis-mcp": {
      "command": "/home/YourUsername/.venv/bin/gis-mcp",
      "args": []
    }
  }
}

Cursor IDE (create .cursor/mcp.json):

Windows:

json
{
  "mcpServers": {
    "gis-mcp": {
      "command": "C:\\Users\\YourUsername\\.venv\\Scripts\\gis-mcp",
      "args": []
    }
  }
}

Linux/Mac:

json
{
  "mcpServers": {
    "gis-mcp": {
      "command": "/home/YourUsername/.venv/bin/gis-mcp",
      "args": []
    }
  }
}

After configuration:

  1. Make sure to replace YourUsername with your actual username
  2. For development installation, replace /path/to/gis-mcp with the actual path to your project
  3. Restart your IDE to apply the changes
  4. You can now use all GIS operations through Claude or Cursor!

🛠 Development Installation

For contributors and developers:

  1. Install uv package manager:
bash
pip install uv
  1. Create the Virtual Environment:
bash
uv venv --python=3.10
  1. Install the package in development mode:
bash
uv pip install -e .
  1. Start the server:
bash
python -m gis_mcp

Development Configuration

To use the development installation with Claude or Cursor, add the following configuration:

Claude Desktop:

Windows:

json
{
  "mcpServers": {
    "gis-mcp": {
      "command": "C:\\path\\to\\gis-mcp\\.venv\\Scripts\\python",
      "args": ["-m", "gis_mcp"]
    }
  }
}

Linux/Mac:

json
{
  "mcpServers": {
    "gis-mcp": {
      "command": "/path/to/gis-mcp/.venv/bin/python",
      "args": ["-m", "gis_mcp"]
    }
  }
}

Cursor IDE (create .cursor/mcp.json):

Windows:

json
{
  "mcpServers": {
    "gis-mcp": {
      "command": "C:\\path\\to\\gis-mcp\\.venv\\Scripts\\python",
      "args": ["-m", "gis_mcp"]
    }
  }
}

Linux/Mac:

json
{
  "mcpServers": {
    "gis-mcp": {
      "command": "/path/to/gis-mcp/.venv/bin/python",
      "args": ["-m", "gis_mcp"]
    }
  }
}

After configuration:

  1. Make sure to replace YourUsername with your actual username
  2. For development installation, replace /path/to/gis-mcp with the actual path to your project
  3. Restart your IDE to apply the changes
  4. You can now use all GIS operations through Claude or Cursor!

📚 Available Functions

This section provides a comprehensive list of all available functions organized by library.

🔷 Shapely Functions (29 total)

Basic Geometric Operations:

  • buffer - Create buffer around geometry
  • intersection - Find intersection of two geometries
  • union - Combine two geometries
  • difference - Find difference between geometries
  • symmetric_difference - Find symmetric difference

Geometric Properties:

  • convex_hull - Calculate convex hull
  • envelope - Get bounding box
  • minimum_rotated_rectangle - Get minimum rotated rectangle
  • get_centroid - Get centroid point
  • get_bounds - Get geometry bounds
  • get_coordinates - Extract coordinate array
  • get_geometry_type - Get geometry type name

Transformations:

  • rotate_geometry - Rotate geometry by angle
  • scale_geometry - Scale geometry by factors
  • translate_geometry - Move geometry by offset

Advanced Operations:

  • triangulate_geometry - Create triangulation
  • voronoi - Create Voronoi diagram
  • unary_union_geometries - Union multiple geometries

Measurements:

  • get_length - Calculate geometry length
  • get_area - Calculate geometry area

Validation & Utilities:

  • is_valid - Check geometry validity
  • make_valid - Fix invalid geometry
  • simplify - Simplify geometry
  • snap_geometry - Snap to reference geometry
  • nearest_point_on_geometry - Find nearest point
  • normalize_geometry - Normalize orientation
  • geometry_to_geojson - Convert to GeoJSON
  • geojson_to_geometry - Convert from GeoJSON

🔷 PyProj Functions (13 total)

Coordinate Transformations:

  • transform_coordinates - Transform point coordinates
  • project_geometry - Project geometry between CRS

CRS Information:

  • get_crs_info - Get detailed CRS information
  • get_available_crs - List available CRS systems
  • get_utm_zone - Get UTM zone for coordinates
  • get_utm_crs - Get UTM CRS for coordinates
  • get_geocentric_crs - Get geocentric CRS

Geodetic Calculations:

  • get_geod_info - Get ellipsoid information
  • calculate_geodetic_distance - Calculate distance on ellipsoid
  • calculate_geodetic_point - Calculate point at distance/azimuth
  • calculate_geodetic_area - Calculate area on ellipsoid

🔷 GeoPandas Functions (13 total)

I/O Operations:

  • read_file_gpd - Read geospatial file with preview
  • write_file_gpd - Export GeoDataFrame to file

Join & Merge Operations:

  • append_gpd - Concatenate GeoDataFrames vertically
  • merge_gpd - Database-style attribute joins
  • overlay_gpd - Spatial overlay operations
  • dissolve_gpd - Dissolve by attribute
  • explode_gpd - Split multi-part geometries

Spatial Operations:

  • clip_vector - Clip geometries
  • sjoin_gpd - Spatial joins
  • sjoin_nearest_gpd - Nearest neighbor spatial joins
  • point_in_polygon - Point-in-polygon tests

🔷 Rasterio Functions (20 total)

Basic Raster Operations:

  • metadata_raster - Get raster metadata
  • get_raster_crs - Get raster CRS
  • extract_band - Extract single band
  • raster_band_statistics - Calculate band statistics
  • raster_histogram - Compute pixel histograms

Raster Processing:

  • clip_raster_with_shapefile - Clip raster with polygons
  • resample_raster - Resample by scale factor
  • reproject_raster - Reproject to new CRS
  • tile_raster - Split into tiles

Raster Analysis:

  • compute_ndvi - Calculate vegetation index
  • raster_algebra - Mathematical operations on bands
  • concat_bands - Combine single-band rasters
  • weighted_band_sum - Weighted band combination

Advanced Analysis:

  • zonal_statistics - Statistics within polygons
  • reclassify_raster - Reclassify pixel values
  • focal_statistics - Moving window statistics
  • hillshade - Generate hillshade from DEM
  • write_raster - Write array to raster file

🔷 PySAL Functions (15 total)

Spatial Autocorrelation:

  • morans_i - Global Moran's I statistic
  • gearys_c - Global Geary's C statistic
  • gamma_statistic - Gamma index
  • getis_ord_g - Global Getis-Ord G statistic

Local Statistics:

  • moran_local - Local Moran's I
  • getis_ord_g_local - Local Getis-Ord G*
  • join_counts_local - Local join counts

Global Statistics:

  • join_counts - Binary join counts test
  • adbscan - Adaptive density-based clustering

Spatial Weights:

  • weights_from_shapefile - Create weights from shapefile
  • distance_band_weights - Distance-based weights
  • knn_weights - K-nearest neighbors weights
  • build_transform_and_save_weights - Build, transform, and save weights
  • ols_with_spatial_diagnostics_safe - OLS regression with spatial diagnostics
  • build_and_transform_weights - Build and transform weights

🔷 Visualization Functions (2 total)

Static Map Visualization (Matplotlib/GeoPandas):

  • create_map – Generate high-quality static maps (PNG, PDF, JPG) from multiple geospatial data sources including shapefiles, rasters, WKT geometries, and coordinate arrays. Supports multiple layers with individual styling options, legends, titles, and grid overlays.

Interactive Web Map Visualization (Folium):

  • create_web_map – Generate interactive HTML maps using Folium with layer controls, legends, scale bars, dynamic titles, tooltips, and minimap. Supports multiple basemap options and responsive design for web browsers.

🔷 Administrative Boundaries Functions (1 total)

Boundary Download:

  • download_boundaries - Download GADM administrative boundaries and save as GeoJSON

🔷 Climate Data Functions (1 total)

Climate Data Download:

  • download_climate_data - Download climate data (ERA5 or other CDS datasets)

🔷 Ecology Data Functions (2 total)

Ecology Data Download and Info:

  • get_species_info – Retrieve taxonomic information for a given species name
  • download_species_occurrences – Download occurrence records for a given species and save as JSON

🔷 Movement Data Functions (2 total)

Movement Data Download and Routing (via OSMnx):

  • download_street_network – Download a street network for a given place and save as GraphML
  • calculate_shortest_path – Calculate the shortest path between two points using a saved street network

🔷 Land Cover Data Functions (2 total)

Land Cover from Planetary Computer:

  • download_worldcover – Download ESA WorldCover for AOI/year; optional crop and reprojection
  • compute_s2_ndvi – Compute NDVI from Sentinel-2 L2A; crop and reprojection supported

🔷 Satellite Imagery Functions (1 total)

STAC-based Satellite Download:

  • download_satellite_imagery – Download and stack bands from STAC items (e.g., Sentinel-2, Landsat), with optional crop and reprojection

Total Functions Available: 89

🛠 Client Development

Example usage of the tools:

Buffer Operation

python
Tool: buffer
Parameters: {
    "geometry": "POINT(0 0)",
    "distance": 10,
    "resolution": 16,
    "join_style": 1,
    "mitre_limit": 5.0,
    "single_sided": false
}

Coordinate Transformation

python
Tool: transform_coordinates
Parameters: {
    "coordinates": [0, 0],
    "source_crs": "EPSG:4326",
    "target_crs": "EPSG:3857"
}

Geodetic Distance

python
Tool: calculate_geodetic_distance
Parameters: {
    "point1": [0, 0],
    "point2": [10, 10],
    "ellps": "WGS84"
}

Static Map Creation

python
Tool: create_map
Parameters: {
    "layers": [
        {
            "data": "buildings.shp",
            "style": {"label": "Buildings", "color": "red", "alpha": 0.7}
        },
        {
            "data": "roads.shp",
            "style": {"label": "Roads", "color": "black", "linewidth": 1}
        }
    ],
    "filename": "city_analysis",
    "filetype": "png",
    "title": "City Infrastructure Analysis",
    "show_grid": true,
    "add_legend": true
}

Interactive Web Map Creation

python
Tool: create_web_map
Parameters: {
    "layers": [
        {
            "data": "buildings.shp",
            "style": {"label": "Buildings", "color": "red"}
        },
        {
            "data": "parks.geojson",
            "style": {"label": "Parks", "color": "green"}
        }
    ],
    "filename": "city_interactive.html",
    "title": "City Infrastructure Map",
    "basemap": "CartoDB positron",
    "show_grid": true,
    "add_legend": true,
    "add_minimap": true
}

🔮 Planned Features

  • Implement advanced spatial indexing
  • Implement network analysis capabilities
  • Add support for 3D geometries
  • Implement performance optimizations
  • Add support for more GIS libraries

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Please ensure your PR description clearly describes the problem and solution. Include the relevant issue number if applicable.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Related Projects

Project Name Category Description
Model Context Protocol MCP Related The core MCP implementation
Shapely Geospatial Analysis Python package for manipulation and analysis of geometric objects
PyProj Geospatial Analysis Python interface to PROJ library
GeoPandas Geospatial Analysis Python package for working with geospatial data
Rasterio Geospatial Analysis Python package for reading and writing geospatial raster data
PySAL Geospatial Analysis Python spatial analysis library for geospatial data science
cdsapi Geospatial Data Collecting Python API to access the Copernicus Climate Data Store (CDS)
pygadm Geospatial Data Collecting Easy access to administrative boundary defined by GADM from Python scripts
pygbif Geospatial Data Collecting Python client for the GBIF API (ecology and biodiversity data)
OSMnx Geospatial Data Collecting Python package for downloading, modeling, and analyzing street networks and urban features from OpenStreetMap
pystac-client Geospatial Data Collecting Python client for STAC catalogs; search and access spatiotemporal assets
Planetary Computer SDK for Python Geospatial Data Collecting Python SDK for Microsoft Planetary Computer; auth and helpers for STAC/COGs

📞 Support

For support, please open an issue in the GitHub repository.

💬 Community

Join our Discord community for discussions, updates, and support:

Join our Discord

👥 Contributors

Made with contrib.rocks.

🏆 Badges

Trust Score

Star History

Star History Chart

Repository Owner

mahdin75
mahdin75

User

Repository Details

Language Python
Default Branch main
Size 12,843 KB
Contributors 8
License MIT License
MCP Verified Nov 12, 2025

Programming Languages

Python
99.7%
Dockerfile
0.3%

Tags

Join Our Newsletter

Stay updated with the latest AI tools, news, and offers by subscribing to our weekly newsletter.

We respect your privacy. Unsubscribe at any time.

Related MCPs

Discover similar Model Context Protocol servers

  • MCP-Geo

    MCP-Geo

    Geocoding and reverse geocoding MCP server for LLMs.

    MCP-Geo provides geocoding and reverse geocoding capabilities to AI models using the Model Context Protocol, powered by the GeoPY library. It offers various tools such as address lookup, reverse lookup from coordinates, distance calculations, and batch processing of locations, all accessible via standard MCP tool interfaces. Safety features like rate limiting and robust error handling ensure reliable and compliant usage of geocoding services. The server is compatible with environments like Claude Desktop and can be easily configured elsewhere.

    • 28
    • MCP
    • webcoderz/MCP-Geo
  • QGISMCP

    QGISMCP

    Integrate QGIS with Claude AI via Model Context Protocol

    QGISMCP connects QGIS to Claude AI through the Model Context Protocol (MCP), enabling seamless two-way communication between the GIS platform and the AI assistant. It features a QGIS plugin that sets up a socket server and a dedicated MCP server for processing commands, facilitating tasks such as project manipulation, layer management, and Python code execution directly from Claude. This integration empowers users to streamline project creation, layer loading, and advanced automation within QGIS through AI-driven interaction.

    • 691
    • MCP
    • jjsantos01/qgis_mcp
  • Google Workspace MCP Server

    Google Workspace MCP Server

    Full natural language control of Google Workspace through the Model Context Protocol.

    Google Workspace MCP Server enables comprehensive natural language interaction with Google services such as Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Tasks, and Chat via any MCP-compatible client or AI assistant. It supports both single-user and secure multi-user OAuth 2.1 authentication, providing a production-ready backend for custom apps. Built on FastMCP, it delivers high performance and advanced context handling, offering deep integration with the entire Google Workspace suite.

    • 890
    • MCP
    • taylorwilsdon/google_workspace_mcp
  • Stadia Maps MCP Server (TypeScript)

    Stadia Maps MCP Server (TypeScript)

    Bringing location services, geocoding, and mapping to AI assistants via Stadia Maps APIs.

    Stadia Maps MCP Server (TypeScript) implements the Model Context Protocol to provide LLM-based assistants with structured access to Stadia Maps APIs. It enables AI tools to query for geocoding, routing, time zones, map generation, and isochrone calculations. Designed for integration with agentic tools and LLMs, the server enhances spatial intelligence and location-based features in AI workflows.

    • 18
    • MCP
    • stadiamaps/stadiamaps-mcp-server-ts
  • MCP CLI

    MCP CLI

    A powerful CLI for seamless interaction with Model Context Protocol servers and advanced LLMs.

    MCP CLI is a modular command-line interface designed for interacting with Model Context Protocol (MCP) servers and managing conversations with large language models. It integrates with the CHUK Tool Processor and CHUK-LLM to provide real-time chat, interactive command shells, and automation capabilities. The system supports a wide array of AI providers and models, advanced tool usage, context management, and performance metrics. Rich output formatting, concurrent tool execution, and flexible configuration make it suitable for both end-users and developers.

    • 1,755
    • MCP
    • chrishayuk/mcp-cli
  • FastMCP

    FastMCP

    The fast, Pythonic way to build MCP servers and clients.

    FastMCP is a production-ready framework for building Model Context Protocol (MCP) applications in Python. It streamlines the creation of MCP servers and clients, providing advanced features such as enterprise authentication, composable tools, OpenAPI/FastAPI generation, server proxying, deployment tools, and comprehensive client libraries. Designed for ease of use, it offers both standard protocol support and robust utilities for production deployments.

    • 20,201
    • MCP
    • jlowin/fastmcp
  • Didn't find tool you were looking for?

    Be as detailed as possible for better results