GIS MCP Server

GIS MCP Server

A Model Context Protocol server that connects LLMs to GIS operations, enabling AI assistants to perform accurate geospatial analysis including geometric operations, coordinate transformations, and spatial measurements.

Category
Visit Server

Tools

buffer

Create a buffer around a geometry.

calculate_geodetic_point

Calculate point at given distance and azimuth.

intersection

Find intersection of two geometries.

union

Combine two geometries.

symmetric_difference

Find symmetric difference between geometries.

convex_hull

Calculate convex hull of a geometry.

voronoi

Create a Voronoi diagram from points.

difference

Find difference between geometries.

envelope

Get bounding box of a geometry.

minimum_rotated_rectangle

Get minimum rotated rectangle of a geometry.

rotate_geometry

Rotate a geometry.

scale_geometry

Scale a geometry.

translate_geometry

Translate a geometry.

triangulate_geometry

Create a triangulation of a geometry.

get_geometry_type

Get the type of a geometry.

project_geometry

Project a geometry between CRS.

unary_union_geometries

Create a union of multiple geometries.

get_centroid

Get the centroid of a geometry.

get_length

Get the length of a geometry.

get_area

Get the area of a geometry.

get_bounds

Get the bounds of a geometry.

get_coordinates

Get the coordinates of a geometry.

is_valid

Check if a geometry is valid.

make_valid

Make a geometry valid.

simplify

Simplify a geometry.

transform_coordinates

Transform coordinates between CRS.

get_crs_info

Get information about a CRS.

get_available_crs

Get list of available CRS.

get_geod_info

Get information about a geodetic calculation.

calculate_geodetic_distance

Calculate geodetic distance between points.

calculate_geodetic_area

Calculate area of a polygon using geodetic calculations.

get_utm_zone

Get UTM zone for given coordinates.

get_utm_crs

Get UTM CRS for given coordinates.

get_geocentric_crs

Get geocentric CRS for given coordinates.

README

GIS MCP Server

<div align="center"> <h3>✨ Want to perform accurate geospatial analysis in your chatbot? ✨</h3> <p><strong>Install GIS-MCP and transform your AI's spatial capabilities!</strong></p> <br/> <img src="docs/gis-mcp.png" alt="GIS MCP Server Logo" width="300"/> </div>

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

<a href="https://glama.ai/mcp/servers/@mahdin75/gis-mcp"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@mahdin75/gis-mcp/badge" alt="GIS Server MCP server" /> </a>

Alpha

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

🎥 Demo

<div align="center"> <img src="docs/demo.gif" alt="GIS MCP Server Demo" width="800"/> </div>

📋 Table of Contents

🚀 Features

  • 🔍 Comprehensive geometric operations (intersection, union, buffer, etc.)
  • 🌐 Advanced coordinate transformations and projections
  • 📏 Precise distance and area calculations
  • 🗺️ Spatial analysis and validation
  • 🛠️ Easy integration with MCP-compatible clients

📋 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:

📦 pip Installation

The pip installation is recommended for most users:

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

pip Configuration

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

Claude Desktop:

Windows:

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

Linux/Mac:

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

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

Windows:

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

Linux/Mac:

{
  "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:
pip install uv
  1. Create the Virtual Environment:
uv venv --python=3.10
  1. Install the package in development mode:
uv pip install -e .
  1. Start the server:
python -m gis_mcp

Development Configuration

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

Claude Desktop:

Windows:

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

Linux/Mac:

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

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

Windows:

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

Linux/Mac:

{
  "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 Tools

Shapely Operations

Basic Operations

Tool Description
buffer Create a buffer around geometries with customizable parameters
intersection Find intersection of two geometries
union Combine two geometries
difference Find difference between geometries
symmetric_difference Find symmetric difference between geometries

Geometric Properties

Tool Description
convex_hull Calculate convex hull of a geometry
envelope Get bounding box of a geometry
minimum_rotated_rectangle Get minimum rotated rectangle of a geometry
get_centroid Get the centroid of a geometry
get_bounds Get the bounds of a geometry
get_coordinates Get the coordinates of a geometry
get_geometry_type Get the type of a geometry

Transformations

Tool Description
rotate_geometry Rotate a geometry with specified angle and origin
scale_geometry Scale a geometry with x and y factors
translate_geometry Translate a geometry with x, y, and z offsets

Advanced Operations

Tool Description
triangulate_geometry Create a triangulation of a geometry
voronoi Create a Voronoi diagram from points
unary_union_geometries Create a union of multiple geometries

Measurements

Tool Description
get_length Get the length of a geometry
get_area Get the area of a geometry

Validation and Simplification

Tool Description
is_valid Check if a geometry is valid
make_valid Make a geometry valid
simplify Simplify a geometry with specified tolerance

PyProj Operations

Coordinate Transformations

Tool Description
transform_coordinates Transform coordinates between CRS
project_geometry Project a geometry between CRS

CRS Information

Tool Description
get_crs_info Get detailed information about a CRS
get_available_crs Get list of all available CRS
get_utm_zone Get UTM zone for given coordinates
get_utm_crs Get UTM CRS for given coordinates
get_geocentric_crs Get geocentric CRS for given coordinates

Geodetic Calculations

Tool Description
get_geod_info Get information about a geodetic calculation
calculate_geodetic_distance Calculate geodetic distance between points
calculate_geodetic_point Calculate point at given distance and azimuth
calculate_geodetic_area Calculate area of a polygon using geodetic calculations

🛠️ Client Development

Example usage of the tools:

Buffer Operation

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

Coordinate Transformation

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

Geodetic Distance

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

🔮 Planned Features

  • Add support for more GIS libraries - GDAL/OGR
  • Implement advanced spatial indexing
  • Add support for raster operations
  • Implement network analysis capabilities
  • Add support for 3D geometries
  • Implement performance optimizations

🤝 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

📞 Support

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

🏆 Badges

<div align="center"> <!-- Glama AI will be added here --> <br/><br/><br/> <a href="https://mcp.so/server/gis-mcp-server/mahdin75"> <img src="https://mcp.so/logo.png" alt="MCP.so Badge" width="150"/> </a> </div>

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured