Skip to content
Agentmart
Submit a tool

GeoEDGE MCP

Geospatial analysis: vector and raster GIS operations, cartographic maps, spatial data access

Connector by GeoEDGE-git · GitHub account verified by the MCP Registry

IndexedLicenseRef-ProprietaryLocal (stdio)
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/geoedge-git-geoedge-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Geospatial analysis: vector and raster GIS operations, cartographic maps, spatial data access

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
74 read · 35 write · 2 delete · 34 not yet classified
Secrets
1 (API keys, tokens or passwords)
Install scripts
Not scanned yet
Runs as
Python package

Tools by what they do 145

Read from the source code; the running server may list different tools.

Read 74 · Look things up without changing anything.

  • calculate_geodetic_area
  • calculate_geodetic_distance
  • calculate_geodetic_point
  • calculate_shortest_path
  • check_vector_ogc_compliance
  • check_vector_topology
  • compute_ndvi
  • compute_s2_ndvi
  • convex_hull
  • describe_layer
  • describe_workflow
  • difference
Show 62 more tools
  • discover_layers
  • editor_list_changes
  • envelope
  • extract_band
  • focal_statistics
  • gamma_statistic
  • gearys_c
  • geoedge_installation_status
  • geojson_to_geometry
  • geometry_to_geojson
  • get_area
  • get_audit_log
  • get_available_crs
  • get_bounds
  • get_centroid
  • get_connector_status
  • get_coordinates
  • get_crs_info
  • get_geocentric_crs
  • get_geod_info
  • get_geometry_type
  • get_layer
  • get_length
  • get_map_product_template
  • get_output_schema
  • get_project_config
  • get_raster_crs
  • get_species_info
  • get_utm_crs
  • get_utm_zone
  • getis_ord_g
  • intersection
  • is_valid
  • join_counts
  • join_counts_local
  • list_arcgis_layers
  • list_db_connections
  • list_layers
  • list_local_directory
  • list_map_product_templates
  • list_output_schemas
  • list_postgis_tables
  • list_priority_datasets
  • list_workflows
  • minimum_rotated_rectangle
  • morans_i
  • nearest_point_on_geometry
  • point_in_polygon
  • raster_band_statistics
  • raster_expression
  • raster_histogram
  • read_arcgis_feature_service
  • read_file_gpd
  • read_postgis
  • request_local_file
  • symmetric_difference
  • translate_geometry
  • validate_against_schema
  • visualize_data
  • weighted_band_sum
  • weighted_score_features
  • zonal_statistics

Write 35 · Create, change, send or run things.

  • append_gpd
  • apply_constraint_mask
  • buffer
  • build_and_transform_weights
  • build_transform_and_save_weights
  • close_map_editor
  • create_map
  • create_suitability_map
  • create_web_map
  • distance_band_weights
  • download_boundaries
  • download_climate_data
Show 23 more tools
  • download_satellite_imagery
  • download_species_occurrences
  • download_street_network
  • download_worldcover
  • dynamic_lisa
  • filter_features
  • gm_lag
  • import_data
  • knn_weights
  • make_valid
  • merge_gpd
  • register_layer
  • save_results
  • scale_geometry
  • spatial_markov
  • sync_wrapper
  • triangulate_geometry
  • unary_union_geometries
  • voronoi
  • weights_from_shapefile
  • write_file_gpd
  • write_postgis
  • write_raster

Delete 2 · Delete, drop, revoke or wipe things.

  • drop_layer
  • run_workflow

Not yet classified 34 · We could not tell from the name and description.

  • adbscan
  • ahp_weights
  • async_wrapper
  • buffer_layer
  • clip_raster_with_shapefile
  • clip_vector
  • concat_bands
  • dissolve_gpd
  • explode_gpd
  • fetch_dataset
  • getis_ord_g_local
  • hillshade
Show 22 more tools
  • metadata_raster
  • moran_local
  • normalize_geometry
  • normalize_raster
  • ols_with_spatial_diagnostics_safe
  • open_output_folder
  • overlay_gpd
  • project_geometry
  • rank_suitability_sites
  • raster_algebra
  • reclassify_raster
  • reproject_raster
  • resample_raster
  • rotate_geometry
  • simplify
  • sjoin_gpd
  • sjoin_nearest_gpd
  • snap_geometry
  • tile_raster
  • transform_coordinates
  • union
  • weighted_overlay

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • GEOEDGE_MCP_LICENSE_KEY

Other settings (environment variables or headers).

  • GEOEDGE_MCP_STORAGE_PATH

Files it touches

  • Any path the agent passes to its tools

