arcgis-pro-mcp-free
Provides tools for interacting with an open ArcGIS Pro project, including reading layers and features, querying and editing data, applying symbology, working with layouts and bookmarks, running geoprocessing tools, and executing arbitrary arcpy code.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@arcgis-pro-mcp-freeList the layers in the current map"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Free Bridge for ArcGIS Pro
Versión en español: README.es.md
A free, local bridge between Model Context Protocol (MCP) and ArcGIS Pro 3.5 or newer: 68 commands (reading, geometry, editing, symbology, layouts, geoprocessing and arcpy code execution) that any MCP-capable assistant can use directly on your open project.
No paid licenses, no cloud: the Add-In listens on 127.0.0.1:PORT (your PC only) and the launcher exposes the 167 MCP tools.
Architecture
Assistant (opencode, Claude, ...) <--stdio JSON-RPC--> tcp_bridge.py
<--TCP 127.0.0.1:PORT, length-prefixed JSON--> Add-In (Pro)Piece | What it is |
| Compiled Add-In: 68 commands + manual control window (EN/ES) |
| MCP launcher: reuses the 167 tools from |
| Add-In sources (C# .NET 8) |
| Maintainer verification suites |
Related MCP server: CLI-Anything · ArcGIS Pro
Requirements
ArcGIS Pro 3.5 or newer (tested on 3.5.4;
desktopVersion: 3.5loads forward).Python 3.12+ with
pip install -r requirements.txt.To compile the Add-In (optional): .NET 8 SDK.
Install (5 minutes)
1. Install the Add-In
Double-click package/ArcGisProMcpFree.esriAddinX — it installs itself. Or copy it to Documents\ArcGIS\AddIns\ArcGISPro\.
2. Install the MCP launcher — option A: uvx (no manual install)
"arcgis_mcp_addin": {
"type": "local",
"command": [
"uvx",
"--from",
"git+https://github.com/IngKevinDavid/ArcGis-Pro-MCP-Free",
"arcgis-pro-mcp-free"
],
"environment": {}
}uvx fetches the launcher from this repo on first use (the pinned tool wheel comes from the Release assets). Nothing to download by hand besides the Add-In.
2b. Option B: global Python
cd <repo>
py -m pip install -r requirements.txt # vendored wheel, no venv needed"arcgis_mcp_addin": {
"type": "local",
"command": [
"C:\\Users\\YOU\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
"PATH\\TO\\py-server\\tcp_bridge.py"
],
"environment": {}
}3. Port selection
Without PORT, everything uses port 5876. For another port (e.g. 8791): type it in the Add-In window and add "environment": {"PORT": "8791"} to the MCP entry (reload the client so it picks it up).
Use
Open your project in Pro. Nothing listens on its own: tab MCP Free Bridge → button MCP Free Bridge → Start (shows
RUNNING 127.0.0.1:5876). The ribbon icon is red while stopped, green while running. UI in English, Español button switches to Spanish.Use the tools from your assistant:
list_layers,query_layer,run_gp_tool,label_layer,apply_graduated_symbology,geometry_area,create_feature,export_layout, ...Arbitrary arcpy code via the
run_gp_tooltool with the bundledArcPyExec.pyt→ExecPython.When done: Stop in the window.
MCP tools (167)
Coverage: 165 of 167 tools run against the Add-in — 68 dedicated commands plus client-side wrappers that delegate to the tested generic run_gp_tool. publish_web_layer and stage_service_definition need a staged server connection and answer a clean error until implemented.
Core (3)
Tool | Description |
| Returns the current ArcGIS Pro license level and the list of licensed extensions. |
| Lists available Add-in command capabilities. |
| Checks MCP/Add-in/ArcGIS Pro pipe health and active project state. |
Project & maps (7)
Tool | Description |
| Consolidates a project and its data into a folder (no compression). |
| Returns the name of the active map and scene view in ArcGIS Pro. |
| Lists maps in the current ArcGIS Pro project. |
| Lists main project items in the current ArcGIS Pro project. |
| Opens a map in ArcGIS Pro by name. |
| Saves the current ArcGIS Pro project. |
| Saves the current ArcGIS Pro project to a new APRX path. |
Layers (29)
Tool | Description |
| Moves existing layers into an existing group layer in the active map. |
| Adds a dataset, layer file, or service URL to the active map. |
| Adds a subtype to a subtype definition. |
| Applies graduated color symbology to a feature layer. |
| Applies raster symbology from a layer file or existing layer. |
| Applies symbology from an existing layer or .lyrx file. |
| Applies unique value symbology to a feature layer. |
| Clears selection in one feature layer or in the whole active map. |
| Counts the number of features in a specified layer. Optional SQL filter (e.g. "POPULATION > 100000"). |
| Creates a group layer in the active map, optionally moving existing layers into it. |
| Exports a feature layer to a dataset path. |
| Returns the total number of rows for a feature class, table or layer. |
| Gets the schema/fields of a layer, listing names, aliases, and data types of all attributes. |
| Returns renderer metadata for a layer. |
| Retrieves the attribute records for the currently selected features in a layer. |
| Enables labels on a feature layer using a field-based expression. Optionally applies a text halo. |
| Lists all layers in the active map, showing names, types, visibility, and total features. |
| Loads a .lyrx file into the active map. |
| Queries attribute rows from an active-map feature layer. |
| Removes a layer from the active map. |
| Saves an active-map layer to a .lyrx file. |
| Selects features in a layer using a SQL attribute query. combination: NEW, ADD, REMOVE, SUBTRACT, XOR. |
| Sets or clears a definition query on a feature layer. |
| Sets the color (RGB 0-255) and optionally the width of a feature layer's simple renderer via direct CIM manipulation. |
| Sets layer transparency from 0 to 100. |
| Sets the active map view extent to the specified bounding box coordinates (default WKID 4326). |
| Toggles the visibility of a layer in the active map by name. |
| Rebuilds graduated class breaks for a feature layer. |
| Zooms the active map view to the spatial extent of a specific layer by name. |
Bookmarks (4)
Tool | Description |
| Creates a spatial bookmark from the current active map view extent. |
| Deletes a bookmark by name from the active map. |
| Lists bookmarks for the active map or a named map. |
| Zooms the active map to a named bookmark. |
Layouts (9)
Tool | Description |
| Adds a text element to a layout. ArcGIS dynamic text tags are accepted. |
| Creates a basic layout from the active map with map frame and cartographic surrounds. |
| Creates a spatial map series for a layout. |
| Exports the active map view to an image file. |
| Exports every layout in the active ArcGIS Pro project to one output directory. |
| Exports a print layout to the specified output file path. format_type: PDF, PNG, JPEG. Resolution in DPI. |
| Exports a configured map series. |
| Lists all the layouts (print layouts/map layouts) defined in the current ArcGIS Pro project. |
| Updates text or visibility of a layout element. |
Editing (7)
Tool | Description |
| Creates a point feature in a feature layer. |
| Deletes features identified by the given ObjectIDs. |
| Deletes selected features from a feature layer. |
| Inserts multiple point features in a single edit operation (arcpy.da-style batch). |
| Undoes the last MCP edit operation. |
| Updates attributes for a feature by ObjectID. |
| Updates multiple features by ObjectID in a single edit operation. |
Data access (12)
Tool | Description |
| Joins a table to a layer or table view based on a common field. |
| Copies features to a new feature class. |
| Copies the rows of a table, table view or feature class to a new table. |
| Exports a feature class or layer to a new feature class (shapefile, file geodatabase, etc.). |
| Exports a table or attribute table to a new standalone table. |
| Reads a table and produces a new table containing unique field values and their counts. |
| Creates a feature layer from an input feature class or layer file. |
| Creates a table view from an input table or feature class. |
| Removes a join from a feature layer or table view. |
| Extracts features from input based on a SQL expression. |
| Computes summary statistics for fields in a table. |
| Extracts rows from a table based on an expression. |
Data management & analysis (27)
Tool | Description |
| Adds a new field to a table or feature class. field_type: TEXT, LONG, SHORT, DOUBLE, FLOAT, DATE, BLOB. |
| Appends multiple input datasets into an existing target dataset. schema_type: TEST or NO_TEST. |
| Creates buffer polygons around input features to a specified distance. Example: "100 Meters". |
| Performs field calculations on feature classes or tables. expression_type: PYTHON3, ARCADE, SQL, VB. |
| Produces a report of geometry problems in a feature class. |
| Clips/extracts input features that overlay clip features. |
| Creates an empty feature class in a geodatabase or folder. geometry_type: POINT, MULTIPOINT, POLYLINE, POLYGON. |
| Creates a file geodatabase in the specified folder. |
| Creates an empty table in a geodatabase or dBASE workspace. |
| Defines the projection of a dataset without transforming its coordinates. |
| Permanently deletes a dataset. |
| Deletes one or more fields from a table or feature class. |
| Aggregates features based on specified attributes. |
| Removes features (and portions of features) that overlap the erase features. |
| Reports records with identical values in a list of fields. |
| Produces a table of distances between input and near features. |
| Computes the geometric intersection of feature classes. output_type: INPUT, LINE, POINT. |
| Combines multiple input datasets into a new output dataset. |
| Creates multiple buffers at specified distances around inputs. |
| Adds distance, location and angle from in_features to the nearest near_features. |
| Projects spatial data from one coordinate system to another. |
| Renames a dataset. |
| Repairs problematic geometry errors in a feature class. |
| Selects features in a layer based on their spatial relationship to features in another layer. |
| Joins attributes from one feature class to another based on spatial relationship. |
| Splits input features into many feature classes by the unique values of a split field. |
| Computes the geometric union of polygon feature classes. |
Conversion (12)
Tool | Description |
| Converts Revit/BIM data (.rvt/.ifc/.dgn) into feature classes. |
| Converts CAD data (.dwg/.dgn/.dxf) into feature classes in a geodatabase. |
| Imports an Excel workbook (.xlsx/.xls) into a geodatabase table or dBASE. |
| Converts one or more feature classes to shapefiles in a folder. |
| Converts features to ArcGIS JSON or GeoJSON. |
| Creates a feature class from Esri JSON or GeoJSON. |
| Converts a KML/KMZ file into a feature class and layer file in a file geodatabase. |
| Converts a map layer, layer file or feature class to a KMZ file. |
| Converts point features to a raster dataset. |
| Converts polygon features to a raster dataset. |
| Converts a raster dataset to polygon features. |
| Exports a table or feature class attribute table to Excel (.xlsx). |
Network analysis (4)
Tool | Description |
| Finds the closest facility(ies) for each incident. Requires Network Analyst extension. |
| Finds the best route through ordered stops (Network Analyst). Requires Network Analyst extension. |
| Generates an Origin-Destination cost matrix. Requires Network Analyst extension. |
| Generates travel-time/distance service areas (isochrones). Requires Network Analyst extension. |
Spatial Analyst (raster) (8)
Tool | Description |
| Derives aspect (compass direction of slope) from a surface raster. Requires Spatial Analyst extension. |
| Extracts the cells of a raster corresponding to mask features. Requires Spatial Analyst extension. |
| Generates a hillshade from a surface raster. Requires Spatial Analyst extension. |
| Calculates kernel density from point/polyline features. Requires Spatial Analyst extension. |
| Builds and executes a Map Algebra expression (Raster Calculator). Requires Spatial Analyst extension. |
| Reclassifies values in a raster. Requires Spatial Analyst extension. |
| Derives slope from a surface raster. Requires Spatial Analyst extension. |
| Overlays several rasters using a common scale and weights. Requires Spatial Analyst extension. |
Spatial statistics (7)
Tool | Description |
| Identifies clusters and outliers using Anselin Local Moran's I. |
| Identifies trends in spatial clustering from a space-time cube. |
| Performs Generalized Linear Regression (GLR). model_type: CONTINUOUS, BINARY, COUNT. |
| Performs Geographically Weighted Regression (GWR) to model spatially varying relationships. |
| Identifies statistically significant hot/cold spots using Getis-Ord Gi*. |
| Creates a map of statistically significant hot/cold trends, choosing parameters automatically. |
| Measures spatial autocorrelation (Global Moran's I). |
Geometry (7)
Tool | Description |
| Returns the area of the first selected polygon feature in the layer. |
| Returns True if the selected feature of layer_a contains that of layer_b. |
| Returns True if the two selected geometries intersect. |
| Returns the length of the first selected polyline feature in the layer. |
| Returns True if the two selected geometries are within a distance of each other. |
| Geodesic distance (meters) between the first selected feature of each layer. |
| Sets the camera orientation of the active view (3D scenes). heading 0-360, pitch -90 to 90. |
Geocoding (4)
Tool | Description |
| Creates a geocoding locator from reference data. |
| Geocodes a table of addresses using a locator. |
| Re-matches addresses in a geocoded feature class. |
| Creates addresses from point locations (reverse geocoding). |
Geodatabase & topology (8)
Tool | Description |
| Adds a feature class to a topology. |
| Adds a rule to a topology. rule_type: e.g. "Must Not Overlap", "Must Be Inside". |
| Creates a geodatabase domain. |
| Creates a new topology in a feature dataset. |
| Describes an active-map layer or geodatabase dataset. |
| Lists geodatabase domains. |
| Lists feature classes in a file geodatabase. |
| Validates the specified topology. |
Packaging & sharing (9)
Tool | Description |
| Packages maps for offline use in Field Maps / Navigator apps into a .mmpk file. |
| Creates a vector tile package (.vtpk) from a map. |
| Packages a layer and its data into a single compressed .lpkx file. |
| Consolidates a map and all referenced data sources into a .mpkx package. |
| Consolidates a project (.aprx) and its data into a portable .ppkx package. |
| Publishes an ArcGIS .sd file or stages and publishes an .sddraft file. |
| Replaces the layers and data of an existing web layer with an updated .sd file. |
| Shares a package (.mpkx, .lpkx, .ppkx, .mmpk, .vtpk) to ArcGIS Online or Enterprise. |
| Stages an ArcGIS service definition draft (.sddraft) into a service definition (.sd). |
Portal & services (8)
Tool | Description |
| Sets the MCP REST portal URL and optional token. |
| Describes an ArcGIS portal item. |
| Exports a REST feature layer query result to GeoJSON. |
| Returns the active ArcGIS Pro portal and MCP REST portal. |
| Returns schema metadata for a REST feature layer. |
| Lists layers and tables exposed by a REST service. |
| Queries a REST feature layer. |
| Searches ArcGIS Online or ArcGIS Enterprise portal items. |
Geoprocessing & docs (2)
Tool | Description |
| Executes any ArcGIS Pro geoprocessing tool by name with list of parameters. |
| Searches local SDK docs and returns official online documentation links. |
Verify (maintainer)
$V = "py-server\.venv\Scripts\python.exe"
& $V tests\contract_check.py # 67 raw checks over TCP
& $V tests\mcp_suite.py # 15 checks through the real MCP pathTests use ARCGIS_TEST_GDB (a file GDB with fixture data) and PORT; defaults run in the author's environment.
Troubleshooting
Symptom | Typical cause |
No ribbon tab |
|
| Bridge not started (window → Start) or |
Port busy on Start | Another process owns it; pick another port in the window |
| Destructive tools require explicit |
Technical notes
Honest limits: no online portal (3 commands fail cleanly).
count_featurescounts the source and ignores definition queries (queries honor them).Deleting a GDB in Explorer while Pro holds it leaves it locked; use the
Deletetool withallow_delete.
License
MIT — see LICENSE. Protocol compatible with the arcgis-mcp project (MIT); clean implementation without its code or binaries.
Credits
Ing. Kevin David Condori Q. 📧 ingkevindavid@gmail.com 💼 LinkedIn
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server for generating rough-draft project plans from natural-language prompts.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Related MCP Servers
- AlicenseCqualityCmaintenanceA local MCP server that enables AI clients to read ArcGIS Pro project information and execute ArcPy geoprocessing in the native ArcGIS Pro Python environment.1384MIT
- AlicenseAqualityBmaintenanceDrive Esri's ArcGIS Pro from an AI agent — the ArcGIS Pro counterpart to QGIS MCP. A headless ArcPy CLI plus an in-process .NET 8 add-in that exposes the live Pro session as MCP tools (ping, zoom_to, query, run_gp, export_layout) so an agent drives the running project while you watch.4659PolyForm Noncommercial 1.0.0
- AlicenseAqualityCmaintenanceEnables natural language control of live ArcGIS Pro sessions through the Model Context Protocol, allowing inspection of projects, layers, and attributes, and execution of geoprocessing tasks.251MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to control ArcGIS Pro through natural language, executing geoprocessing tools, editing data, and automating GIS workflows via a persistent ArcPy session.12Apache 2.0
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/IngKevinDavid/ArcGis-Pro-MCP-Free'
If you have feedback or need assistance with the MCP directory API, please join our Discord server