
GIS
STDIOMCP server connecting LLMs to GIS operations for spatial analysis and transformations
MCP server connecting LLMs to GIS operations for spatial analysis and transformations
Install GIS-MCP and transform your AI's spatial capabilities!
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.
Alpha
Version 0.3.0 (Alpha) is under active development. We welcome contributions and developers to join us in building this project.
Choose the installation method that best suits your needs:
To install GIS MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @mahdin75/gis-mcp --client claude
The pip installation is recommended for most users:
pip install uv
uv venv --python=3.10
uv pip install gis-mcp
gis-mcp
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:
YourUsername
with your actual username/path/to/gis-mcp
with the actual path to your projectFor contributors and developers:
pip install uv
uv venv --python=3.10
uv pip install -e .
python -m gis_mcp
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:
YourUsername
with your actual username/path/to/gis-mcp
with the actual path to your projectTool | 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 |
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 |
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 |
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 |
Tool | Description |
---|---|
get_length | Get the length of a geometry |
get_area | Get the area of a geometry |
Tool | Description |
---|---|
is_valid | Check if a geometry is valid |
make_valid | Make a geometry valid |
simplify | Simplify a geometry with specified tolerance |
Tool | Description |
---|---|
transform_coordinates | Transform coordinates between CRS |
project_geometry | Project a geometry between CRS |
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 |
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 |
Tool | Description |
---|---|
read_file_gpd | Read a geospatial file and return stats and data preview |
to_file_gpd | Write a GeoDataFrame to a file |
Tool | Description |
---|---|
append_gpd | Concatenate two GeoDataFrames vertically |
merge_gpd | Perform database-style joins between GeoDataFrames |
Tool | Description |
---|---|
metadata_raster | Get metadata from a raster dataset |
get_raster_crs | Retrieve the CRS of a raster dataset |
extract_band | Extract a specific band from a multi-band raster |
raster_band_statistics | Calculate statistics (min, max, mean, std) for each band |
raster_histogram | Compute histogram of pixel values for each band |
Tool | Description |
---|---|
clip_raster_with_shapefile | Clip a raster using polygons from a shapefile |
resample_raster | Resample a raster by a scale factor |
reproject_raster | Reproject a raster to a new CRS |
tile_raster | Split a raster into square tiles |
Tool | Description |
---|---|
compute_ndvi | Calculate Normalized Difference Vegetation Index |
raster_algebra | Perform algebraic operations on raster bands |
concat_bands | Combine multiple single-band rasters into one multi-band raster |
weighted_band_sum | Compute weighted sum of all bands in a raster |
Example usage of the tools:
Tool: buffer Parameters: { "geometry": "POINT(0 0)", "distance": 10, "resolution": 16, "join_style": 1, "mitre_limit": 5.0, "single_sided": false }
Tool: transform_coordinates Parameters: { "coordinates": [0, 0], "source_crs": "EPSG:4326", "target_crs": "EPSG:3857" }
Tool: calculate_geodetic_distance Parameters: { "point1": [0, 0], "point2": [10, 10], "ellps": "WGS84" }
We welcome contributions! Here's how you can help:
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)Please ensure your PR description clearly describes the problem and solution. Include the relevant issue number if applicable.
This project is licensed under the MIT License - see the LICENSE file for details.
For support, please open an issue in the GitHub repository.
Join our Discord community for discussions, updates, and support:
Made with contrib.rocks.