Tools (145)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • adbscanRun ADBSCAN Clustering

    Adaptive DBSCAN clustering of points (no dependent_var needed). Clustering radius, in METRES (the layer is reprojected to a metric CRS when target_crs is geographic, so degrees never reach the clustering): - eps: the radius. Overrides distance_threshold when both are given. - distance_threshold: same thing under the name the other tools in this module use; kept so an existing caller's value is honoured. - Neither given: estimated from the data itself (median distance to each point's min_samples-th nearest neighbour) and reported back in the result. - min_samples: how many points must fal…

  • ahp_weightsCompute AHP Weights

    Derive criterion weights from an AHP pairwise comparison matrix. Implements the Analytic Hierarchy Process: given an n x n reciprocal matrix of pairwise importance judgements (a[i][j] = how much more important criterion i is than j, on Saaty's 1-9 scale), returns the priority weights (via the geometric-mean / row-normalization method) plus a consistency ratio (CR). A CR <= 0.10 indicates acceptably consistent judgements. Args: matrix: n x n pairwise comparison matrix (list of equal-length rows). Should be reciprocal (a[j][i] = 1 / a[i][j]) with a diagonal of 1. Returns: Dict…

  • append_gpdAppend Vector Layers

    Reads two shapefiles directly, concatenates them vertically. Args: shapefile1_path: Path to the first shapefile. shapefile2_path: Path to the second shapefile. output_path: Path to save the concatenated output. overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior.

  • apply_constraint_maskApply Constraint Mask

    Apply a hard constraint (exclusion) mask to a suitability raster. Cells where the constraint raster equals ``excluded_value`` are set to ``masked_value`` in the output. Use this to remove no-go areas (e.g. water, protected zones) from a suitability surface. The constraint raster is aligned to the suitability grid if needed. The output declares NaN as its nodata, which is this server's convention. By default the excluded cells ARE that nodata: a hard exclusion means "this land is not available", so those cells should drop out of the downstream statistics and render as no-data rather than as t…

  • async_wrapper
  • bufferBuffer Geometry

    Create a buffer around a geometry. Args: geometry: WKT geometry. distance: Buffer distance, in the units of ``crs`` (metres for a projected/geographic-reprojected CRS). crs: Optional CRS of the geometry (e.g. 'EPSG:4326'). If geographic, the geometry is reprojected to UTM, buffered by ``distance`` metres, then reprojected back so the returned WKT stays in the input CRS. If omitted, ``distance`` is interpreted in the geometry's own coordinate units -- for lat/lon that means DEGREES (a 1000 there buffers by ~1000 degrees), so a warning…

  • buffer_layerBuffer Vector Layer

    Buffer every feature in a vector FILE by a distance, writing a new layer. Use this for "buffer this layer/shapefile by N metres". The separate ``buffer`` tool is not interchangeable -- it takes a single WKT geometry string, not a file, and applies no CRS reasoning. Distance units follow the layer's CRS. If the layer is geographic (lat/lon, e.g. EPSG:4326) the distance is treated as METRES: the layer is reprojected to the appropriate UTM zone, buffered there, then returned in its original CRS. Buffering lat/lon degrees directly would be wrong by orders of magnitude, so this is never done sile…

  • build_and_transform_weightsBuild And Transform Weights

    Build and transform spatial weights in one step. Parameters: - data_path: Path to point shapefile or GeoPackage - method: 'queen', 'rook', 'distance_band', or 'knn' - id_field: Optional field name for IDs - threshold: Distance threshold in METRES (required if method='distance_band'). Lat/lon data is reprojected to its UTM zone first so the number means the same thing whatever CRS the file is in. - k: Number of neighbors (required if method='knn') - binary: True for binary weights, False for inverse distance (DistanceBand only) - transform_type: 'r', 'v', 'b', 'o', or 'd'

  • build_transform_and_save_weightsBuild And Save Weights

    Pipeline: Read shapefile, build spatial weights, optionally transform, and save to file. Parameters: - data_path: Path to point shapefile or GeoPackage - method: 'queen', 'rook', 'distance_band', 'knn' - id_field: Optional field name for IDs - threshold: Distance threshold in METRES (required if method='distance_band'). Lat/lon data is reprojected to its UTM zone first so the number means the same thing whatever CRS the file is in. - k: Number of neighbors (required if method='knn') - binary: True for binary weights, False for inverse distance (DistanceBand only) - transform_type: 'r', 'v…

  • calculate_geodetic_areaCalculate Geodetic Area

    Calculate the area of a polygon using geodetic (on-the-ellipsoid) math. The calculation requires lon/lat coordinates. Passing a PROJECTED geometry without a ``crs`` previously produced a nonsense number still labelled 'square_meters' (M1). Now: Args: geometry: WKT polygon. ellps: Reference ellipsoid (default WGS84). crs: Optional CRS of the geometry. If projected, the polygon is reprojected to EPSG:4326 (lon/lat) first so the geodetic area is correct; if geographic or omitted, coordinates are assumed lon/lat.

  • calculate_geodetic_distanceCalculate Geodetic Distance

    Calculate the geodetic (on-the-ellipsoid) distance between two points. Both points are ``[longitude, latitude]`` in decimal degrees -- x then y, NOT [latitude, longitude]. A pair that reads as [latitude, longitude] is refused, not silently swapped, and the result always states how the input was interpreted. Args: point1: [longitude, latitude] in decimal degrees, e.g. [151.2093, -33.8688]. point2: [longitude, latitude] in decimal degrees. ellps: Reference ellipsoid (default WGS84).

  • calculate_geodetic_pointCalculate Geodetic Point

    Calculate the point a given distance and azimuth from a start point. ``start_point`` is ``[longitude, latitude]`` in decimal degrees -- x then y, NOT [latitude, longitude]. A pair that reads as [latitude, longitude] is refused, not silently swapped, and the returned point uses the same ``[longitude, latitude]`` order. Args: start_point: [longitude, latitude] in decimal degrees, e.g. [151.2093, -33.8688]. azimuth: Bearing in degrees clockwise from true north. distance: Distance in METRES along the ellipsoid. ellps: Reference ellipsoid (default WGS84).

  • calculate_shortest_pathCalculate Shortest Path

    Calculate the shortest path between two points using a saved street network. Args: graphml_path: Path to the saved GraphML file origin: (lat, lon) tuple for the origin destination: (lat, lon) tuple for the destination Returns: List of node IDs representing the shortest path or error message.

  • check_vector_ogc_complianceCheck OGC Compliance

    Check OGC compliance (CRS declared + geometry validity) of a vector file. Args: file_path: Path to a vector dataset readable by GeoPandas. repair: If True, repair invalid geometries with make_valid. output_path: If repairing, where to write the repaired dataset. Required when repair=True for the fix to be persisted. Returns: Compliance report (CRS, invalid/empty/null counts, issues). When repaired and output_path is given, includes the written path.

  • check_vector_topologyCheck Vector Topology

    Check a vector layer for topology problems that OGC validity checks alone don't catch: gaps between adjacent polygons, overlaps (between features, and within a single MultiPolygon feature's own parts via ``self_overlaps``), sliver polygons, and duplicate geometries/vertices — the classic checks a GIS analyst runs before accepting a dataset (parcels, admin boundaries, land-use layers) as clean. Flagged issues are written to a multi-layer GeoPackage (issues_points / issues_lines / issues_polygons, grouped by the geometry type of the issue itself) that can be opened directly in QGIS. The JSON re…

