qgis_mcp
让 Claude AI 通过 MCP 协议直接操控 QGIS,实现自然语言驱动的地理空间分析与地图渲
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 Claude AI 通过 MCP 协议直接操控 QGIS,实现自然语言驱动的地理空间分析与地图渲
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你是一名城市规划师,需要在一份城市地图上叠加人口密度、道路网络和商业设施数据,然后让 AI 帮你生成一份热力图分析报告。传统做法是:打开 QGIS、手动导入数据、调整图层样式、写 Python 脚本出图——整个过程可能需要几小时。而现在,只需对 Claude 说一句自然语言指令,一切都能自动完成。
QGISMCP 正是这样一座桥梁:它让 Claude AI 与桌面 GIS 软件 QGIS 通过 Model Context Protocol(MCP)深度互联,使 AI 能够直接操控 GIS 系统的每一个功能模块。这是 AI + GIS 领域一次极具想象力的融合实践。
QGIS 是全球最流行的开源桌面 GIS 软件,拥有超过 100 万活跃用户,广泛应用于测绘、城市规划、环境监测和学术研究领域。然而,QGIS 的强大能力一直被锁定在一个相对封闭的使用范式中——用户必须掌握复杂的 GUI 操作或 PyQGIS 编程才能真正释放其潜力。
该项目作者 jjsantos01 敏锐地发现了 MCP 协议的革命性意义:MCP 最初由 Anthropic 提出,旨在为 AI 助手定义标准化的工具调用协议,让 AI 能够以统一的方式与各种外部系统交互。QGISMCP 将这一协议引入 QGIS,使 Claude 能够通过标准化的工具接口操作 GIS 功能。从技术继承关系看,该项目大量参考了 BlenderMCP(由 Siddharth Ahuja 开发)的架构设计,体现了 MCP 协议在 3D 可视化工具中的成功实践向 GIS 领域的迁移。
QGISMCP 的架构设计精巧而务实,由两个核心组件构成:
QGIS 插件(qgis_mcp_plugin):这是一个标准的 QGIS Python 插件,运行在 QGIS 主程序内部。它内部嵌入了 QgisMCPServer 类,在 QGIS 进程中启动一个 Socket 服务器(默认端口 9876),监听来自外部的 JSON 格式命令。当接收到命令后,插件在 QGIS 主线程中执行 PyQGIS 操作(项目管理、图层操作、处理算法、Python 代码执行等),并将结果通过 Socket 返回。插件使用 QTimer 以 100ms 间隔轮询 Socket 接受新连接,避免阻塞 QGIS 主界面,确保 GUI 保持响应。
MCP 服务器(src/qgis_mcp/qgis_mcp_server.py):这是一个 Python 服务器,基于 FastMCP 框架实现,暴露了 15 个标准化工具(Tools),每个工具对应 QGIS 的一个功能。当 Claude 调用这些工具时,MCP 服务器将请求转发给 QGIS 插件(通过 Socket 通信),插件执行 PyQGIS 操作后返回结果。这形成了完整的调用链:Claude → MCP 协议 → FastMCP Server → Socket → QGIS Plugin → PyQGIS。

图1:QGIS 菜单中 QGIS MCP 插件的位置
这种架构的优势在于:QGIS 插件作为「本地执行者」负责所有 PyQGIS 调用,确保了 API 兼容性(因为插件直接运行在 QGIS 进程中),而 MCP 服务器作为「远程控制层」负责协议转换,两者职责清晰解耦,互不依赖 QGIS 的 GUI 线程。
项目提供了一套完整的 GIS 操作工具,覆盖从项目创建到地图渲染的完整工作流程:
ping — 连接健康检查get_qgis_info — 获取 QGIS 版本和安装信息load_project / create_new_project / save_project — 项目管理add_vector_layer / add_raster_layer — 图层加载(矢量/栅格)get_layers / remove_layer / zoom_to_layer — 图层操作get_layer_features — 属性查询execute_processing — 执行 QGIS 处理工具箱中的 1000+ 算法(缓冲区分析、空间连接、地形分析等)render_map — 地图出图(PNG)execute_code — 执行任意 PyQGIS 代码其中 execute_processing 工具最为强大——它能调用 QGIS 处理工具箱中的 1000+ 算法。而 execute_code 则提供了无限制的 PyQGIS 编程能力,用户可以执行任意自定义的空间分析逻辑。

图2:在 QGIS 中启动 MCP 服务器
项目技术栈非常清晰:
mcp[cli]>=1.3.0,使用官方 MCP Python SDK 实现了 FastMCP 服务器qgis.core、qgis.gui),需要 QGIS 3.X 运行时环境qgis.PyQt),与 QGIS 共享 Qt 事件循环uv(Astral 出品的极速 Python 包管理器),替代传统的 pip整体代码量适中(约 40KB 核心源码),模块化良好,Socket 通信实现轻量可靠。代码质量较高:使用类型注解(typing.AsyncIterator)、上下文管理器(asynccontextmanager)、异常处理完善、连接池管理(get_qgis_connection 全局连接复用)。

图3:Claude Desktop 中 QGIS MCP 工具可用状态
整个使用流程非常流畅:用户在 Claude Desktop 的对话中,以自然语言描述 GIS 分析需求,Claude 会自动调用对应的 MCP 工具,完成从项目创建、数据加载、空间分析到地图渲染的全流程。作者在 X 上的 demo 展示了完整流程:创建项目、加载矢量/栅格图层、执行空间处理算法、生成着色地图(choropleth map)、渲染输出 PNG——全部在一次对话中完成。
尽管创新性强,项目也存在一些现实挑战:
1. 部署复杂度高:需要在本地同时安装 QGIS Desktop、Python 3.12+ 环境、uv 包管理器和 Claude Desktop,且需要手动复制插件到 QGIS profile 目录,步骤较多,对非技术用户不友好。没有 Docker 支持也限制了规模化部署。
2. 安全隐患:execute_code 工具可以执行任意 PyQGIS 代码,等同于在 QGIS 进程中获得了完整的系统访问权限。恶意提示词可能利用此工具执行破坏性操作,生产环境使用需要额外的沙箱保护。
3. 平台绑定:当前仅支持 Claude(通过 Claude Desktop 的 MCP 配置),对其他 MCP 兼容的 AI 助手(如 Cursor、Cline 等)的支持尚未验证。
4. QGIS 版本兼容:文档仅明确测试了 QGIS 3.22,其他版本可能存在 PyQGIS API 不兼容问题。
QGISMCP 代表了一个重要趋势:AI 正在从通用助手向领域专家进化。过去一年,我们见证了 MCP 协议在文件系统、数据库、Git 等领域的快速普及,但 QGISMCP 的出现标志着 AI 正在进入专业工程软件领域。
对于 GIS 行业而言,这意味着:
该项目也启示了一个更广阔的方向:任何拥有丰富 API 的桌面软件,理论上都可以通过 MCP 与 AI 连接,AutoCAD、Figma、Blender 等工具都可能成为下一波 MCP 集成的目标。
目前该项目已获得 985 个 GitHub Stars,说明 AI + GIS 这一交叉方向确实击中了开发者的痛点。随着 MCP 协议的成熟和更多 GIS-MCP 工具的出现,我们有望看到一个 AI 驱动的地理空间智能新生态。