Skip to main content
Glama
muend

arcgis-mcp-bridge

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ARCPY_PYTHON_PATHYesPath to the Python interpreter that can import arcpy and pydantic. Required.
ARCGIS_MCP_LOG_FILENoPath to the log file.
ARCGIS_MCP_LOG_LEVELNoLogging level (e.g., DEBUG, INFO, WARNING).
ARCGIS_MCP_MAX_WORKERSNoMaximum number of concurrent arcpy workers. Defaults to 2.2
ARCGIS_MCP_SCRATCH_GDBNoDefault output workspace geodatabase path. Must exist if set.
ARCGIS_MCP_TOOL_TIMEOUTNoPer-job timeout in seconds.
ARCGIS_MCP_ALLOWED_ROOTSNoSemicolon-separated list of allowed root directories for PathGuard sandbox. Defaults to ~/Documents/ArcGIS/Projects.~/Documents/ArcGIS/Projects

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
health_checkA

Verify the full execution pipeline: server -> conda worker -> back.

Spawns a real worker process (without importing arcpy) and reports the
interpreter version plus configuration summary. Use this first when
diagnosing connectivity.
list_layersA

List feature classes, tables and rasters inside a file geodatabase.

Args:
    workspace: Absolute path to a .gdb inside an allowed workspace root.
    dataset_filter: Optional wildcard (e.g. 'roads_*'); None lists all.

Returns:
    ListLayersOutput as JSON: workspace, layers[], elapsed_seconds.
execute_spatial_toolA

Execute one allowlisted geoprocessing tool (Buffer_analysis, Clip_analysis).

Args:
    tool: Allowlisted tool name, e.g. 'Buffer_analysis'.
    in_features: Absolute path to the source dataset (inside allowed roots).
    parameters: Tool-specific arguments. Buffer requires
        'buffer_distance_or_field' (e.g. '100 Meters'); Clip requires
        'clip_features' (a dataset path).
    out_features: Output path. Omit to auto-name inside the scratch GDB.
    overwrite: Must be true to replace an existing output (explicit opt-in).

Returns:
    ExecuteSpatialToolOutput as JSON: status, output_path, messages,
    elapsed_seconds.
create_feature_classB

Create an empty feature class inside an existing file geodatabase using ArcPy CreateFeatureclass. Use this to prepare a controlled output dataset with a chosen geometry type and optional WKID before loading, editing, or analysis. Reads the target geodatabase path inside a PathGuard allowed root and returns the created dataset.

delete_datasetA

Delete an existing feature class, table, raster, or geodatabase item using ArcPy Delete. This operation is irreversible and mutates local project data, so confirm=true is required. The target dataset must be inside a configured PathGuard allowed root.

copy_featuresA

Copy an existing feature class or layer to a new output feature class using ArcPy CopyFeatures. Use this to create a safe working copy while preserving geometry, attributes, schema, and spatial reference. Reads in_features and writes out_features inside PathGuard allowed roots; existing outputs require overwrite=true.

rename_datasetA

Rename an existing dataset within its current workspace using ArcPy Rename. Use this for controlled cleanup of intermediate feature classes, tables, or rasters. This mutates the workspace namespace but does not edit feature geometry or attribute values; the dataset path must be inside a PathGuard allowed root.

add_fieldA

Add one attribute field to an existing feature class or table using ArcPy AddField. Use this to prepare schema before imports, joins, calculations, or manual editing. Mutates the input dataset schema; the dataset must be inside a PathGuard allowed root.

delete_fieldA

Delete one or more fields from an existing feature class or table using ArcPy DeleteField. Use this only when unwanted attribute columns should be permanently removed. This mutates the input schema and drops data, so confirm=true is required.

calculate_fieldA

Calculate values for an existing field using ArcPy CalculateField. Use this for controlled attribute updates with ARCADE, SQL, or PYTHON3 expressions. The default ARCADE mode is preferred for LLM-facing workflows; PYTHON3 executes worker-side code and, like all value overwrites, requires confirm=true.

add_fields_batchA

Add multiple fields to an existing feature class or table in one operation using ArcPy AddFields. Use this to prepare a complete attribute schema before imports, calculations, joins, or QA/QC. Mutates the input dataset schema; field names, types, aliases, and lengths are validated before execution.

