ArcGIS Pro MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ARCGIS_MCP_HOST | No | Host of the bridge | 127.0.0.1 |
| ARCGIS_MCP_PORT | No | Port of the bridge | 6510 |
| ARCGIS_MCP_TIMEOUT | No | Timeout in seconds for long-running geoprocessing | 300 |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Check that the ArcGIS Pro bridge is reachable and see which project it is attached to. |
| get_capabilitiesA | List every command the connected bridge supports, grouped by area. Use this to discover functionality beyond the named tools. |
| diagnoseA | Self-check the connection: ArcGIS Pro version, licence, open project, active map, open map view and write access. Run this first when something does not work. |
| get_arcgis_infoB | ArcGIS Pro version, licence level, available extensions and the current project path. |
| get_project_infoB | Project paths, default geodatabase and toolbox, maps, layouts, folder and database connections. |
| save_projectA | Save the ArcGIS Pro project (.aprx), or save a copy elsewhere. |
| list_mapsA | List all maps and scenes with coordinate system and layer counts. |
| create_mapC | Create a new map or scene in the project. |
| remove_mapC | Delete a map from the project. |
| activate_mapA | Open/activate a map's view in the ArcGIS Pro UI. Needed before camera commands and export_map_view. |
| set_map_propertiesC | Rename a map or change its coordinate system. |
| get_map_extentC | The combined extent of all data layers in a map. |
| get_environmentA | Read the current arcpy geoprocessing environment settings. |
| set_environmentB | Set arcpy geoprocessing environment settings such as workspace, outputCoordinateSystem, extent, mask, cellSize, overwriteOutput or parallelProcessingFactor. |
| get_layersA | List the layers (with draw order and group nesting) and standalone tables in a map. Start here to see what is in the project. |
| get_layer_infoA | Full detail for one layer: data source, coordinate system, extent, fields, feature count, renderer and label state. |
| add_layerB | Add data to a map from a path or service URL: feature class, shapefile, raster, table, .lyrx layer file or web service. |
| add_web_layerB | Add a web service layer (Feature/Map/Image service, WMS, WMTS, vector tile) by URL. |
| remove_layerC | Remove a layer or standalone table from a map. |
| rename_layerC | Rename a layer in the table of contents. |
| duplicate_layerB | Copy a layer within the map so it can be symbolised differently. |
| set_layer_visibilityB | Show or hide one layer, several layers, or every layer in the map. |
| set_layer_transparencyC | Set layer transparency (0 = opaque, 100 = fully transparent). |
| set_layer_scale_rangeB | Limit the scale range a layer draws at. |
| set_definition_queryC | Set a layer's definition query (SQL where clause). Empty string clears it. |
| move_layerC | Reorder a layer relative to another, or move it into a group layer. |
| create_group_layerB | Create a group layer, optionally moving existing layers into it. |
| zoom_to_layerB | Zoom the map view to a layer's extent. |
| set_basemapB | Set the basemap: Topographic, Imagery, Imagery Hybrid, Streets, Navigation, Light Gray Canvas, Dark Gray Canvas, Terrain, Oceans, OpenStreetMap, National Geographic Style Map. |
| get_broken_layersA | List layers across all maps whose data source is missing. |
| repair_layer_sourceB | Repoint a layer at a new workspace or dataset to fix a broken source. |
| add_joinC | Join a table to a layer on a common field. |
| remove_joinC | Remove a join from a layer. |
| get_featuresB | Read attribute rows from a layer, table or dataset path, with an optional where clause, field subset, ordering and WKT geometry. |
| count_featuresC | Count features, optionally matching a where clause. |
| get_unique_valuesC | Distinct values of a field with the count of rows for each. |
| get_field_statisticsC | min / max / mean / median / sum / standard deviation of a numeric field. |
| summarize_featuresB | Group rows by one or more fields and aggregate -- the fast way to answer 'how many / how much per category' without geoprocessing. |
| insert_featuresC | Insert new rows into a layer or table. |
| update_featuresB | Update attributes and/or geometry of rows matching a where clause. |
| delete_featuresC | Delete rows matching a where clause. |
| save_editsA | Commit pending edits. ArcGIS Pro keeps edits open so they can be undone, which also leaves the data locked until they are saved -- deleting or overwriting an edited dataset fails until then. |
| discard_editsB | Throw away pending edits. |
| calculate_fieldC | Calculate field values across a layer, e.g. expression "!Shape_Area! / 10000". |
| select_featuresC | Select features by SQL where clause. |
| select_by_locationC | Select features by spatial relationship to another layer. |
| get_selectionB | Report what is currently selected, per layer, with ObjectIDs and optionally the attribute rows. |
| set_selectionC | Select specific features by ObjectID. |
| clear_selectionA | Clear the selection on one layer, or on every layer in the map. |
| zoom_to_selectionC | Zoom the map view to the currently selected features. |
| list_fieldsB | List a layer's fields with type, alias, length and domain. |
| add_fieldC | Add a field to a layer or table. |
| add_fieldsC | Add several fields in one call. |
| delete_fieldC | Delete one or more fields. |
| alter_fieldC | Rename a field or change its alias/length. |
| create_feature_classB | Create an empty feature class, by default in the project's default geodatabase, and add it to the map. |
| create_tableB | Create an empty standalone table. |
| create_file_geodatabaseC | Create a new file geodatabase. |
| truncate_tableA | Delete every row from a table or feature class, keeping the schema. |
| delete_datasetB | Delete a dataset from disk or a geodatabase. This cannot be undone. |
| export_featuresA | Export a layer -- honouring its current selection and definition query -- to a new dataset. |
| run_geoprocessing_toolA | Run any arcpy geoprocessing tool -- the universal escape hatch for analysis. Layer names resolve to live layers so selections and definition queries apply. Call describe_geoprocessing_tool first if the parameter names are not known. |
| list_geoprocessing_toolsA | Search the available geoprocessing tools by name. |
| list_toolboxesB | List the arcpy toolbox modules and any toolboxes in the project. |
| describe_geoprocessing_toolA | Get a tool's parameters, data types, defaults and usage text before running it. |
| run_python_toolbox_toolC | Run a tool from a custom .pyt / .atbx / .tbx toolbox on disk. |
| check_extensionB | Check, and optionally check out, an ArcGIS extension licence. |
| get_messagesB | Messages from the most recent geoprocessing operation. |
| set_layer_rendererB | Change a layer's symbology: a single symbol, unique values by category, or a classified/continuous colour scheme by numeric field. |
| get_layer_symbologyA | Inspect a layer's current renderer, class breaks, unique values and label settings. |
| list_color_rampsC | List the colour ramps available in the project. |
| set_layer_labelingC | Turn labels on or off and set the expression, font and halo. |
| apply_symbology_from_layerB | Copy symbology from a .lyrx file or another layer. |
| save_layer_fileC | Save a layer with its symbology to a .lyrx file for reuse. |
| get_map_viewA | Current camera position: centre, scale, rotation and visible extent. Requires the map's tab to be open in ArcGIS Pro. |
| set_map_viewA | Move the map view: set an extent, a centre point, a scale and/or a rotation. |
| export_map_viewA | Render the map view to PNG and return the image so it can be looked at -- the way to visually check a map. Requires the map's tab to be open in ArcGIS Pro. |
| list_bookmarksB | List the spatial bookmarks defined on a map. |
| create_bookmarkB | Save the current view, or a given extent, as a named bookmark. |
| apply_bookmarkB | Zoom the map view to a bookmark. |
| delete_bookmarkB | Delete a bookmark from a map. |
| list_layoutsA | List the print layouts with page size and element counts. |
| get_layout_infoB | Inspect a layout: page setup and every element with position and size. |
| create_layoutB | Create a new layout page, by default with a map frame filling it. |
| delete_layoutC | Delete a layout from the project. |
| add_map_frameC | Add a map frame to a layout at a page position. |
| set_map_frame_extentC | Point a layout's map frame at a layer, an extent or a scale. |
| add_layout_textB | Add a text element such as a title or credits to a layout. |
| add_layout_legendC | Add a legend tied to a layout's map frame. |
| add_layout_scale_barB | Add a scale bar tied to a layout's map frame. |
| add_layout_north_arrowB | Add a north arrow tied to a layout's map frame. |
| add_layout_pictureC | Place an image such as a logo on a layout. |
| set_layout_elementB | Move, resize, rename, hide or change the text of any layout element. |
| delete_layout_elementC | Remove an element from a layout. |
| export_layoutA | Export a layout to PDF / PNG / JPEG / SVG / TIFF. PNG and JPEG come back as an inline image so the result can be checked. |
| preview_layoutA | Render a layout to a temporary image and return it, without writing a file -- use it to visually check a layout while building it. |
| export_map_seriesB | Export a layout's map series (map book) to a multi-page PDF. |
| get_raster_infoB | Raster detail: bands, size, cell size, pixel type, statistics and CRS. |
| set_raster_symbologyC | Set a raster layer's colorizer and colour ramp. |
| raster_calculatorA | Map algebra. Bind rasters to short names, then write a Python expression over them. Requires the Spatial Analyst extension. |
| sample_raster_valuesA | Read raster cell values at map coordinates or at a point layer's features. |
| zonal_statisticsA | Summarise raster values inside zone polygons and return the table. Requires the Spatial Analyst extension. |
| list_workspace_contentsB | List the datasets inside a geodatabase or folder. Defaults to the project's default geodatabase. |
| list_folderA | List GIS files and subfolders on disk. Defaults to the project home folder. |
| describe_datasetA | Describe any dataset by path -- type, geometry, CRS, extent, fields and row count -- without adding it to a map. |
| search_dataA | Find datasets by name across the project's geodatabase, home folder and folder connections. The quickest way to locate data before adding it. |
| get_project_itemsC | Folder connections, database connections and toolboxes registered in the project. |
| add_folder_connectionB | Register a folder with the project so its data is easy to browse. |
| execute_arcpy_codeA | Run Python inside ArcGIS Pro. arcpy is already imported and arcpy.mp.ArcGISProject('CURRENT') is the open project. Variables persist between calls, print() output is captured, and the value of a final expression is returned. Use this whenever no dedicated tool covers the task. |
| get_pump_statusA | Whether the main-thread dispatcher is installed. It is what lets commands reach the open ArcGIS Pro project; without it only path-based work (geoprocessing, dataset inspection) runs. |
| stop_pumpA | Remove the main-thread dispatcher. Live-project commands stop working until the user installs it again. |
| run_batchA | Run several commands in one round trip -- much faster for multi-step workflows. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| explore_project | Survey the open ArcGIS Pro project and summarise what is in it. |
| make_map | Build a finished, exportable map of a subject. |
| analyze | Answer a spatial question with the data in the open project. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| tool_index | The full tool list, grouped by area. |
| status | Whether ArcGIS Pro is reachable right now, and which projects are open. |
| project_summary | A snapshot of the open project: maps, layers and layouts. |
TDQS
Scored across 112 tools
Most tools are cleanly separated by resource and action (maps, layers, layouts, fields, selection, raster). Overlap remains among generic execution and diagnostic tools such as run_geoprocessing_tool, execute_arcpy_code, run_python_toolbox_tool, run_batch, get_capabilities, and the multiple project/diagnostic info tools.
Nearly all tools use snake_case verb_noun patterns like list_maps, create_map, and set_layer_visibility. A few bare imperatives such as ping and diagnose, plus noun-like names such as zonal_statistics, are minor deviations but do not break the overall pattern.
112 tools is extreme for an agent-facing MCP server; even for a broad GIS platform, many operations could be consolidated or routed through the generic execution tools. The rubric treats 50+ tools as an extreme count mismatch.
The surface covers map/layer/layout lifecycle, data creation and editing, selection, symbology, raster operations, geoprocessing, project diagnostics, and generic escape hatches for uncovered arcpy tasks. It appears complete for ArcGIS Pro automation without obvious dead ends.