gis-mcp

gis-mcp

MCP.Pizza Chef: mahdin75

Working with map data usually means specialist desktop software. This lets an assistant do the common jobs instead: measure the distance between two points, check whether one area overlaps another, convert between coordinate systems, and reshape boundaries. It is aimed at people who occasionally need a spatial answer rather than a full mapping workflow. It runs in Claude Desktop and Cursor, installs with a standard package tool, and needs no account.

Data
Web/Research

Use This MCP server To

Measure the distance between two locations Check whether two areas overlap Convert coordinates between map systems Work out the area of a boundary Find the centre point of a shape Buffer a zone by a set distance

README

GIS MCP Server

✨ Want to perform accurate geospatial analysis in your chatbot? ✨

Install GIS-MCP and transform your AI's spatial capabilities!


GIS MCP Server Logo

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.

GIS Server MCP server

Alpha

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

🎥 Demo

GIS MCP Server Demo

📋 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

gis-mcp FAQ

Can I use this to check if two areas overlap?
Yes — you can describe both areas and get a direct answer without opening mapping software.
Do I need an account or key?
No, it runs locally and needs no separate account or paid service.
Which apps does it work with?
It is documented for Claude Desktop and Cursor, and works with other assistants supporting this connection.
Can I use this to convert between coordinate systems?
Yes — converting between systems is one of the core things it handles.
How hard is it to set up?
You install it with a standard package tool, so a little technical comfort helps on the first run.