get_field_infoA

List field metadata for an existing feature class or table using ArcPy ListFields. Use this to inspect schema before calculating, deleting, joining, or exporting attributes. Returns field names, types, lengths, aliases, and nullable status without modifying data.

get_feature_countA

Return the row or feature count for an existing dataset using ArcPy GetCount. Use this as a lightweight validation step before and after geoprocessing, filtering, import, export, or QA/QC workflows. Reads one dataset inside a PathGuard allowed root and does not modify data.

describe_datasetA

Describe an existing feature class, table, raster, or geodatabase item using ArcPy Describe. Use this to inspect data type, geometry type, coordinate reference system, and extent before choosing an analysis tool. Reads metadata only and does not modify the dataset.

create_file_gdbA

Create a new file geodatabase using ArcPy CreateFileGDB. Use this to prepare a workspace for scratch outputs, copied data, imports, or project-specific analysis results. The parent folder must exist inside a PathGuard allowed root; the tool returns the created geodatabase path.

compact_gdbA

Compact an existing file geodatabase using ArcPy Compact. Use this as maintenance after heavy editing, deletion, or intermediate output cleanup to reclaim storage and improve geodatabase performance. Mutates the geodatabase storage layout but not feature content.

export_to_shapefileA

Export a feature class to shapefile format using ArcPy FeatureClassToShapefile. Use this when data must be shared with legacy GIS tools or systems that require shapefiles. Reads the input features and writes shapefile components into an existing output folder inside PathGuard allowed roots.

export_to_geojsonA

Export features to a WGS84 GeoJSON file using ArcPy FeaturesToJSON. Use this to share vector data with web maps, APIs, notebooks, or non-Esri tools. Reads in_features and writes an output .geojson file inside PathGuard allowed roots; existing files require overwrite=true.

import_from_geojsonA

Convert a GeoJSON file into an ArcGIS feature class using ArcPy JSONToFeatures. Use this to bring web, API, or exchange-format vector data into a geodatabase for ArcGIS analysis. Reads an input .geojson file and writes out_features inside PathGuard allowed roots; existing outputs require overwrite=true.

table_to_excelA

Export an attribute table or feature class table to an Excel workbook using ArcPy TableToExcel. Use this to share tabular GIS attributes with analysts, reports, or spreadsheet workflows. Reads the input table and writes an .xlsx file inside PathGuard allowed roots; existing files require overwrite=true.

excel_to_tableA

Import an Excel worksheet into a geodatabase table using ArcPy ExcelToTable. Use this to bring spreadsheet-based attributes, lookup tables, or external tabular data into ArcGIS. Reads an .xlsx workbook and writes a geodatabase table inside PathGuard allowed roots; existing outputs require overwrite=true.

feature_to_csvA

Export a feature class or table to a CSV file using ArcPy ExportTable. Use this to move attribute data into notebooks, data pipelines, reports, or non-GIS tools. Reads the input table or feature class and writes a .csv output inside PathGuard allowed roots; existing files require overwrite=true.

get_extentA

Return xmin, ymin, xmax, ymax, and CRS metadata for an existing dataset using ArcPy Describe().extent. Use this to understand spatial coverage before clipping, map export, fishnet creation, raster analysis, or spatial QA/QC. Reads metadata only and does not modify the dataset.

calculate_geometryA

Calculate area, length, perimeter, centroid, or point coordinate values into an attribute field using ArcPy CalculateGeometryAttributes. Use this to populate measurement fields for reporting, QA/QC, labeling, or downstream analysis. Mutates the input dataset by writing geometry values into the specified field.

add_xy_coordinatesA

Add or update POINT_X and POINT_Y coordinate fields on point features using ArcPy AddXY. Use this when point coordinates are needed for export, QA/QC, labeling, tabular analysis, or integration with non-GIS systems. Mutates the input dataset by adding or updating coordinate fields, so run it on an intended working dataset.

append_featuresA

Append rows from one or more feature classes or tables into an existing target dataset using ArcPy Append. Use this to load reviewed data, merge field-compatible updates, or add processed batches into a live target. This mutates the target dataset by inserting rows, so confirm=true is required.