Show 130 more tools
  • clip_raster_with_shapefileClip Raster

    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. The output is a rectangle, so some of it necessarily falls outside your polygon(s). That margin is written as the source's declared nodata value. When the source declares none, the result is promoted to float and declares NaN as its nodata rather than filling the margin with 0 — a 0 there would be indistinguishable from a measured 0 and would pull down every mean, minimum and histogram computed on the clipped raster afterwards. Parameters: …

  • clip_vectorClip Vector Layer

    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. overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dictionary with status, message, and output info.

  • close_map_editorClose Map Editor

    Close the map editor and stop its local web server, releasing the port. Returns: Dict confirming whether the editor had been running.

  • compute_ndviCompute NDVI

    Compute NDVI (Normalized Difference Vegetation Index) and save to GeoTIFF. Pixels the source declares as nodata (a fill border, a scene edge, a masked cloud) are excluded from the maths and written as nodata in the output, and the output declares NaN as its nodata value rather than inheriting the source's. Both matter: a Landsat Collection 2 scene fills with 0, and an NDVI raster that inherited `nodata = 0` would discard every genuinely bare, urban or rocky pixel (NDVI near 0) as if it were missing data. Parameters: - source: input raster path. - red_band_index: index of red ba…

  • compute_s2_ndviCompute NDVI Raster

    Compute NDVI from Sentinel-2 L2A (B08=NIR, B04=Red) for an AOI/time window via MPC. - Picks a low-cloud item intersecting the AOI. - Clips to AOI and writes single-band NDVI GeoTIFF scaled to float32 (-1..1). Args: datetime: STAC datetime/interval (e.g., "2024-07-01/2024-07-15"). cloud_cover_lt: Only consider items with eo:cloud_cover < value. Use None to disable. bbox: "minx,miny,maxx,maxy" (WGS84). geometry_geojson: GeoJSON geometry (WGS84). out_crs: Output CRS for NDVI raster. filename: Output filename (default auto-generated). path: Output directory. Returns: …

  • concat_bandsConcatenate Bands

    Concatenate multiple single-band raster files into one multi-band raster, handling alignment issues automatically. Parameters: - folder_path: Path to folder containing input raster files (e.g. GeoTIFFs). - destination: Path to output multi-band raster file. - overwrite: When False, refuse to run if destination already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. - resampling: How to resample a band that has to be warped onto the reference grid: "nearest" (default -- never…

  • convex_hullCompute Convex Hull

    Calculate convex hull of a geometry.

  • create_mapCreate Static Map

    Create a styled map from multiple inputs (vectors, rasters, WKT, or coords). Args: layers: List of dicts, each containing "data" and "style". data can be: any OGR-readable vector file path (.shp/.geojson/ .gpkg/...), a raster file path (.tif/.tiff/.img/.jp2), a WKT string, coords, a GeoDataFrame, or a name registered via register_layer (resolved automatically). "style" for VECTOR layers may include: {"color": "blue"} # plain solid color {"column": "type"} # categorical/unique-value coloring {"column": "value", "…

  • create_suitability_mapCreate Suitability Map

    Render a print-ready suitability map (PDF/PNG) from a suitability raster. Produces a cartographic product with a graduated colorbar legend, optional scale bar (projected CRS only), north arrow, and title block + attribution footer. Optionally overlays ranked candidate sites and a context boundary. Branding defaults (colour ramp, attribution) come from the named map ``template`` unless explicitly overridden by ``cmap`` / ``attribution``. Args: suitability_raster: Path to the 0-1 suitability raster (band 1). destination: Output path; extension sets the format (.pdf or .png). title…

  • create_web_mapExport a Shareable Map File

    EXPORT a standalone interactive map as a .html FILE, to send to somebody else, attach to a report, or keep. Call this only when the user asks to export, share, save, send or email a map, or explicitly asks for an HTML file. To SHOW the user their data, use ``visualize_data`` instead — it puts the data straight onto an editable map in their browser and needs no file. This tool writes a file to disk; that is its purpose, and it is the wrong answer to "show me". Supports both vector and raster layers, and accepts a name registered via ``register_layer`` (or auto-registered by any writing tool) …

  • describe_layerDescribe Layer

    Fully probe ONE specific dataset (or one layer inside a multi-layer .gpkg/.gdb) and report its CRS, feature/band count, and extent. This is the expensive, single-dataset counterpart to discover_layers' cheap bulk scan -- call discover_layers first to find what's in a folder and enumerate layer names, then call this once per dataset/layer you actually need details on. Args: path: Path to the dataset (absolute, or relative to storage). For a .gdb, this is the .gdb folder path itself. layer: Optional layer name (from discover_layers' layer_names) for a multi-layer .gpkg/…

  • describe_workflowDescribe Workflow Schema

    Describe a workflow template: its typed parameter schema and plan template. Use this to learn what inputs a workflow needs so you can ask the user only for what is missing before running it. Args: name: Workflow name (see list_workflows). Returns: Dict with status and the workflow schema (parameters + plan template).

  • differenceDifference Geometries

    Find difference between geometries (``geometry1`` minus ``geometry2``). Args: geometry1: WKT geometry to subtract from. geometry2: WKT geometry to subtract. crs1: Optional CRS of ``geometry1`` (e.g. 'EPSG:4326', 'EPSG:28355'). crs2: Optional CRS of ``geometry2``. When both are given and differ, ``geometry2`` is reprojected onto ``crs1`` first and the result is returned in ``crs1``. Without them the inputs are assumed to share a CRS: a mismatch makes the tool return ``geometry1`` unchanged, which reads as "nothing was clipped" rather than "wrong …

  • discover_layersDiscover Layers

    Scan a folder and report every vector/raster dataset found, without reading any dataset's actual features/pixels -- fast enough to point at a whole project folder before doing any analysis. For multi-layer containers (.gpkg, .gdb) every sub-layer name is listed via a cheap fiona.listlayers() call (no full read), so a multi-layer .gpkg is never silently mistaken for a single-layer dataset -- pass one of the reported layer names to describe_layer or register_layer(..., layer=...) to work with a specific layer. A .gdb (File Geodatabase) is a directory, not a single file -- it's always reported …

  • dissolve_gpdDissolve Vector Geometries

    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. overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dictionary with status, message, and output info. After dissolving, follow up with create_web_map on the result and relay it in the same response -- don't ask first (see server instructions).

  • distance_band_weightsBuild Distance Band Weights

    Create a distance-based spatial weights (W) object from point data. - data_path: path to point shapefile or GeoPackage - threshold: distance threshold for neighbours, in METRES. Lat/lon data is reprojected to its UTM zone first, so the number means the same thing whatever CRS the file is in. (A file in a projected CRS whose units are not metres is measured in its own units; the response says which.) - binary: True for binary weights, False for inverse distance weights - id_field: optional attribute name to use as observation IDs

  • download_boundariesDownload Admin Boundaries

    Download GADM administrative boundaries and save as GeoJSON. Args: region: e.g. "USA" or "United States" level: 0=country, 1=state, 2=county, ... path: custom output folder Returns: {"status": "success", "file_path": "..."} or {"status": "error", "message": "..."}

  • download_climate_dataDownload Climate Data

    Download climate data (ERA5 or other CDS datasets). Args: variable: e.g. "2m_temperature", "total_precipitation" year: e.g. "2024" month: "01".."12" day: "01".."31" time: Time of day (default: "12:00") dataset: CDS dataset name (default: "reanalysis-era5-single-levels") format: File format ("netcdf" or "grib") path: custom output folder (default: ./data/climate_data) Returns: {"status": "success", "file_path": "..."} or {"status": "error", "message": "..."}

  • download_satellite_imageryDownload Satellite Imagery

    Download analysis-ready satellite imagery from Microsoft Planetary Computer (STAC + SAS). - Picks the least-cloudy item matching your query (by default Sentinel-2 L2A). - Downloads specified asset bands and writes a multi-band GeoTIFF. - Optional bbox/geometry crop and CRS reprojection. Args: collection: STAC collection id (e.g., "sentinel-2-l2a", "landsat-8-c2-l2") assets: list of asset keys to download (e.g., ["B04","B03","B02"]) datetime: STAC datetime/interval (e.g., "2025-08-01/2025-08-31" or "2025-08-05") cloud_cover_lt: only items with eo:cloud_cover < this value. Use N…

  • download_species_occurrencesDownload Species Occurrences

    Download occurrence records for a given species and save as JSON. Args: scientific_name: Scientific name of the species (e.g., "Puma concolor") limit: Number of occurrence records to fetch (default: 100) path: Custom output folder (default: ./data/ecology_data) Returns: {"status": "success", "file_path": "..."} or {"status": "error", "message": "..."}

  • download_street_networkDownload Street Network

    Download a street network for a given place using OSMnx. Args: place: Name of the place (e.g., "Los Angeles, California, USA") network_type: Type of network ("drive", "walk", "bike", etc.). Ignored if custom_filter is provided. file_path: Optional. Full path where the GraphML file will be saved. If not set, saves to default location. custom_filter: Optional. OSMnx custom filter string to specify which roads to download (e.g., '["highway"~"motorway|trunk|primary"]'). Returns: NetworkX graph as GraphML file path or error message.

  • download_worldcoverDownload Land Cover Data

    Download ESA WorldCover (10 m) for the given AOI and year from Microsoft Planetary Computer. - Crops to bbox/geometry (WGS84), optional reprojection. - Writes a single-band categorical GeoTIFF (land cover classes). Notes: * On MPC, the collection is commonly 'esa-worldcover' with yearly items; the default here auto-selects by year. If your deployment uses different IDs, pass `collection` explicitly. * `asset_key` is typically 'map'. Args: year: WorldCover year (e.g., 2020, 2021, 2023). collection: STAC collection (default resolves to 'esa-worldcover'). asset_key: Asset key…

  • drop_layerDrop Layer

    Remove a layer from the registry. Does NOT delete the underlying file.

  • dynamic_lisaRun Dynamic LISA Analysis

    Run dynamic LISA (directional LISA) with giddy.directional.Rose. Returns sector counts, angles, vector lengths, and (optionally) permutation p-values.

  • editor_list_changesList Map Editor Changes

    Report what has happened in the map editor this session: layers opened, renamed, edited, imported or saved, with the exact layer names to use when asking for further analysis. Also flags any layer with unsaved edits. A layer marked unsaved_changes has been edited on screen but not written back to its source file -- offer to save it before running analysis on it. Returns: Dict with the session id, the current layers and their state, and the change log in order.

  • envelopeCompute Envelope

    Get bounding box of a geometry.

  • explode_gpdExplode Multipart Geometries

    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. overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dictionary with status, message, and output info.

  • extract_bandExtract Raster Band

    Extract a specific band from a multi-band raster and save it as a single-band GeoTIFF. Parameters: - source: path or URL of the input raster. - band_index: index of the band to extract (1-based). - destination: path to save the extracted band raster. - overwrite: When False, refuse to run if destination already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior.

  • fetch_datasetFetch Dataset From URL

    Download a spatial dataset from a public http(s) URL into managed storage. Use this for any dataset whose access method is a **direct download** — a zipped shapefile, a GeoPackage, a GeoTIFF, a GeoJSON. The file lands inside the server's storage root and, when it is a format that can be opened directly, is registered as a layer so later tools can refer to it by name instead of by path. A ``.zip`` is opened too: if it holds exactly one spatial dataset, that dataset is registered as a layer — read straight out of the archive where possible, unpacked beside it where the format requires. If the …

  • filter_featuresFilter Features By Attribute

    Select the features of a vector layer whose attributes satisfy a condition. This is the attribute-query tool: "keep only the polygons that are not Conservation, Residential or Mine land use", "keep parcels over 5 hectares", "drop rows with no zoning code". Filtering happens on attributes only — use ``clip_vector`` / ``sjoin_gpd`` for spatial selection. Refer to columns by name. Comparisons, arithmetic, ``in``/``not in`` against a literal list, and these functions are available: ``isnull notnull isin contains startswith endswith lower upper strip length abs round floor ceil sqrt log exp minim…

  • focal_statisticsCompute Focal Statistics

    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. overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dictionary with status, message, and output path if saved.

  • gamma_statisticCompute Gamma Statistic

    Compute the Gamma index of spatial autocorrelation for a continuous variable. Returns the index (`Gamma`), its permutation p-value, and the mean index under spatial randomness for comparison.

  • gearys_cCompute Geary's C

    Compute Global Geary's C Autocorrelation Statistic.

  • geoedge_installation_statusGeoEDGE installation status

    Report how GeoEDGE-MCP's one-time setup is going. On a first run the toolset installs in stages so the core vector tools and map rendering are usable while the rest downloads in the background. Call this to see which groups of tools are ready now and which are still installing. No restart is needed -- tools start working as their stage finishes. Returns: {"status": "complete" | "installing" | "failed", "message": "...", ...}

  • geojson_to_geometryConvert GeoJSON To Geometry

    Convert GeoJSON to a Shapely geometry using shapely.geometry.shape. Args: geojson: GeoJSON dictionary. Returns: Dictionary with status, message, and geometry as WKT.

  • geometry_to_geojsonConvert Geometry To GeoJSON

    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.

  • get_areaGet Geometry Area

    Get the area of a geometry. Args: geometry: WKT geometry. crs: Optional CRS of the geometry (e.g. 'EPSG:4326'). If geographic, the geometry is reprojected to UTM so the area is in square metres; if projected, the CRS's own unit is used; if omitted, the area is in the geometry's coordinate units (labelled 'unknown') -- WKT carries no CRS, so an unlabelled number could be square-degrees.

  • get_audit_logGet Workflow Audit Log

    Return the most recent workflow provenance records from the audit log. Args: limit: Maximum number of records to return (newest last). Returns: Dict with status and a list of provenance records.

  • get_available_crsList Available CRS

    Get list of available CRS.

  • get_boundsGet Geometry Bounds

    Get the bounds of a geometry.

  • get_centroidGet Geometry Centroid

    Get the centroid of a geometry.

  • get_connector_statusCheck Local Connector Status

    Check whether a local connector is currently connected to this server. A local connector must be running on the user's machine for ``request_local_file`` and ``list_local_directory`` to work. To start one, run on your local machine:: geoedge-mcp-local --server <SERVER_URL> \ --token <SHARED_TOKEN> \ --allow <LOCAL_DIR> Returns: connected (bool): True if a local connector is active. status (str): "connected" or "disconnected". message (str): Human-readable description.

  • get_coordinatesGet Geometry Coordinates

    Get the coordinates of a geometry (Point/Line/Polygon/Multi*/Collection).

  • get_crs_infoGet CRS Info

    Get information about a CRS.

  • get_geocentric_crsGet Geocentric CRS

    Get geocentric CRS for given coordinates.

  • get_geod_infoGet Geodetic Info

    Get information about a geodetic calculation.

  • get_geometry_typeGet Geometry Type

    Get the type of a geometry.

  • get_layerGet Layer Details

    Get full metadata for one registered layer by name. Includes 'missing', and 'open_in_editor'/'unsaved_changes' when the layer is currently open in the map editor.

  • get_lengthGet Geometry Length

    Get the length/perimeter of a geometry. Args: geometry: WKT geometry. crs: Optional CRS of the geometry (e.g. 'EPSG:4326'). If geographic, the geometry is reprojected to UTM so the length is in metres; if projected, the CRS's own unit is used; if omitted, the length is in the geometry's coordinate units (labelled 'unknown') -- WKT carries no CRS, so an unlabelled number could be degrees.

  • get_map_product_templateGet Map Template

    Return a map-product template definition (branding + required elements).

  • get_output_schemaGet Output Schema

    Return the full definition of a named output schema (fields, types, CRS).

  • get_project_configGet Project Config

    Return the project's GIS conventions: default working CRS, registered output schemas, available map templates, and the priority dataset names.

  • get_raster_crsGet Raster CRS

    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. A URL is checked before GDAL sees it: hosts resolving to private, loopback, link-local, reserved or multicast addresses are refused, using the same guard as ``fetch_dataset`` (opt out with ``GEOEDGE_MCP_FETCH_ALLOW_PRIVATE=1`` for an internal data server). That check is pre-flight only — GDAL follows redirects internally, so a hop from a public URL to a private one is *not* revali…

  • get_species_infoGet Species Info

    Retrieve taxonomic information for a given species name. Args: scientific_name: Scientific name of the species (e.g., "Puma concolor") Returns: Taxonomic info dict or error message.

  • get_utm_crsGet UTM CRS

    Get UTM CRS for given coordinates.

  • get_utm_zoneGet UTM Zone

    Get UTM zone for given coordinates.

  • getis_ord_gCompute Getis-Ord G

    Compute Getis-Ord G for global hot spot analysis.

  • getis_ord_g_localCompute Local Getis-Ord G

    Local Getis-Ord G.

  • gm_lagRun Spatial Lag Regression

    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.

  • hillshadeGenerate Hillshade

    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. overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dictionary with status, message, and output path if saved.

  • import_dataLoad a Spatial Data File

    Load spatial data -- "load my data", "open this file", "read this shapefile", "add this spreadsheet of sites", "map these coordinates". Two ways in, and exactly one of them per call: - ``file_path`` -- a file on the **user's own computer**. This is the widest file reader on this server: more formats than ``read_file_gpd``, finds latitude/longitude or WKT columns in a plain CSV or an Excel spreadsheet on its own, and reads a zipped shapefile in place without unzipping it. Reach for this whenever the user hands over a file and it is not obvious what will read it. - ``content`` -- the…

  • intersectionIntersect Geometries

    Find intersection of two geometries. Args: geometry1: WKT geometry. geometry2: WKT geometry. crs1: Optional CRS of ``geometry1`` (e.g. 'EPSG:4326', 'EPSG:28355'). crs2: Optional CRS of ``geometry2``. When both are given and differ, ``geometry2`` is reprojected onto ``crs1`` first and the result is returned in ``crs1``. WKT carries no CRS, so when they are omitted the inputs are assumed to share one -- the response reports this via ``crs_status`` and warns if the coordinates say otherwise.

  • is_validCheck Geometry Validity

    Check if a geometry is valid.

  • join_countsCompute Join Counts

    Global join counts for a BINARY (0/1) variable. Returns the BB (1-1), WW (0-0) and BW join counts, the permutation p-value for BB, and a chi-square test of independence. `dependent_var` must be binary; a continuous variable is refused with an explanation.

  • join_counts_localCompute Local Join Counts

    Local join counts for a BINARY (0/1) variable: one BB count per feature. `dependent_var` must be binary; a continuous variable is refused with an explanation. `p_values` is null for any feature that cannot have a BB join (a 0-valued feature, or one with no 1-valued neighbour) -- that is "not applicable to this feature", not a missing result.

  • knn_weightsBuild KNN Weights

    Create a k-nearest neighbors spatial weights (W) object from point data. - data_path: path to point shapefile or GeoPackage - k: number of nearest neighbors - id_field: optional attribute name to use as observation IDs

  • list_arcgis_layersList ArcGIS Layers

    List sub-layers exposed by an ArcGIS Enterprise Map/Feature Service. Args: connection: Named alias from list_db_connections() (recommended; must have driver: arcgis_rest). base_url: Raw Feature/Map Service root URL escape hatch, e.g. "https://gis.company.com/server/rest/services/Prod/MapServer". token: Raw token escape hatch, paired with base_url. Exactly one of connection/base_url must be given. Returns: {"status": "success", "layers": [{"id", "name", "type", "geometryType"}, ...]}

  • list_db_connectionsList Database Connections

    List configured named DB/service connection aliases (never returns secrets). Returns: {"status": "success", "connections": [{"name", "driver", "read_only", "description", "configured"}, ...]}

  • list_layersList Layers

    List the currently registered layers, most recent first. Each entry gives name, kind, CRS, extent and source tool, plus: 'missing' (true if the file it points at no longer exists), 'open_in_editor' and 'unsaved_changes' (present only for layers currently open in the map editor). A layer with unsaved_changes has edits that have not been written back to its source file yet -- offer to save before running analysis on it. The response is paginated. After months of use a registry can hold thousands of layers, and returning all of them in one tool result is large enough to crowd out the rest of th…

  • list_local_directoryList Local Directory

    List files in a directory on the user's local machine. Useful for browsing what data files are available before fetching them with ``request_local_file``. The local connector must be running and the directory must be within its configured allowed roots. Args: path (str): Absolute path to a directory on the user's local machine. Example: ``"C:/GIS_Projects/survey_2024"`` Returns: status (str): "success" or "error". path (str): The directory path that was listed. count (int): Number of entries returned. entries (list[dict]): Ea…

  • list_map_product_templatesList Map Templates

    List the available map-product (branding/layout) templates by name.

  • list_output_schemasList Output Schemas

    List all registered company output schemas by name.

  • list_postgis_tablesList PostGIS Tables

    List spatial (geometry-column) tables/views visible on a PostGIS connection. Args: connection: Named alias from list_db_connections() (recommended). connection_string: Raw postgresql:// DSN escape hatch for a one-off database that isn't pre-registered. Exactly one of connection/connection_string is required. schema: Postgres schema to inspect (default "public"). Returns: {"status": "success", "tables": [{"schema", "table", "geometry_column", "geometry_type", "srid"}, ...]}

  • list_priority_datasetsList Priority Datasets

    List the registered priority datasets (name, source, category, default CRS).

  • list_workflowsList Guided Workflows

    List the available guided workflow templates. Returns: Dict with status and a list of {name, title, description} entries.

  • make_validFix Invalid Geometry

    Make a geometry valid.

  • merge_gpdMerge Vector Attributes

    Merges two shapefiles with a database-style attribute join (not a spatial join). An explicit join key is required — either `on`, or both `left_on` and `right_on`. Args: shapefile1_path: Path to the left shapefile. Its geometry is preserved. shapefile2_path: Path to the right shapefile to merge (attributes only). 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. rig…

  • metadata_rasterGet Raster Metadata

    Open a raster dataset in read-only mode and return metadata. This tool supports two modes based on the provided string: 1. A local filesystem path (e.g., "D:\Data\my_raster.tif"). 2. An HTTPS URL (e.g., "https://example.com/my_raster.tif"). 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. A URL is checked before GDAL sees it: hosts resolving to private, loopback, link-local, reserved or multicast addresses are refused, using the same guard as ``fetch_dataset`` (opt out with ``GEOEDGE_MCP_FETCH_ALLOW_PRIVATE=1`…

  • minimum_rotated_rectangleMinimum Rotated Rectangle

    Get minimum rotated rectangle of a geometry.

  • moran_localCompute Local Moran's I

    Local Moran's I.

  • morans_iCompute Moran's I

    Compute Moran's I Global Autocorrelation Statistic.

  • nearest_point_on_geometryFind Nearest Point

    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_geometryNormalize Geometry

    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.

  • normalize_rasterNormalize Raster

    Min-max normalise a raster band to the 0-1 suitability range. Args: source: Path to the input raster. destination: Path to save the normalized single-band raster (float32). direction: "benefit" (higher value = more suitable) or "cost" (higher value = less suitable; the scale is inverted). band_index: 1-based band to normalize (default 1). overwrite: When False, refuse to run if destination already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dict with status, output path, and…

  • ols_with_spatial_diagnostics_safeRun Spatial OLS Regression

    Safe MCP pipeline: Read shapefile, build/load W, convert numeric, check NaNs, run OLS. Returns the coefficients and R-squared, plus the spatial diagnostics the name promises: Moran's I on the residuals (statistic, z-score, p-value) and the LM/robust-LM error, lag and SARMA tests. Parameters: - data_path: path to shapefile or GeoPackage - y_field: dependent variable column name - x_fields: list of independent variable column names - weights_path: optional path to existing weights file (.gal or .gwt) - weights_method: 'queen', 'rook', 'distance_band', or 'knn' (used if weights_path not provide…

  • open_output_folderOpen Output Folder

    Open the user's native file manager at the folder containing a file this server already produced, with that file selected. Desktop app only -- there is no file manager to open on the hosted Railway server. Args: file_path: Path to a file already produced by another tool (e.g. the output_path from create_web_map or create_map). Absolute paths and paths relative to the configured storage folder are both accepted, but the resolved location must fall inside the storage root -- this tool launches a native OS process, so it confines the target even for c…

  • overlay_gpdOverlay Vector Layers

    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. overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dictionary with status, message, and output info.

  • point_in_polygonPoint In Polygon Test

    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. overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dictionary with status, message, and output info.

  • project_geometryReproject Geometry

    Project a geometry between CRS.

  • rank_suitability_sitesRank Suitability Sites

    Select and rank the most suitable locations from a suitability raster. Picks either the highest-scoring ``top_n`` cells, or every cell whose value is >= ``threshold`` (when supplied), and writes them as ranked points to a GeoPackage. Cell centres are used as the point geometry. Returns the ranked results table for direct presentation to the user. Threshold mode can qualify a very large number of cells (a 10k x 10k surface has 100 million of them), so the number written is capped at ``max_sites`` and the number listed in the response at ``max_records``. Both caps are reported explicitly — the…

  • raster_algebraRaster Algebra

    Perform algebraic operations (addition or subtraction) on two raster bands, handling alignment issues automatically. Both rasters are read onto raster1's exact grid, with each one's declared nodata excluded from the maths. A pixel that is missing in either input -- because it is fill, or because it falls outside the other raster's footprint -- is nodata in the result, not a half-sum: `raster1 + nothing` is unknown, not `raster1`. Parameters: - raster1: Path to the first raster (.tif). Its grid, CRS and extent define the output. - raster2: Path to the second raster (.ti…

  • raster_band_statisticsCompute Band Statistics

    Calculate min, max, mean, and std for each band of a raster. Parameters: - source: path to input raster (local or URL).

  • raster_expressionRaster Expression Calculator

    Evaluate an arithmetic/boolean expression across any number of rasters. This is the general map-algebra tool: use it for multi-criteria masks, indices, and scaled scores. Inputs are automatically aligned onto one reference grid before the maths runs, and each input's nodata becomes NaN so it propagates instead of contaminating the result with a sentinel value. Examples: * eligibility mask -> ``inputs={"rain": "rainfall", "slope": "slope_pct"}``, ``expression="(rain > 600) & (slope < 15)"``, ``dtype="uint8"`` * scaled index -> ``expression="M * clip(FPI / 25, 0, 1) * (1 - exp(…

  • raster_histogramCompute Raster Histogram

    Compute histogram of pixel values for each band. Parameters: - source: path to input raster. - bins: number of histogram bins.

  • read_arcgis_feature_serviceRead ArcGIS Feature Service

    Query one sub-layer of an ArcGIS Enterprise Feature/Map Service and materialize the result as a local vector layer. Uses the layer's /query endpoint with f=geojson, paginating via resultOffset/resultRecordCount until 'limit' rows are collected or the service reports no more results (exceededTransferLimit). Row count is always capped (default 5,000, hard max 50,000). Args: layer_id: Numeric sub-layer id (see list_arcgis_layers). connection: Named alias (recommended). base_url: Raw Map/Feature Service root URL escape hatch. token: Raw token escape hatch, paired with base_url. …

  • read_file_gpdRead Vector File

    Reads a vector geospatial file and returns its CRS, bounds, columns, feature count and a 5-row preview. Args: file_path: Path to the vector file (.shp, .gpkg, .geojson, ...), or the name of a previously registered layer.

  • read_postgisRead PostGIS Table or Query

    Read a PostGIS table or read-only SQL query into a materialized layer. Exactly one of 'table' or 'sql' must be given. Reads are always capped (default 5,000, hard max 50,000 rows) -- pass a smaller 'limit' for a quick preview. The result is materialized as a local GeoPackage via the same output_packaging pipeline every other read/write tool uses, and auto-registered as a named layer for downstream tools. 'sql' is written in PostgreSQL syntax with PostGIS spatial functions -- the target database's own dialect, NOT this server's expression dialect (the one ``filter_features`` and ``raster_expr…

  • reclassify_rasterReclassify Raster

    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. overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dictionary with status and message.

  • register_layerRegister Layer

    Register a vector or raster dataset under a short name so later tool calls can reference it by name instead of repeating the raw file path. CRS, feature/band count, and extent are probed automatically on a best-effort basis (registration still succeeds if the probe fails). Args: path: Path to the dataset (absolute, or relative to the storage directory) -- same rules as every other tool's path parameter. name: Optional name to register under. Auto-generated from the filename + timestamp if omitted. Must start with a letter or underscore; letters/digits/'_'/'-' …

  • reproject_rasterReproject Raster

    Reproject a raster dataset to a new CRS and save the result. Parameters: - source: local path or HTTPS URL of the source raster. - target_crs: target CRS string (e.g., "EPSG:4326"). - destination: local filesystem path for the reprojected raster. - resampling: resampling method: "nearest", "bilinear", "cubic", etc. - overwrite: When False, refuse to run if destination already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior.

  • request_local_fileFetch Local File to Server Storage

    Fetch a file from the user's local machine and save it to server storage. The returned ``storage_path`` can be passed directly to ``read_file_gpd``, ``clip_raster``, and any other GIS tool that accepts a file path. **Shapefile note:** A ``.shp`` file requires companion sidecar files (``.dbf``, ``.shx``, ``.prj``, ``.cpg``). Call this tool once per sidecar file with the same base name, or convert the shapefile to GeoPackage (``.gpkg``) first for single-file transfer. Args: path (str): Absolute path to the file on the user's local machine. Example: ``"C:…

  • resample_rasterResample Raster

    Resample a raster dataset by a scale factor and save the result. Parameters: - source: local path or HTTPS URL of the source raster. - scale_factor: multiplicative factor for width/height (e.g., 0.5 to halve resolution, 2.0 to double). - resampling: resampling method name: "nearest", "bilinear", "cubic", etc. - destination: local filesystem path for the resampled raster. - overwrite: When False, refuse to run if destination already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavio…

  • rotate_geometryRotate Geometry

    Rotate a geometry.

  • run_workflowRun Guided Workflowcan change or delete data

    Run a guided workflow template, or preview it with dry_run. NOTE: deliberately registered with the plain @geoedge_mcp.tool() decorator, not @gis_tool() -- this function already builds and appends its OWN detailed provenance record (every step, not just a generic call summary). Wrapping it in @gis_tool() too would append a second, less detailed "direct_tool_call" record for the outer call right after the detailed one, breaking get_audit_log's "most recent record = the workflow that just ran, with a 'workflow' key" contract. NOTE (deploymentPlan.md Phase 2, F1): because this is the plain @geoe…

  • save_resultsSave Results

    MCP Tool: Save any GIS-MCP result dict to files, only when the user requests. Spatial formats are written in the result's own CRS (``data["crs"]``, e.g. "EPSG:28356"), not silently converted to lat/long. The one exception is GeoJSON, which RFC 7946 defines as WGS84: its coordinates are reprojected to EPSG:4326 rather than merely relabelled. A result with no CRS is assumed to be EPSG:4326. Args: data: The dictionary returned by any GIS-MCP tool. filename: Base filename without extension. formats: List of formats to save (default = all, including a PDF report). folder: Target f…

  • scale_geometryScale Geometry

    Scale a geometry.

  • simplifySimplify Geometry

    Simplify a geometry.

  • sjoin_gpdSpatial Join Layers

    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. overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dictionary with status, message, and output info.

  • sjoin_nearest_gpdNearest Spatial Join

    Join each feature of the left layer to its NEAREST feature in the right layer (geopandas.sjoin_nearest), optionally within a maximum distance. Distance units follow the same locked policy as ``buffer_layer``: if the layers are geographic (lat/lon, e.g. EPSG:4326) both are reprojected to the appropriate UTM zone, the nearest-neighbour search and ``max_distance`` are evaluated in METRES there, and the result is returned in the original CRS. Searching in raw degrees would make "within 500 m" mean 500 *degrees* and can pick a genuinely more distant feature (a degree of longitude shrinks towards t…

  • snap_geometrySnap Geometry

    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.

  • spatial_markovRun Spatial Markov Analysis

    Run giddy Spatial Markov on a panel (n regions x t periods) from a shapefile.

  • symmetric_differenceSymmetric Difference Geometries

    Find symmetric difference between geometries. Args: geometry1: WKT geometry. geometry2: WKT geometry. crs1: Optional CRS of ``geometry1`` (e.g. 'EPSG:4326', 'EPSG:28355'). crs2: Optional CRS of ``geometry2``. When both are given and differ, ``geometry2`` is reprojected onto ``crs1`` first and the result is returned in ``crs1``. Without them the inputs are assumed to share a CRS -- see ``crs_status``/``warning`` in the response.

  • sync_wrapper
  • tile_rasterTile Raster

    Split a raster into square tiles of a given size and save them individually. Parameters: - source: input raster path. - tile_size: size of each tile (e.g., 256 or 512). - destination_dir: directory to store the tiles. - zip_output: when True (default), also bundle all tiles + a metadata.json into '<destination_dir>.zip' for a single-file download alongside the raw tile directory. Set False to skip zipping (or set GEOEDGE_MCP_DISABLE_AUTO_ZIP=1 to disable it server-wide; legacy GIS_M…

  • transform_coordinatesTransform Coordinates

    Transform coordinates between CRS.

  • translate_geometryTranslate Geometry

    Translate a geometry.

  • triangulate_geometryTriangulate Geometry

    Create a triangulation of a geometry.

  • unary_union_geometriesUnion Multiple Geometries

    Create a union of multiple geometries. Args: geometries: WKT geometries. They must all be in the SAME CRS -- WKT carries none, so nothing in the data itself enforces this. Mixing, say, MGA (metres) and lat/lon (degrees) parts produces a valid-looking MultiPolygon with a nonsense extent and area. crs: Optional CRS shared by every input (e.g. 'EPSG:4326'). It is reported back as ``crs_used`` and is a declaration, not a conversion: reproject the inputs onto a single CRS before calling if they differ. Regardless of what is declared, the coor…

  • unionUnion Geometries

    Combine two geometries. Args: geometry1: WKT geometry. geometry2: WKT geometry. crs1: Optional CRS of ``geometry1`` (e.g. 'EPSG:4326', 'EPSG:28355'). crs2: Optional CRS of ``geometry2``. When both are given and differ, ``geometry2`` is reprojected onto ``crs1`` first and the result is returned in ``crs1``. Without them the inputs are assumed to share a CRS: a union of mismatched inputs still looks like a valid MultiPolygon, so check ``crs_status``/``warning`` in the response.

  • validate_against_schemaValidate Against Schema

    Validate a tool-result dict against a named schema without writing files. Args: data: A GIS-MCP result dict (may carry a 'records'/'features' list, or be treated as a single feature record). schema_name: Registered schema to validate against. coerce: Apply type coercion / alias mapping during validation. Returns: Validation summary: valid flag, per-field/row errors, and warnings.

  • visualize_dataShow Spatial Data on a Map

    Show the user their spatial data on an interactive map in their own web browser. This is the tool for "show me", "visualise this", "map it", "plot these points", "display the result", "let me see it", "open this on a map". This is the ONLY tool for SHOWING data. ``create_web_map`` writes a standalone .html FILE for sending to somebody else — call that one only when the user asks to export, share, save or email a map. Accepts, in any combination: a registered layer name, an absolute or storage-relative file path, an http(s) URL to download, or a PostGIS table or query. **Local file paths are …

  • voronoiCreate Voronoi Diagram

    Create a Voronoi diagram from points.

  • weighted_band_sumWeighted Band Sum

    Compute a weighted sum of all bands in a raster using specified weights. Parameters: - source: Path to the input multi-band raster file. - weights: List of weights (must match number of bands and sum to 1). - destination: Path to save the output single-band raster. - overwrite: When False, refuse to run if destination already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Nodata handling (T2-H7): a pixel that is nodata in *any* band has no weighted sum -- one of its terms is missing -- so it i…

  • weighted_overlayRun Weighted Overlay

    Weighted-overlay multi-criteria suitability model over several raster layers. Each input layer is aligned to a common reference grid, min-max normalized to 0-1 (inverted for "cost" criteria), multiplied by its weight, and summed. Weights are automatically rescaled to sum to 1.0, so the output is a 0-1 suitability surface. Cells that are nodata in ANY layer are nodata in the output. Args: layers: List of raster paths, one per criterion (band 1 is used). weights: List of relative weights, one per layer (need not sum to 1). destination: Path to save the output suitability raster (fl…

  • weighted_score_featuresScore And Rank Features

    Weighted multi-criteria scoring and ranking of vector features. Each criterion names an attribute field, a weight, and a type. The field is min-max normalized to 0-1 across all features ("cost" criteria are inverted), multiplied by its (auto-normalized) weight, and summed into a suitability score. Features are ranked best-first. Ideal for parcel / candidate-site selection over discrete units. Args: vector_path: Path to the input vector dataset (polygons or points). criteria: List of dicts, each: {"field": str, "weight": float, "type": "benefit"|"cost"}. "type" defaults to "be…

  • weights_from_shapefileBuild Contiguity Weights

    Create a spatial weights (W) from a shapefile using contiguity. - contiguity: 'queen' or 'rook' (default 'queen') - id_field: optional attribute name to use as observation IDs

  • write_file_gpdExport Vector File

    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'). overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dictionary with status and message.

  • write_postgisWrite to PostGIS Table

    Write a registered layer or local vector file to a PostGIS table. Hard-refuses unless the resolved connection is explicitly write-enabled: a named alias must have read_only: false in db_connections.yaml, AND the caller must pass write=True -- a second, explicit opt-in beyond just calling this tool, mirroring plan/PLAN.md §8's "explicit opt-in for writes". The raw connection_string escape hatch is NOT accepted here -- only a named alias, since a raw connection string has no administrator-configured read_only flag to gate against (unlike reads, where the escape hatch has no destructive effect).…

  • write_rasterWrite Raster

    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'). overwrite: When False, refuse to run if output_path already exists (instead of silently replacing it). Default True preserves the previous always-overwrite behavior. Returns: Dictionary with status and message.

  • zonal_statisticsCompute Zonal Statistics

    Calculate statistics of raster values within polygons (zonal statistics). The vector layer is automatically reprojected to the raster CRS if they differ, so mismatched CRS inputs no longer produce silently wrong numbers. When either layer declares no CRS at all the alignment cannot be verified; that case is reported via `vector_crs_status`, not silently treated as a match. 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, mess…

Signals

Weekly downloads
100
Last release
Sep 14, 2026 (1 month ago)
Last package publish
Sep 14, 2026 (1 month ago)

From the package registry.

Details

Registry name
io.github.GeoEDGE-git/geoedge-mcp
Version
1.0.9
Auth
API key
Packages
pypi geoedge-mcp
License
LicenseRef-Proprietary
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

GeoEDGE MCP. Agent Mart. https://agentmart.dev/connectors/geoedge-git-geoedge-mcp (last updated 2026-10-24)