
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.
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
- Prerequisites
- Installation
- Available Tools
- Client Development
- Planned Features
- Contributing
- License
- Related Projects
- Support
- Badges
🚀 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:
- Install uv package manager:
pip install uv
- Create the Virtual Environment (Python 3.10+):
uv venv --python=3.10
- Install the package:
uv pip install gis-mcp
- 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:
- Make sure to replace
YourUsername
with your actual username - For development installation, replace
/path/to/gis-mcp
with the actual path to your project - Restart your IDE to apply the changes
- You can now use all GIS operations through Claude or Cursor!
🛠️ Development Installation
For contributors and developers:
- Install uv package manager:
pip install uv
- Create the Virtual Environment:
uv venv --python=3.10
- Install the package in development mode:
uv pip install -e .
- 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:
- Make sure to replace
YourUsername
with your actual username - For development installation, replace
/path/to/gis-mcp
with the actual path to your project - Restart your IDE to apply the changes
- 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:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - 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
- Model Context Protocol - The core MCP implementation
- Shapely - Python package for manipulation and analysis of geometric objects
- PyProj - Python interface to PROJ library
📞 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>
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。