repair_geometryA

Repair invalid feature geometry in place using ArcPy RepairGeometry. Use this after check_geometry reports geometry problems or before overlay, topology, network, or export operations that require valid shapes. This rewrites geometry and may delete null geometries, so confirm=true is required.

check_geometryA

Check a feature class for geometry problems using ArcPy CheckGeometry and write the findings to an output table. Use this as a non-mutating QA/QC step before repair_geometry, overlay, topology validation, conversion, or export. Reads the input features and writes a report table inside PathGuard allowed roots.

detect_feature_changesA

Detect spatial or attribute changes between updated features and a reference feature dataset using ArcPy DetectFeatureChanges. Use this for QA/QC, version comparison, update review, or identifying changed features within a search tolerance. Reads update_features and base_features and writes a new out_features change dataset without mutating the originals.

delete_identicalA

Delete duplicate rows from a feature class or table using ArcPy DeleteIdentical based on selected fields and optional geometry tolerance. Use this only on an intended working dataset to remove duplicate records. This operation is irreversible and mutates the input dataset, so confirm=true is required.

eliminate_polygon_partA

Remove small polygon holes or parts using ArcPy EliminatePolygonPart and write a cleaned output feature class. Use this for cartographic cleanup, removing sliver holes, or simplifying polygon interiors by area or percentage thresholds. Reads in_features and writes out_features without modifying the source dataset.

topology_checkA

Validate a geodatabase topology using ArcPy ValidateTopology. Use this to refresh topology rule validation after editing, appending, repair, or geometry cleanup workflows. Reads the topology dataset and returns validation metadata; inspect the topology error feature classes in ArcGIS Pro for rule violations.

list_layoutsA

List all layouts in a saved ArcGIS Pro .aprx project using arcpy.mp listLayouts. Use this to discover layout names, page sizes, and page units before exporting or modifying a layout. Reads the project only and does not save or mutate the .aprx file.

export_layout_pdfA

Export a selected ArcGIS Pro layout to a PDF file using layout.exportToPDF. Use this for print-ready map sheets, reports, submittals, or archival exports with controlled DPI and image quality. Reads the .aprx project and writes out_pdf inside PathGuard allowed roots; existing files require overwrite=true.

export_layout_pngA

Export a selected ArcGIS Pro layout to a PNG image using layout.exportToPNG. Use this for previews, portfolio images, web graphics, or presentation-ready map layouts with controlled DPI and optional transparency. Reads the .aprx project and writes out_png inside PathGuard allowed roots.

export_map_as_imageA

Export a map view directly to a PNG image using the map defaultView, without requiring a layout. Use this for quick map snapshots, previews, or automated image generation when a formal layout is unnecessary. Reads the .aprx project and writes out_png with the requested width, height, and resolution.

set_map_scaleA

Set the camera scale denominator for a selected layout map frame using arcpy.mp camera.scale. Use this before exporting a layout when the map must be fixed to a known scale such as 1:1000 or 1:50,000. This updates the .aprx project when save=true.

set_map_extent_from_layerA

Set a layout map frame extent to match a named layer using mf.getLayerExtent and mf.camera.setExtent. Use this before exporting a layout so the final map focuses on a dataset, study area, boundary, or analysis result. This changes the map frame camera and saves the .aprx project when save=true.

update_text_elementA

Update the text content of a named layout text element using arcpy.mp layout elements. Use this to automate titles, dates, subtitles, map numbers, project names, notes, or report labels before export. This modifies the selected layout and saves the .aprx project when save=true.

update_legendA

Add or remove a layer entry in a selected layout legend using arcpy.mp legend addItem or removeItem. Use this to synchronize legends with automated layer changes before exporting maps. This modifies the layout legend and saves the .aprx project when save=true.

set_layout_sizeA

Change the physical page width and height of a selected ArcGIS Pro layout using layout.pageWidth and layout.pageHeight. Use this to switch between sheet sizes, portfolio formats, report pages, or print/export templates. This modifies the layout and saves the .aprx project when save=true.

intersect_featuresA

