Make ArcGIS Pro agent-native.
An AI agent drives ArcGIS Pro end to end — data → clip → analysis → publication-ready map — and you watch it happen.
Demo · Features · Quickstart · Commands · MCP tools · Architecture
The closed-source counterpart to CLI-Anything's QGIS harness. ArcGIS Pro is Esri's commercial GIS desktop app, so it can't be auto-generated from source — this wraps its official ArcPy / ArcGIS Pro SDK instead, in two complementary modes:
| Mode | What it drives | How |
|---|---|---|
| Headless CLI | .aprx projects & geodatabases on disk |
pip package over arcpy |
| Live bridge + MCP | the open ArcGIS Pro session (you watch it work) | in-process .NET add-in + MCP server |
- 🗺️ Professional cartography — export layouts and Map Series / map books (ArcGIS Pro's edge over QGIS).
- 🧰 The whole ArcToolbox — run any geoprocessing tool (buffer, clip, intersect, dissolve, …) via one command.
- 🔌 Drive the live session — an agent operates the open project over MCP; results appear in the map as you watch.
- 🤖 Agent-native I/O — every command speaks JSON:
{ "ok": …, "data" | "error": … }. - 🧠 Self-healing install — the CLI re-dispatches into ArcGIS Pro's Python automatically, so it works no matter where it's installed.
- ✅ Tested —
test_core(no backend) +test_full_e2e(needs ArcGIS Pro).
A complete workflow driven live by an agent — data → clip → analysis → finished map — inside ArcGIS Pro through the MCP bridge:
CLI-Anything-Arcgis-Pro-demo-v2.mp4
Install into ArcGIS Pro's bundled Python (arcgispro-py3), which provides ArcPy:
"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe" -m pip install ^
git+https://github.com/Jasper0122/CLI-Anything-Arcgis-Pro.gitcli-anything-arcgis-pro --json infoInstalled into a different Python? (e.g. via the CLI-Hub, which uses its own interpreter.) That's fine — the command self-dispatches into ArcGIS Pro's
arcgispro-py3interpreter when ArcPy isn't present. It locates Pro via common install paths, theSOFTWARE\ESRI\ArcGISProregistry key, or theCLI_ANYTHING_ARCGIS_PYTHONenvironment variable.
Requires a licensed ArcGIS Pro install (provides ArcPy). Verified on ArcGIS Pro 3.4 / ArcPy 3.4.3 / .NET 8.
For the live bridge, build & install the add-in and register the MCP server — see live-bridge/README.md.
Headless CLI (every command takes --json before the subcommand):
| Command | What it does |
|---|---|
info |
ArcPy version, license level, extension availability. |
project inspect / layers |
Maps, layouts, layers, data sources of an .aprx. |
layout list / export / mapseries |
★ Professional export: layouts + Map Series / map books. |
data describe / fields / count / query / calc |
Inspect & edit feature classes and tables. |
gp <tool> -a … --kw k=v |
Run any geoprocessing tool (the whole ArcToolbox). |
batch export-layouts |
Export every layout in a project. |
:: print-quality A0 map at 300 DPI
cli-anything-arcgis-pro --json layout export C:\proj\city.aprx --layout "Poster" --out C:\out\poster.pdf --dpi 300
:: buffer roads by 100 m
cli-anything-arcgis-pro --json gp analysis.Buffer -a C:\d.gdb\roads -a C:\d.gdb\roads_buf --kw buffer_distance_or_field="100 Meters"See SKILL.md for the full agent guide, and demos/ for runnable end-to-end demos.
With the live bridge registered, an agent can drive the open project:
| MCP tool | Action on the live project |
|---|---|
arcgis_ping |
Read the open project: maps, layouts, active view. |
arcgis_zoom_to |
Zoom the active map to a layer (optionally a selection). |
arcgis_query |
Query a layer's attributes → structured rows. |
arcgis_run_gp |
Run any geoprocessing tool; outputs are added to the live map. |
arcgis_export_layout |
Export a layout to PDF. |
Agent ──MCP──► mcp_server.py ──HTTP─► in-Pro add-in ──QueuedTask─► LIVE project
(you watch)
ArcPy can't attach to a running ArcGIS Pro from an external process (Esri limitation). The live bridge sidesteps this by running an in-process add-in that exposes the open project over a local socket, wrapped as MCP tools — while the headless CLI stays perfect for batch/automation with no GUI.
Full code-implementation flow:
Source: docs/implementation-flow.canvas (JSON Canvas / Obsidian).
cli_anything_arcgis_pro/ headless ArcPy CLI (pip package)
tests/ test_core.py (no backend) + test_full_e2e.py (needs Pro)
demos/ runnable demos (headless, live bridge, full region workflow)
live-bridge/
mcp_server.py stdlib-only MCP server → in-Pro bridge
ProSimpleMapExport/ ArcGIS Pro .NET add-in (bridge server + export button)
docs/ hero image, architecture diagram (.png + .canvas)
SKILL.md canonical agent skill definition
This is a standalone harness for CLI-Anything (registry PR #318). Issues and PRs welcome — run the tests with ArcGIS Pro's Python:
"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe" -m pytest tests/Apache-2.0, matching upstream CLI-Anything.
Built as a contribution to HKUDS/CLI-Anything — "Making ALL Software Agent-Native." ArcGIS, ArcGIS Pro and ArcPy are trademarks of Esri; this project is an independent integration and is not affiliated with Esri.

