GIS MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| read_file_gpdB | Reads a geospatial file and returns stats and a data preview. |
| append_gpdC | Reads two shapefiles directly, concatenates them vertically. |
| merge_gpdB | Merges two shapefiles based on common attribute columns, This function performs a database-style join, not a spatial join. Args: left_shapefile_path: Path to the left shapefile. The geometry from this file is preserved. right_shapefile_path: Path to the right shapefile to merge. output_path: Path to save the merged output shapefile. how: Type of merge. One of 'left', 'right', 'outer', 'inner'. Defaults to 'inner'. on: Column name to join on. Must be found in both shapefiles. left_on: Column name to join on in the left shapefile. right_on: Column name to join on in the right shapefile. suffixes: Suffix to apply to overlapping column names. |
| overlay_gpdB | Overlay two GeoDataFrames using geopandas.overlay. Args: gdf1_path: Path to the first geospatial file. gdf2_path: Path to the second geospatial file. how: Overlay method ('intersection', 'union', 'identity', 'symmetric_difference', 'difference'). output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info. |
| dissolve_gpdB | Dissolve geometries by attribute using geopandas.dissolve. Args: gdf_path: Path to the geospatial file. by: Column to dissolve by (optional). output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info. |
| explode_gpdA | Split multi-part geometries into single parts using geopandas.explode. Args: gdf_path: Path to the geospatial file. output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info. |
| clip_vectorC | Clip vector geometries using geopandas.clip. Args: gdf_path: Path to the input geospatial file. clip_path: Path to the clipping geometry file. output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info. |
| sjoin_gpdB | Spatial join between two GeoDataFrames using geopandas.sjoin. Args: left_path: Path to the left geospatial file. right_path: Path to the right geospatial file. how: Type of join ('left', 'right', 'inner'). predicate: Spatial predicate ('intersects', 'within', 'contains', etc.). output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info. |
| sjoin_nearest_gpdB | Nearest neighbor spatial join using geopandas.sjoin_nearest. Args: left_path: Path to the left geospatial file. right_path: Path to the right geospatial file. how: Type of join ('left', 'right'). max_distance: Optional maximum search distance. output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info. |
| point_in_polygonB | Check if points are inside polygons using spatial join (predicate='within'). Args: points_path: Path to the point geospatial file. polygons_path: Path to the polygon geospatial file. output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info. |
| write_file_gpdA | Export a GeoDataFrame to a file (Shapefile, GeoJSON, GPKG, etc.). Args: gdf_path: Path to the input geospatial file. output_path: Path to save the exported file. driver: Optional OGR driver name (e.g., 'ESRI Shapefile', 'GeoJSON', 'GPKG'). Returns: Dictionary with status and message. |
| bufferC | Create a buffer around a geometry. |
| intersectionC | Find intersection of two geometries. |
| unionD | Combine two geometries. |
| differenceC | Find difference between geometries. |
| symmetric_differenceC | Find symmetric difference between geometries. |
| convex_hullC | Calculate convex hull of a geometry. |
| envelopeC | Get bounding box of a geometry. |
| minimum_rotated_rectangleC | Get minimum rotated rectangle of a geometry. |
| get_centroidB | Get the centroid of a geometry. |
| get_boundsC | Get the bounds of a geometry. |
| get_coordinatesC | Get the coordinates of a geometry. |
| get_geometry_typeC | Get the type of a geometry. |
| rotate_geometryC | Rotate a geometry. |
| scale_geometryC | Scale a geometry. |
| translate_geometryC | Translate a geometry. |
| triangulate_geometryC | Create a triangulation of a geometry. |
| voronoiC | Create a Voronoi diagram from points. |
| unary_union_geometriesC | Create a union of multiple geometries. |
| get_lengthC | Get the length of a geometry. |
| get_areaC | Get the area of a geometry. |
| is_validC | Check if a geometry is valid. |
| make_validC | Make a geometry valid. |
| simplifyC | Simplify a geometry. |
| snap_geometryC | Snap one geometry to another using shapely.ops.snap. Args: geometry1: WKT string of the geometry to be snapped. geometry2: WKT string of the reference geometry. tolerance: Distance tolerance for snapping. Returns: Dictionary with status, message, and snapped geometry as WKT. |
| nearest_point_on_geometryB | Find the nearest point on geometry2 to geometry1 using shapely.ops.nearest_points. Args: geometry1: WKT string of the first geometry (e.g., a point). geometry2: WKT string of the second geometry. Returns: Dictionary with status, message, and the nearest point as WKT. |
| normalize_geometryA | Normalize the orientation/order of a geometry using shapely.normalize. Args: geometry: WKT string of the geometry. Returns: Dictionary with status, message, and normalized geometry as WKT. |
| geometry_to_geojsonA | Convert a Shapely geometry (WKT) to GeoJSON using shapely.geometry.mapping. Args: geometry: WKT string of the geometry. Returns: Dictionary with status, message, and GeoJSON representation. |
| geojson_to_geometryB | Convert GeoJSON to a Shapely geometry using shapely.geometry.shape. Args: geojson: GeoJSON dictionary. Returns: Dictionary with status, message, and geometry as WKT. |
| zonal_statisticsB | Calculate statistics of raster values within polygons (zonal statistics). Args: raster_path: Path to the raster file. vector_path: Path to the vector file (polygons). stats: List of statistics to compute (e.g., ["mean", "min", "max", "std"]). Returns: Dictionary with status, message, and statistics per polygon. |
| reclassify_rasterA | Reclassify raster values using a mapping dictionary. Args: raster_path: Path to the input raster. reclass_map: Dictionary mapping old values to new values (e.g., {1: 10, 2: 20}). output_path: Path to save the reclassified raster. Returns: Dictionary with status and message. |
| focal_statisticsB | Compute focal (moving window) statistics on a raster. Args: raster_path: Path to the input raster. statistic: Statistic to compute ('mean', 'min', 'max', 'std'). size: Window size (odd integer). output_path: Optional path to save the result. Returns: Dictionary with status, message, and output path if saved. |
| hillshadeA | Generate hillshade from a DEM raster. Args: raster_path: Path to the DEM raster. azimuth: Sun azimuth angle in degrees. angle_altitude: Sun altitude angle in degrees. output_path: Optional path to save the hillshade raster. Returns: Dictionary with status, message, and output path if saved. |
| write_rasterA | Write a numpy array to a raster file using metadata from a reference raster. Args: array: 2D or 3D list (or numpy array) of raster values. reference_raster: Path to a raster whose metadata will be copied. output_path: Path to save the new raster. dtype: Optional data type (e.g., 'float32', 'uint8'). Returns: Dictionary with status and message. |
| metadata_rasterA | Open a raster dataset in read-only mode and return metadata. This tool supports two modes based on the provided string:
The input must be a single string that is either a valid file path on the local machine or a valid HTTPS URL pointing to a raster. |
| get_raster_crsA | Retrieve the Coordinate Reference System (CRS) of a raster dataset. Opens the raster (local path or HTTPS URL), reads its DatasetReader.crs attribute as a PROJ.4-style dict, and also returns the WKT representation. |
| clip_raster_with_shapefileA | Clip a raster dataset using polygons from a shapefile and write the result. Converts the shapefile's CRS to match the raster's CRS if they are different. Parameters:
|
| resample_rasterA | Resample a raster dataset by a scale factor and save the result. Parameters:
|
| reproject_rasterA | Reproject a raster dataset to a new CRS and save the result. Parameters:
|
| extract_bandA | Extract a specific band from a multi-band raster and save it as a single-band GeoTIFF. Parameters:
|
| raster_band_statisticsB | Calculate min, max, mean, and std for each band of a raster. Parameters:
|
| tile_rasterC | Split a raster into square tiles of a given size and save them individually. Parameters:
|
| raster_histogramB | Compute histogram of pixel values for each band. Parameters:
|
| compute_ndviB | Compute NDVI (Normalized Difference Vegetation Index) and save to GeoTIFF. Parameters:
|
| raster_algebraA | Perform algebraic operations (addition or subtraction) on two raster bands, handling alignment issues automatically. Parameters:
The function aligns rasters if needed, applies the selected operation, and saves the result. |
| concat_bandsA | Concatenate multiple single-band raster files into one multi-band raster, handling alignment issues automatically. Parameters:
Notes:
|
| weighted_band_sumA | Compute a weighted sum of all bands in a raster using specified weights. Parameters:
|
| transform_coordinatesC | Transform coordinates between CRS. |
| project_geometryC | Project a geometry between CRS. |
| get_crs_infoC | Get information about a CRS. |
| get_available_crsB | Get list of available CRS. |
| get_geod_infoD | Get information about a geodetic calculation. |
| calculate_geodetic_distanceC | Calculate geodetic distance between points. |
| calculate_geodetic_pointC | Calculate point at given distance and azimuth. |
| calculate_geodetic_areaC | Calculate area of a polygon using geodetic calculations. |
| get_utm_zoneC | Get UTM zone for given coordinates. |
| get_utm_crsC | Get UTM CRS for given coordinates. |
| get_geocentric_crsC | Get geocentric CRS for given coordinates. |
| getis_ord_gC | Compute Getis-Ord G for global hot spot analysis. |
| morans_iC | Compute Moran's I Global Autocorrelation Statistic. |
| gearys_cC | Compute Global Geary's C Autocorrelation Statistic. |
| gamma_statisticC | Compute Gamma Statistic for spatial autocorrelation. |
| moran_localD | Local Moran's I. |
| getis_ord_g_localC | Local Getis-Ord G. |
| join_countsD | Global Binary Join Counts. |
| join_counts_localD | Local Join Counts. |
| adbscanB | Adaptive DBSCAN clustering (requires coordinates, no dependent_var). |
| weights_from_shapefileA | Create a spatial weights (W) from a shapefile using contiguity.
|
| distance_band_weightsA | Create a distance-based spatial weights (W) object from point data.
|
| knn_weightsB | Create a k-nearest neighbors spatial weights (W) object from point data.
|
| build_transform_and_save_weightsA | Pipeline: Read shapefile, build spatial weights, optionally transform, and save to file. Parameters:
|
| ols_with_spatial_diagnostics_safeB | Safe MCP pipeline: Read shapefile, build/load W, convert numeric, check NaNs, run OLS. Parameters:
|
| build_and_transform_weightsB | Build and transform spatial weights in one step. Parameters:
|
| spatial_markovB | Run giddy Spatial Markov on a panel (n regions x t periods) from a shapefile. |
| dynamic_lisaC | Run dynamic LISA (directional LISA) with giddy.directional.Rose. Returns sector counts, angles, vector lengths, and (optionally) permutation p-values. |
| gm_lagC | Run spreg.GM_Lag (spatial 2SLS / GMM-IV spatial lag model) on a cross-section. Returns coefficients with SE/z/p, fit metrics, (optional) AK test, and a small data preview. |
| save_resultsA | MCP Tool: Save any GIS-MCP result dict to files, only when the user requests. Args: data: The dictionary returned by any GIS-MCP tool. filename: Base filename without extension. formats: List of formats to save (default = all). folder: Target folder (relative to configured storage directory, or absolute path). Returns: Dict with 'saved_files' mapping format -> path. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_geopandas_io | List available GeoPandas I/O operations. |
| get_geopandas_joins | List available GeoPandas join operations. |
| get_basic_operations | List available basic geometric operations. |
| get_geometric_properties | List available geometric property operations. |
| get_transformations | List available geometric transformations. |
| get_advanced_operations | List available advanced operations. |
| get_measurements | List available measurement operations. |
| get_validation_operations | List available validation operations. |
| get_shapely_util_operations | List available Shapely utility/advanced operations. |
| get_rasterio_operations | List available rasterio operations. |
| get_crs_transformations | List available CRS transformation operations. |
| get_crs_info_operations | List available CRS information operations. |
| get_geodetic_operations | List available geodetic operations. |
| get_spatial_operations | List available spatial analysis operations. This is for esda library. They are using pysal library. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mahdin75/gis-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server