Overlay two or more feature layers using ArcPy Intersect and write only the shared geometry to a new output feature class. Use this to find areas, lines, or points common to multiple datasets while preserving selected attributes. Reads all input feature paths and writes out_features inside PathGuard allowed roots.

union_featuresA

Overlay two or more polygon feature layers using ArcPy Union and write a new polygon feature class containing all combined areas. Use this to compare zoning, land-use, administrative, or planning layers while retaining attributes from each input. Reads input features and writes out_features inside PathGuard allowed roots.

erase_featuresA

Remove portions of input features that overlap an erase layer using ArcPy Erase. Use this for exclusion zones, masking restricted areas, or subtracting one geography from another. Reads the input and overlay feature paths and writes a new output feature class without modifying the source datasets.

dissolve_featuresA

Merge adjacent or overlapping features that share attribute values using ArcPy Dissolve. Use this to generalize boundaries, aggregate parcels, zones, roads, or other features by one or more dissolve fields. Reads in_features and writes a new dissolved output feature class inside PathGuard allowed roots.

merge_featuresA

Combine multiple compatible feature classes or layers into one output feature class using ArcPy Merge. Use this to assemble same-schema datasets from multiple sources, tiles, districts, or processing batches. Reads all input feature paths and writes one new output inside PathGuard allowed roots.

select_by_attributeA

Materialize a SQL attribute query into a new feature class using ArcPy Select. Use this when a stateless MCP workflow needs a saved subset rather than an in-memory layer selection. Reads in_features, applies where_clause, and writes the selected rows to out_features.

select_by_locationA

Materialize a spatial relationship selection into a new feature class using a MakeFeatureLayer, SelectLayerByLocation, and CopyFeatures pipeline. Use this to persist features that intersect, contain, are within, or are near another dataset. Writes the selected result to out_features and removes the temporary layer.

spatial_joinA

Join attributes from one feature layer to another based on spatial relationships using ArcPy SpatialJoin. Use this to count, summarize, or transfer nearby, contained, intersecting, or matching feature attributes into a new output feature class. Reads target_features and join_features and writes out_features inside PathGuard roots.

near_analysisA

Calculate nearest-neighbor distance from each input feature to nearby features using ArcPy Near. This mutates the input dataset by adding or updating NEAR_FID and NEAR_DIST fields, so confirm=true is required. Use a copied working dataset when exposing this workflow to an LLM or automated agent.

generate_near_tableB

Create a standalone proximity table between input features and near features using ArcPy GenerateNearTable. Use this to record nearest neighbors, distances, and candidate matches without modifying the source datasets. Reads input and near feature paths and writes a new out_table inside PathGuard allowed roots.

minimum_bounding_geometryB

Create bounding geometries around input features using ArcPy MinimumBoundingGeometry. Use this to generate convex hulls, envelopes, circles, or other summary shapes for features or groups. Reads in_features and writes a new output feature class with the requested geometry_type and grouping behavior.

feature_to_pointA

Create representative point features from polygons or lines using ArcPy FeatureToPoint. Use this to produce centroids or guaranteed inside points for labeling, joins, sampling, or simplified analysis. Reads in_features and writes a new point feature class to out_features.

feature_vertices_to_pointsA

Convert feature vertices to point features using ArcPy FeatureVerticesToPoints. Use this to extract endpoints, all vertices, midpoints, or dangle points from line or polygon geometry for QA/QC, network checks, and geometry inspection. Reads in_features and creates out_features inside PathGuard allowed roots.

multipart_to_singlepartA

Split multipart features into singlepart features using ArcPy MultipartToSinglepart. Use this before per-feature editing, counting, topology checks, joins, or analysis that requires one geometry part per row. Reads in_features and creates out_features without modifying the source dataset.

simplify_featuresA

Simplify polygon or polyline geometry using ArcPy SimplifyPolygon or SimplifyLine after detecting the input shape type. Use this to reduce vertex density for cartography, web export, performance, or scale-appropriate analysis. Writes a simplified output feature class and does not mutate the source features.

smooth_featuresB

Smooth polygon or polyline geometry using ArcPy SmoothPolygon or SmoothLine after detecting the input shape type. Use this for cartographic cleanup where angular boundaries or lines need a more generalized appearance. Writes a new smoothed output feature class without modifying the source dataset.

