arcgis-pro-bridge
README.md
# ArcGIS Pro Bridge(YghsBridge)
**用 AI 工具外部驱动 ArcGIS Pro** —— 通过 WorkBuddy、豆包、千问、Codex、Claude 等 AI 助手,
与正在运行的 ArcGIS Pro 建立连接,直接调用 ArcPy / GP 工具完成工作。不用点击、不用复制粘贴、不用手动开 Python 窗口。
> **"外部驱动"就是本项目的主要工作内容**:让 AI 助手成为 ArcGIS Pro 的操作者,Pro 里发生什么、
> 做成了什么、导出到哪里,都通过 Pro 内的消息面板和通知实时告诉你。
```
AI 工具(WorkBuddy / 豆包 / 千问 / Codex / Claude …)
│ MCP
▼
MCP 适配器 ──▶ Pro 进程内的插件 ──QueuedTask──▶ arcpy / GP 工具
│
└──▶ Pro 内消息面板 + 通知中心(实时"人话"反馈)
```
装上这个插件后,你的 ArcGIS Pro 就变成"可被 AI 编程"的:
- 跑**任何** GP 工具
- 在 Pro 的**主线程上下文**里跑任意 Python
- 读取当前打开的是哪个工程、地图里有哪些图层
- **在 Pro 里看得到**:内置「YGHS Bridge」停靠面板,实时滚动每条任务进度;
每次 GP / Python 调用结束还会在通知中心弹一条
- **提示是"人话"**:面板与通知里显示的不是裸的工具名,而是按这次要做什么生成的句子,例如
```
⇒ 给 GHFQ 添加文本字段 GHGHYDYD
✅ GHGHYDYD 文本字段 已添加成功(0.3 秒)
```
- 任务结束自动收尾:**能上图的产物静默加入当前地图**,Excel/DWG 等导出物**自动打开所在文件夹**并提示导出位置
---
## AI 助手外部驱动(核心用法)
本项目解决的就是一件事:**让 AI 助手"接管" ArcGIS Pro**。
你在 AI 工具里说人话,AI 通过 MCP 驱动 Pro 完成实际操作:
| AI 工具 | 接入方式 |
| -------------------------- | ------------------------------------------- |
| **WorkBuddy** | MCP 连接器里配置本项目的 `mcp-server/server.py`,对话即驱动 |
| **Claude(Desktop / Code)** | `mcpServers` 一段 JSON 即接入 |
| **豆包 / 千问** | 支持 MCP 的客户端直接配 |
| **Codex / 其它编码类 AI** | 直接调用 `mcp-server/server.py` 暴露的工具 |
AI 能做什么(MCP 工具一览):
| 工具 | 作用 |
| ------------------------ | ------------------------------- |
| `arcgis_pro_status` | 插件是否在线、Pro 进程号、当前工程路径 |
| `arcgis_pro_list_layers` | 当前地图与图层清单 |
| `arcgis_pro_show_log` | 在 Pro 内打开实时消息面板(人可盯着看) |
| `arcgis_pro_run_python` | **在 Pro 进程内跑 Python**(arcpy 可用) |
| `arcgis_pro_run_gp` | 跑任意 GP 工具(含增删字段等改结构的操作) |
🎬 **效果演示视频**:[用 AI 外部驱动 ArcGIS Pro(B 站)](https://www.bilibili.com/video/BV1uWY16cEZN?t=1.6)
## 功能总览
| 功能 | 说明 |
| ------------------- | ---------------------------------------------- |
| 跑任意 GP 工具 | 含增删字段、改**被图层引用**的数据结构 |
| 在 Pro 主线程跑任意 Python | `QueuedTask` 上下文,`ArcGISProject("CURRENT")` 可用 |
| 读取工程状态 | 当前工程路径、全部地图与各自图层 |
| **消息面板** | 实时滚动任务进度,显示"人话" |
| **通知中心** | 每次调用完成弹一条;失败为高优先级 |
| **自动收尾** | 能上图的静默上图;导出物自动开文件夹并提示位置 |
| **问题反馈菜单** | 一键跳转 GitHub / 抖音 / B站 |
| 端口自动避让 | 18750→18761 依次尝试,多开 Pro 不打架 |
## 环境要求
| 你要做什么 | 需要装什么 |
| ------- | -------------------------------------- |
| 只用插件 | **ArcGIS Pro 3.4+**(64 位 Windows) |
| 用 AI 驱动 | 再加 **Python 3.8+**(纯标准库,**不用装 arcpy**) |
| 自己编译插件 | 再加 **.NET 8 SDK**(不需要 Visual Studio) |
### Python 环境说明(重要)
- **本项目必须通过 Python 驱动脚本与 ArcGIS Pro 通信**(MCP 适配器与流程脚本全部是 Python)。
- 驱动端只依赖 **Python 标准库**,**不需要安装 arcpy**——arcpy 只在 Pro 进程内由插件调用,
驱动环境保持干净。
- **独立虚拟环境**:为避免污染系统 Python,本项目使用独立的 Python 虚拟环境(`.venv/`),
其配置随本仓库上传(见 `requirements.txt`,当前零第三方依赖)。创建方式:
```bash
python -m venv .venv
.venv\Scripts\activate # Windows
```
## 问询机制(执行约定,强制)
AI 通过本插件执行**任何任务**前,必须遵守以下约定:
1. **先核对参数**:执行前列出任务所需的全部参数(图层/字段/单位/坐标系/输出位置等)
2. **缺一项就停**:任何参数缺失时**暂停执行**,逐项列出缺失项及用途,请用户一次性补全
—— 不得自行假设、不得采用未经确认的默认值
3. **确认后严格执行**:按用户确认的参数执行,中途发现新缺失同样停下来问
4. **破坏性操作二次确认**:清空/删除/覆盖类操作,除问询外还须用户再次明确确认
5. **执行后复核**:GetCount / 抽样值 / 成果文件非空,自查后汇报
每个技能的 SKILL.md 自带「使用前必须先问询」清单(见 `skills/`),与本约定配套生效。
## 快速开始
### 1. 构建并安装插件
需要 **ArcGIS Pro 3.4+** + **.NET SDK 8**(不需要 Visual Studio)。一键脚本会自动找 Pro 安装位置、
构建前校验插件清单、装完清理缓存:
```bash
./build_addin.sh
```
### 2. 重启 ArcGIS Pro(只需一次)
插件在 Pro 启动时加载,之后**永久自动加载**。
### 3. 配置 MCP 客户端(以 WorkBuddy 为例)
在 WorkBuddy 的 MCP 配置文件(`~/.workbuddy/mcp.json`)中加入:
```json
{
"mcpServers": {
"arcgis-pro-bridge": {
"command": "python",
"args": ["<仓库路径>/mcp-server/server.py"]
}
}
}
```
保存后在 WorkBuddy 的连接器管理里**信任并启用**该服务器,即可在对话中直接驱动 ArcGIS Pro。
其它 MCP 客户端(Claude Desktop、Cursor、豆包、千问等)配置方式相同。
### 4. 验证
在 AI 工具里说一句「看看 ArcGIS Pro 在线吗、开着什么工程」——
AI 调 `arcgis_pro_status`,面板同时亮起来,就说明全链路通了。
## 业务技能库(可选,用户自定义)
`skills/` 内置 20 个规划 / 国土业务技能(用地用海指标汇总、三调 DLBM 转换、
三线占用汇总、批量地类统计、图幅号计算…),对 AI 说
「执行 skills 里的『用地用海指标汇总』」即可调用。
**这是用户可自定义的部分**:把你自己的工具箱 / GP 工具序列 / arcpy 脚本
按模板打包成一个 SKILL.md 放进 `skills/`,AI 就能像内置能力一样调用——
打包与调用方法见 **[skills/README.md](skills/README.md)**。
## 收尾行为(处理完自动上图 / 打开导出目录)
任务成功后插件会自动收尾,不需要额外写代码:
1. **能上图的产物 → 静默加入当前地图**(要素类 / 独立表 / shapefile;自动去重、输入数据不会被重复加载)
面板只记一行「已加入地图:xxx」,**不弹窗口**,不打断你干活
2. **不能上图的导出物 → 打开所在文件夹**(.dwg / .csv / .xlsx / .pdf / 图片 …)
面板显示「导出位置:<目录>」,方便直接去拿文件
3. 收尾**不会**替你保存工程 —— 需要落盘时自行 Ctrl+S
输出从哪里来:
| 来源 | 说明 |
| --------------- | -------------------------------------------------------------------------------------- |
| **GP 工具自动推断** | 按工具名 + 参数位置推断,覆盖 Buffer / Clip / Dissolve / ExportCAD / Statistics 等常用工具 |
| **Python 脚本声明** | 脚本里打印约定标记:
`print("@@YGH-ADD " + path)` 加地图
`print("@@YGH-REVEAL " + folder)` 打开目录 |
| **MCP 显式指定** | `add_to_map: [...]` / `reveal: [...]` |
## 安全提示
服务只绑 `127.0.0.1` 且无认证(与 Pro 自带 Python 窗口同一信任模型)。
它能执行任意 Python / GP 工具,**不要**把端口暴露到局域网。
## License
MIT —— 见 [LICENSE](LICENSE)。作者:YGHS。
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues