QGIS 4 MCP Server
Provides tools for interacting with QGIS 4.x, enabling AI agents to manage projects, layers, perform geoprocessing, query features, and analyze GIS data.
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., "@QGIS 4 MCP Serverload the roads shapefile and display it on the 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.
QGIS 4 MCP 插件
QGIS 4 MCP 插件 通过 Model Context Protocol (MCP) 将 AI 助手(Claude、Cursor、Codex 等)与 QGIS 4.x 连接起来。它将 PyQGIS 的核心能力封装为 MCP 工具,让你可以用自然语言驱动 GIS 工作流。
本项目是 jjsantos01/qgis_mcp(⭐984)的 QGIS 4.x 兼容分支。上游项目只支持 QGIS 3.x,灵感来源于 BlenderMCP。
架构
┌─────────────────────┐ stdio (MCP) ┌─────────────────────┐
│ AI 客户端 │ ◄─────────────────► │ MCP Server │
│ (Claude/Cursor/ │ JSON-RPC 2.0 │ (Python / FastMCP) │
│ Codex 等) │ │ src/qgis_mcp/ │
└─────────────────────┘ └─────────┬───────────┘
│ TCP Socket
│ port 9877
▼
┌─────────────────────────────────────────────────────────────────┐
│ QGIS (4.x) │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Astyyym QGIS MCP 插件 (astyyym_qgis_mcp/) │ │
│ │ ┌─────────────────┐ ┌──────────────────────────────┐ │ │
│ │ │ 控制面板 │ │ 命令分发器 │ │ │
│ │ │ (启动/停止) │───►│ → 51 个工具处理器 │ │ │
│ │ └─────────────────┘ │ → JSON-RPC over TCP │ │ │
│ │ └──────────────┬───────────────┘ │ │
│ │ ▼ │ │
│ │ ┌──────────────────────────────┐ │ │
│ │ │ PyQGIS API │ │ │
│ │ │ (QgsProject, QgsVectorLayer, │ │ │
│ │ │ processing, 地图画布...) │ │ │
│ │ └──────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘工作流程
Astyyym QGIS MCP 插件 在 QGIS 内部开启一个 TCP Socket 服务(默认端口 9877),监听 JSON-RPC 命令。
MCP Server(独立的 Python 进程)通过 TCP 连接到 QGIS,通过
FastMCP将每个命令暴露为 MCP 工具。AI 客户端(Claude Desktop、Cursor 等)通过 stdio 使用标准 MCP 协议与 MCP Server 通信,自动发现并调用工具。
Related MCP server: QGISMCP
与上游的区别
本分支为兼容 QGIS 4.x 做了以下改动(同时保持与 QGIS 3.x 的向后兼容):
改动项 | 说明 |
QGIS 版本检测 | 添加 |
图层类型检测 | QGIS 4.x 使用 |
几何类型辅助 |
|
消息级别辅助 |
|
插件元数据 |
|
Python 版本 |
|
Canvas API |
|
Processing 上下文 |
|
属性安全序列化 |
|
图层树安全 |
|
以上改动均依据 QGIS 4.0 官方 PyQGIS 文档 验证,并在 QGIS 4.0.0-Norrköping 上实测通过。
环境要求
QGIS 4.x(Windows 桌面版,实测 4.0.0-Norrköping)
Hermes Agent(WSL 侧,作为 MCP 客户端)
uv(Python 包管理器,MCP Bridge 依赖)
WSL2(QGIS 跑在 Windows,Hermes 跑在 WSL,两者通过 TCP 通信)
安装
1. 安装 QGIS 插件
将 astyyym_qgis_mcp/ 复制到 QGIS 插件目录:
# Windows via WSL — replace `<WindowsUser>` with your Windows account name
cp -r astyyym_qgis_mcp /mnt/c/Users/<WindowsUser>/AppData/Roaming/QGIS/QGIS4/profiles/default/python/plugins/然后在 QGIS 中:插件 → 管理并安装插件 → 找到 Astyyym QGIS MCP → 勾选启用。工具栏会出现 Astyyym QGIS MCP 图标。
修改插件代码后,必须完整退出 QGIS 再重新打开(
Stop Server→Start Server不会重新加载 Python 类定义)。
2. 配置 Hermes MCP Bridge
WSL 侧 clone 本仓库,uv sync 安装依赖:
cd /path/to/qgis-4.0-mcp-public
uv sync然后在 ~/.hermes/config.yaml 的 mcp_servers 下添加:
mcp_servers:
qgis:
command: uv
args:
- --directory
- /path/to/qgis-4.0-mcp-public
- run
- python
- -m
- qgis_mcp.qgis_mcp_server
env:
PYTHONPATH: src
QGIS_MCP_HOST: 127.0.0.1
QGIS_MCP_PORT: "9877"
timeout: 120
connect_timeout: 30Bridge 代码修改后删
__pycache__,然后重启 Hermes 加载新代码。
使用
启动顺序(必须严格遵守)
QGIS → 点击工具栏 Astyyym QGIS MCP 图标 → Start Server(确认状态 "Server: Running on port 9877")
Hermes → 启动 Hermes Desktop(或
hermes命令)Hermes 启动时自动发现 MCP 工具,之后在 TUI 中直接用自然语言操作
⚠️ QGIS Server 必须先于 Hermes 启动。 如果顺序反了,Bridge 重试耗尽后不会自动恢复,只能重启 Hermes。
实际使用示例
在 Hermes TUI 中直接说:
"加载 D:/项目/规划方案.qgz,告诉我有哪些图层"
"把广东省界裁剪人口数据,输出到 D:/项目/广东人口.gpkg"
"对 DEM 做坡度分析,结果存到 D:/项目/slope.tif"
"甲方给的 CAD 地形图转成 GPKG"
所有操作结果自动加入 QGIS 图层面板,输出路径用 D:/... 格式(不要用 /mnt/d/...,QGIS 不识别)。
可用工具
基础功能
工具名 | 说明 | 参数 |
| 连通性测试 | 无 |
| 获取 QGIS 版本信息 | 无 |
| 加载 QGS/QGZ 项目 |
|
| 新建项目并保存 |
|
| 获取当前项目信息 | 无 |
| 添加矢量图层 |
|
| 添加栅格图层 |
|
| 列出所有图层 | 无 |
| 按 ID 删除图层 |
|
| 缩放到图层范围 |
|
| 查询图层要素 |
|
| 执行 Processing 算法 |
|
| 执行任意 PyQGIS 代码 |
|
| 保存项目 |
|
| 渲染地图为图片 |
|
自定义扩展
工具名 | 说明 | 参数 |
| 获取矢量图层字段名和类型 |
|
| 重排图层顺序(首项最上层) |
|
| 重命名图层 |
|
| 导出图层到文件 |
|
| 缩放到满足表达式的要素 |
|
| 创建缓冲区(自动CRS转换) |
|
| 添加字段并赋值(表达式/排序) |
|
| 批量删除字段 |
|
| 安全重排序字段(创建新文件,不动原始数据) |
|
工程理解、受控编辑与交付诊断
工具名 | 说明 | 参数 |
| 返回工程、图层树、工程变量、布局列表和未保存状态 | 无 |
| 返回真实分组、层级、顺序与可见性 | 无 |
| 检查数据源、CRS、范围、字段、选择集和编辑状态 |
|
| 汇总失效图层、空矢量图层、活动编辑和 CRS 风险 | 无 |
| 按表达式或当前选择集读取属性,不写源数据 |
|
| 计算空值、唯一值和数值统计 |
|
| 校验 QGIS 表达式并返回预计命中数 |
|
| 获取或修改 QGIS 内存选择集,不写数据源 |
|
| 预览或计算已有字段;默认仅 dry run |
|
| 预览或批量更新属性,不支持几何改写;默认仅 dry run |
|
| 预览或删除明确匹配的要素;默认仅 dry run |
|
| 交付前检查工程路径、未保存改动、失效源、编辑状态和 CRS | 无 |
| 校验图层或输出文件的类型、CRS、要素数预期 |
|
| 检查输出存在且可被 QGIS 重开 |
|
| 返回本次插件实例已处理操作的审计记录 |
|
| 生成带时间戳的工程与诊断快照 | 无 |
写入型工具默认
dry_run=true,只返回将受影响的要素数。实际写入必须显式传入dry_run=false;属性更新与删除还必须提供expression或feature_ids,避免无筛选批量修改。
数据质检与叠合分析
工具名 | 说明 | 参数 |
| 图层数据体检:CRS、字段、空几何、无效几何、栅格元数据 |
|
| 检查工程或指定图层 CRS 是否一致 |
|
| 矢量图层重投影并自动加入工程 |
|
| 矢量裁剪 |
|
| 矢量相交叠加 |
|
| 矢量差集/擦除 |
|
| 按空间关系连接属性 |
|
| 计算面积字段(平方米/公顷,原地更新前自动备份) |
|
| 按字段汇总面积和占比 |
|
| 按 QGIS 表达式选择要素 |
|
| 导出当前选择集 |
|
栅格与DEM分析
工具名 | 说明 | 参数 |
| 用矢量掩膜裁剪栅格 |
|
| 分区统计栅格值到面图层 |
|
| 从 DEM 计算坡度(度) |
|
| 从 DEM 计算坡向 |
|
| 从 DEM 生成等高线 |
|
| 填挖方计算(DEM − 设计面) |
|
数据转换与插值
工具名 | 说明 | 参数 |
| CAD(DXF/DWG)转 GeoPackage |
|
| 创建矩形渔网(fishnet) |
|
| IDW 反距离加权插值(点→栅格) |
|
安全说明
此插件允许任意 PyQGIS 代码通过 TCP socket 远程执行。 服务绑定
0.0.0.0:9877(默认端口),局域网内任何能连到该端口的主机都可以发送命令。
不要暴露到公网。 9877 端口不做鉴权,也没有加密。
建议使用场景: AI agent(Hermes/Claude)在本地或 WSL 中通过
172.x.x.x内网 IP 连接,不跨机器开放。execute_code命令是双刃剑: 它可以做任何事情——包括读写文件、删除图层、多次提交编辑。只在可信环境中使用。端口可在插件 UI 中更改(默认 9877),当前连接的 WSL IP 可用
ipconfig查看。
致谢
上游项目: jjsantos01/qgis_mcp(⭐984)
灵感来源: BlenderMCP by Siddharth Ahuja
协议: Model Context Protocol by Anthropic
QGIS 4 兼容参考: evenzur/qgis_3and4_MCP_Plugin
许可证
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 Servers
- Flicense-qualityDmaintenanceConnects QGIS to Claude AI through the Model Context Protocol, enabling AI-assisted project creation, layer manipulation, processing algorithm execution, and Python code running within QGIS.7
- AlicenseBqualityDmaintenanceA Model Context Protocol server that connects Claude AI to QGIS, enabling direct interaction with the GIS software for project creation, layer manipulation, code execution, and processing algorithms through natural language prompts.1510Creative Commons Zero v1.0 Universal
- AlicenseBqualityAmaintenanceAn MCP server that enables AI assistants to directly control QGIS for tasks like layer management, feature editing, and map rendering. It provides a suite of 50 tools to execute processing algorithms and manage GIS projects through natural language commands.100220GPL 2.0
- FlicenseBqualityDmaintenanceQGISMCP connects QGIS to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control QGIS for project creation, layer loading, code execution, and more.151
Related MCP Connectors
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
MCP server for AI dialogue using various LLM models via AceDataCloud
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/Astyyym/QGIS-4.0-MCP-public'
If you have feedback or need assistance with the MCP directory API, please join our Discord server