summarize_withinA

Summarize features that fall within polygon areas using ArcPy SummarizeWithin. Use this to count or aggregate points, lines, or polygons by administrative zones, grid cells, parcels, buffers, or service areas. Reads boundary polygons and summary features, then writes a new summarized output feature class.

frequency_analysisA

Count unique combinations of attribute values using ArcPy Frequency. Use this to profile categorical fields, detect duplicates, summarize classes, or prepare simple frequency tables for QA/QC and reporting. Reads an input table and writes a new output table inside PathGuard allowed roots.

statistics_analysisB

Calculate summary statistics for numeric or categorical fields using ArcPy Statistics. Use this to aggregate counts, sums, means, minima, maxima, standard deviations, or grouped statistics before reporting or joining results back to features. Reads an input table and writes a new output table.

tabulate_intersectionB

Cross-tabulate intersections between zone features and class features using ArcPy TabulateIntersection. Use this to quantify how much of each class falls inside each zone, such as land-use area by district or habitat type by planning unit. Writes a standalone output table.

identity_featuresA

Overlay input features with identity features using ArcPy Identity. Use this to transfer polygon or line attributes onto another feature layer while preserving the input geometry where applicable. Reads both input datasets and writes a new output feature class inside PathGuard allowed roots.

symmetrical_differenceA

Create the non-overlapping parts of two feature layers using ArcPy SymmetricalDifference. Use this to compare boundaries, detect areas present in only one of two datasets, or isolate disagreement between two polygon/line sources. Writes a new output feature class and does not modify the inputs.

create_fishnetC

Create a regular rectangular grid or fishnet feature class using ArcPy CreateFishnet. Use this to build sampling grids, analysis cells, index maps, planning units, or raster-like vector zones from an origin, cell size, row/column count, and geometry type. Writes a new grid dataset inside a PathGuard allowed root.

add_layer_to_mapA

Add a dataset to a map inside an .aprx project (arcpy.mp addDataFromPath). Operates on the saved project file, not a live Pro session.

remove_layer_from_mapA

Remove a layer from a map (map.removeLayer). Requires confirm=true.

list_mapsB

List all map names inside an .aprx project (aprx.listMaps).

list_layers_in_mapB

List layers of one map with visibility, group flag and data source.

set_layer_visibilityA

Show or hide a layer (lyr.visible).

move_layer_orderB

Change draw order: move a layer BEFORE/AFTER a reference layer (map.moveLayer).

rename_layerB

Rename a layer as shown in the Contents pane (lyr.name).

zoom_to_layerC

Set the map's default camera to a layer's extent.

set_layer_symbologyC

Apply symbology from a .lyrx file (ApplySymbologyFromLayer).

save_projectB

Save the .aprx project file (aprx.save).

service_areaB

Reachable-area polygons around facilities at travel cutoffs (MakeServiceAreaAnalysisLayer). Requires Network Analyst.

route_analysisB

Best route through ordered stops (MakeRouteAnalysisLayer). Requires Network Analyst.

od_cost_matrixC

Origin-destination cost matrix lines (MakeODCostMatrixAnalysisLayer). Requires Network Analyst.

closest_facilityB

Nearest facility routes per incident (MakeClosestFacilityAnalysisLayer). Requires Network Analyst.

define_projectionA

Assign a CRS (by WKID/EPSG) to a dataset with an unknown spatial reference (DefineProjection). Metadata-only; requires confirm=true.

project_featuresB

Transform a vector dataset into another CRS/datum (Project).

get_spatial_referenceA

Look up a CRS by WKID: name, type, linear/angular units, datum.

project_rasterC

Reproject a raster with NEAREST/BILINEAR/CUBIC/MAJORITY resampling (ProjectRaster).

extract_by_maskA

Extract raster cells inside a polygon or raster mask using ArcPy Spatial Analyst ExtractByMask. Use this to clip elevation, imagery, land-cover, suitability, or other raster data to a study area before analysis. Requires a Spatial Analyst license; reads in_raster and mask inside PathGuard roots and writes out_raster.

raster_calculatorA

