ArcGIS Pro MCP Bridge
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Test the connection to ArcGIS Pro and get the full project status: version, project path, list of maps/scenes/globes, active map, and whether a view is currently open. Always call this first to understand the current state before running any other operations. |
| get_project_infoA | Get information about the currently open ArcGIS Pro project: file path, geodatabase, and list of maps. |
| get_active_map_nameA | Get the name of the active map currently shown in ArcGIS Pro. |
| list_layersA | List all layers in the active map (or a specific map by name). Args: map_name: Optional map name. If empty, uses the active map. |
| add_vector_layerA | Add a vector layer (shapefile, feature class, GeoJSON, etc.) to the active map. Args: path: Full path to the data source (e.g. C:/data/roads.shp or a feature class path) |
| add_raster_layerA | Add a raster layer (GeoTIFF, IMG, etc.) to the active map. Args: path: Full path to the raster file (e.g. C:/data/dem.tif) |
| remove_layerA | Remove a layer from the active map by name. Args: name: Exact layer name as shown in the Contents pane |
| zoom_to_layerA | Zoom and pan the active map view to show the full extent of a layer. Args: name: Exact layer name as shown in the Contents pane |
| count_featuresA | Count the total number of features (rows) in a layer. Args: layer: Exact layer name as shown in the Contents pane |
| select_by_attributeA | Select features in a layer using a SQL WHERE clause. Args: layer: Exact layer name as shown in the Contents pane where_clause: SQL expression (e.g. "population > 100000" or "type = 'road'") selection_type: NEW_SELECTION, ADD_TO_SELECTION, REMOVE_FROM_SELECTION, SUBSET_SELECTION (default: NEW_SELECTION) |
| update_featuresA | Update attribute values on features matching a WHERE clause. Sets the same field value(s) on every matching row (bulk update). For per-row computed values (e.g. incrementing a counter), use execute_python with an UpdateCursor instead. Args: layer: Exact layer name as shown in the Contents pane where_clause: SQL expression selecting which rows to update (e.g. "STATUS = 'Pending'"). Pass "" to update every row in the layer — be deliberate about this. updates: Dict of {field_name: new_value} applied to every matching row, e.g. {"STATUS": "Verified", "REVIEWED_BY": "GIS Team"} |
| save_projectA | Save the current ArcGIS Pro project. |
| run_geoprocessingB | Run any ArcPy geoprocessing tool by its dotted name. Args: tool: Dotted tool name, e.g. "analysis.Buffer", "management.CopyFeatures", "conversion.FeatureClassToShapefile" params: List of positional parameters for the tool, e.g. ["roads", "output_buf", "100 Meters"] Example: run_geoprocessing("analysis.Buffer", ["C:/data/roads.shp", "C:/data/roads_buf.shp", "500 Meters"]) |
| list_fieldsA | List all fields in a dataset (shapefile, feature class, table, layer name, etc.) with field type, length, and alias. Use this before building WHERE clauses or running attribute operations. Args: dataset: Full path to dataset, or layer name as shown in Contents pane |
| list_feature_classesA | List feature classes in a workspace (folder, GDB, or feature dataset). Args: workspace: Path to workspace/GDB (e.g. C:/data/mydb.gdb). Uses current workspace if empty. pattern: Wildcard filter, e.g. "road*" (default: "*") feature_type: Filter by geometry — Point, Line, Polygon, etc. (default: all) |
| list_rastersA | List raster datasets in a workspace. Args: workspace: Path to workspace/folder. Uses current workspace if empty. pattern: Wildcard filter (default: "*") raster_type: Filter by type — TIF, IMG, GRID, etc. (default: all) |
| list_tablesA | List standalone tables in a workspace (GDB tables, DBF files, etc.). Args: workspace: Path to workspace. Uses current workspace if empty. pattern: Wildcard filter (default: "*") |
| set_workspaceA | Set arcpy.env.workspace — the default location for inputs/outputs when no full path is provided to geoprocessing tools. Args: workspace: Full path to folder or GDB (e.g. C:/data or C:/data/mydb.gdb) |
| get_workspaceA | Get the current arcpy.env.workspace setting. |
| clear_selectionA | Clear any active selection on a layer. Args: layer: Exact layer name as shown in the Contents pane |
| get_unique_valuesA | Get all unique values in a field. Useful for exploring data and building WHERE clauses for select_by_attribute. Args: layer: Exact layer name as shown in the Contents pane field: Field name to get unique values for limit: Max number of unique values to return (default: 100) |
| set_layer_visibilityA | Toggle a layer's visibility in the Contents pane. Args: layer: Exact layer name as shown in the Contents pane visible: True to show, False to hide |
| create_mapA | Create a new map in the current ArcGIS Pro project. After creation, open it by double-clicking it in the Catalog pane under Maps. Args: name: Name for the new map (default: "Map") |
| describe_dataA | Describe a dataset — returns coordinate system, geometry type, extent, and data type. Use this to verify a file exists and check its projection before geoprocessing. Args: path: Full path to the dataset (shapefile, raster, feature class, GDB, etc.) |
| list_directoryA | List files in a directory, optionally filtered by pattern. Args: path: Full path to the directory (e.g. C:/Users/User/Documents/Rusunawa) pattern: Glob pattern to filter results (e.g. ".shp", ".tif", default: "*") |
| create_layoutA | Create a new layout in the project with a map frame already added. After creation, call export_layout() to export it as PDF/PNG/etc. Args: name: Layout name (default: "Layout") map_name: Map to put in the frame — uses active map if empty width: Page width (default: 11) height: Page height (default: 8.5) units: Page units — INCH, CENTIMETER, MILLIMETER, POINT (default: INCH) margin: Frame margin from page edge in page units (default: 0.5) |
| execute_pythonA | Execute arbitrary Python/arcpy code inside the ArcGIS Pro bridge. Use this for complex arcpy.mp operations not covered by other tools. Available variables: arcpy, os, proj (the ArcGISProject), get_map() Set result = in your code to return data. print() output is captured and returned as 'stdout'. Example: code = """ m = proj.listMaps()[0] result = [lyr.name for lyr in m.listLayers()] """ |
| list_layoutsA | List all layouts in the current ArcGIS Pro project with their page size and units. |
| export_layoutA | Export a layout to a file (PDF, PNG, JPG, BMP, TIF, SVG, or EPS). Args: name: Exact layout name as shown in the Catalog pane output: Full output file path including extension (e.g. C:/output/map.pdf) format: Export format — PDF, PNG, JPG, BMP, TIF, SVG, EPS (default: PDF) dpi: Resolution in dots per inch for raster formats (default: 150) |
| get_layer_featuresA | Preview rows from a layer's attribute table. Args: layer: Exact layer name as shown in the Contents pane limit: Number of rows to return (default: 10) fields: List of field names to include. If empty, returns all non-geometry fields. |
| publish_web_layerA | Publish a layer as a hosted feature service to ArcGIS Online / Enterprise, using whichever portal is currently active in ArcGIS Pro. Always confirm with the user before calling this — it creates or overwrites content on their portal account. Publishes over REST via the ArcGIS API for Python (reusing your existing Pro sign-in — no separate login needed), not the classic arcpy.server pipeline, which doesn't work reliably from this bridge. Can take up to ~30-60s for typical layers; this is normal, don't treat a slow response as a failure. Args: layer: Exact layer name as shown in the Contents pane service_name: Name for the hosted feature service (must be unique in the target folder) summary: Short description shown on the portal item (optional) tags: Comma-separated tags for the portal item (optional) public: Share publicly if True; private (owner-only) if False (default: False) overwrite: Overwrite an existing service with the same name if True (default: False) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lutfiArahaman/MCP_ALAMI1'
If you have feedback or need assistance with the MCP directory API, please join our Discord server