Run Spatial Analyst map algebra over explicitly named raster variables using ArcPy RasterCalculator. Use this for NDVI, suitability models, binary masks, raster normalization, and cell-by-cell formulas. Requires a Spatial Analyst license; expressions may reference only declared variable_names and validated map-algebra syntax.

resample_rasterB

Change raster cell size using ArcPy Resample. Use this to align resolution before overlay, modeling, visualization, or export. Reads one input raster and writes out_raster inside PathGuard roots; choose a resampling method appropriate for categorical or continuous data.

mosaic_to_new_rasterA

Merge multiple raster datasets into one new raster using ArcPy MosaicToNewRaster. Use this to combine tiles, scenes, DEM sheets, or image bands into a single dataset. Reads two or more input rasters and writes a named raster into an existing folder or geodatabase.

raster_to_polygonA

Convert raster zones or classes to polygon features using ArcPy RasterToPolygon. Use this to vectorize classified rasters, suitability classes, land-cover codes, or cell regions for GIS editing, overlay, and cartographic workflows. Reads in_raster and writes out_features.

polygon_to_rasterA

Convert polygon features to a raster dataset using ArcPy PolygonToRaster. Use this when vector zones, classes, parcels, or planning units need to become raster cells for map algebra, suitability modeling, or raster overlay. Reads polygon features and writes out_raster using value_field, cell_assignment, and cell_size.

zonal_statisticsA

Calculate one raster statistic per zone and write the result as a raster using ArcPy Spatial Analyst ZonalStatistics. Use this when each zone should receive a MEAN, SUM, MIN, MAX, or similar value from an input value raster. Requires a Spatial Analyst license.

zonal_statistics_as_tableA

Calculate zonal statistics and write the results to a standalone table using ArcPy Spatial Analyst ZonalStatisticsAsTable. Use this to summarize raster values by districts, parcels, watersheds, grid cells, or other zone datasets. Requires a Spatial Analyst license.

slope_analysisA

Derive slope from an elevation raster using ArcPy Spatial Analyst Slope. Use this in terrain, hydrology, accessibility, hazard, and site suitability workflows. Requires a Spatial Analyst license; writes a slope raster in degrees or percent rise using z_factor.

aspect_analysisA

Derive downslope aspect direction from an elevation raster using ArcPy Spatial Analyst Aspect. Use this for terrain interpretation, solar exposure, ecological modeling, hydrology, and site suitability. Requires a Spatial Analyst license and writes a new aspect raster.

hillshadeA

Create shaded relief from an elevation raster using ArcPy Spatial Analyst Hillshade. Use this for terrain visualization, map backdrops, and DEM QA/QC with controlled sun azimuth, altitude, shadow modeling, and z_factor. Requires a Spatial Analyst license.

contour_linesA

Create vector elevation isolines from a DEM raster using ArcPy Spatial Analyst Contour. Use this to generate cartographic contours, terrain analysis inputs, or elevation reference lines. Requires a Spatial Analyst license and writes a polyline feature class.

flow_directionB

Derive a hydrologic flow-direction raster from an elevation or surface raster using ArcPy Spatial Analyst FlowDirection. Use this before flow accumulation, watershed delineation, drainage modeling, or stream extraction. Requires a Spatial Analyst license; writes out_raster and can optionally force edge cells to flow outward.

fill_sinksA

Fill sinks or depressions in an elevation raster using ArcPy Spatial Analyst Fill. Use this to hydrologically condition DEMs before flow direction, flow accumulation, watershed, or stream network analysis. Requires a Spatial Analyst license; optional z_limit controls maximum sink depth to fill.

clip_rasterA

Clip a raster by rectangle, template extent, or template polygon geometry using ArcPy management Clip. Use this to crop imagery, DEMs, or classified rasters to a study area without requiring Spatial Analyst. Reads in_raster and optional template_dataset and writes out_raster inside PathGuard roots.

mean_centerC

Geometric mean center of features, optionally weighted (MeanCenter).

directional_distributionC

Standard deviational ellipse of a point distribution (DirectionalDistribution).

kernel_densityC

Kernel density surface from points/lines (sa.KernelDensity). Requires Spatial Analyst.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/muend/arcgis-mcp-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server