一个 GIS MCP server 同时能下载边界、裁剪影像、运行空间统计、生成地图并保存文件时,它已经不是单纯的问答插件,而是数据获取、计算与文件交付的控制面。gisMcp 的官方 README 提供了一个可核验的开源案例:它经一个 FastMCP instance 暴露 98 个空间工具,可经 stdio、HTTP 或 SSE 传输调用,并带有本地或 Google Cloud Storage 的可插拔存储。对组织来说,第一件事不是让模型看见所有工具,而是把传输入口、可下载的数据、写入目录、返回文件和高影响操作划成明确边界。
数据口径与可核验事实
gisMcp README 将项目描述为上游开源 GIS MCP server 的重构、自托管 fork。它称一个 FastMCP instance 通过默认 stdio、HTTP 或 SSE 暴露 98 个 geospatial tools;LLM agent 可用 plain JSON tool calls 缓冲 geometry、重投影坐标、裁剪 raster、运行空间统计、下载真实数据并渲染地图。
代码按四个包组织。ops 是分析核心,README 列出 86 个工具,包装 Shapely、PyProj、GeoPandas、Rasterio 与 PySAL;data 提供 GADM、ERA5、GBIF、OSM、ESA WorldCover 和 Sentinel-2 等下载;maps 生成 Matplotlib 静态地图和 Folium 交互地图;store 提供本地磁盘与 Google Cloud Storage 的存储抽象和 storage HTTP endpoints。
README 的启动示例使用 gismcp 运行 stdio;设 GIS_MCP_TRANSPORT=http 时 MCP endpoint 是 /mcp、存储端点位于 /storage/...,设为 sse 时 MCP endpoint 是 /sse。配置中,本地根目录可由 --storage-path 或 GIS_MCP_STORAGE_PATH 指定,默认是 ~/.gis_mcp/data;GCS provider 通过环境变量指定 bucket、prefix、credentials 与 project。
文档给出三条组合工作流:边界下载、buffer、overlay 和地图;卫星影像下载、按 shapefile clip、NDVI 和地图;以及 spatial weights、Moran’s I、带空间诊断的 OLS。create_web_map 会在 storage root 下写 HTML,并由 GET /storage/download?path=outputs/map.html 提供下载。README 还称测试通过 FastMCP test client 驱动共享 gis_mcp instance,测试目录有 104 个测试。
研究的八项固定口径
-
gisMcp 是上游 GIS MCP server 的重构、自托管 fork。
-
一个 FastMCP instance 经 stdio、HTTP 或 SSE 暴露 98 个空间工具。
-
ops有 86 个分析工具,包装 Shapely、PyProj、GeoPandas、Rasterio 与 PySAL。 -
data包可下载 GADM、ERA5、GBIF、OSM、ESA WorldCover 与 Sentinel-2。 -
maps生成 Matplotlib 静态地图与 Folium 交互地图。 -
store支持本地磁盘和 Google Cloud Storage,并提供 storage HTTP endpoints。 -
HTTP transport 的 MCP endpoint 是
/mcp,SSE transport 的 endpoint 是/sse。 -
create_web_map在 storage root 写 HTML,可由/storage/download下载。
核心机制:工具权限、数据权限和文件权限必须分开
MCP client 能调用一个工具,不代表它应自动拥有该工具所接触的数据和文件权限。以 download_satellite_imagery 为例,工具访问的是外部数据源;以 clip_raster_with_shapefile 为例,它读取输入并产生中间文件;以 create_web_map 为例,它又把结果写进可下载路径。三个动作应分别有来源许可、AOI/体量限制、输出目录和下载授权,而不能只靠一个“允许调用 MCP”的总开关。
传输选择同样改变威胁面。stdio 适合单机、受控的本地 client;HTTP/SSE 让其他进程或网络 client 访问,因此需要认证、网络隔离、请求限额、审计和明确的允许工具集。README 所列 /storage/... 与 /storage/download 更要求将下载路径限制在工作根目录内,拒绝路径穿越,并将不可公开的中间文件与可交付成果分开。
GIS 场景
若团队要做“某区绿地与热岛风险的初筛”,可以只开放一组只读工具:按允许的行政区下载边界、读取预批准气候格网、计算受限统计和导出审阅地图。Agent 的每次调用都记录输入 AOI、数据来源、版本、下载时间、参数、输出相对路径和调用人。它可以提出候选结论,但不得代替权威监测、规划审批或健康风险认定。
影像链路尤其需要预算与范围控制。Sentinel-2 下载、栅格裁剪和 NDVI 可能在大 AOI 或反复重试时产生明显成本与存储量。把下载工具设为只接受面积上限、日期窗口和预定义 collection,把结果写入 run-specific 子目录,并设置过期清理规则,才可让自然语言入口保持可预测。
技术路径
第一,先以 stdio 在隔离机器运行,注册一个只读工具 allowlist,而不是一次启用 98 个工具。第二,按 ops、data、maps、store 建四类权限:分析参数、外部下载、地图渲染和文件读写分别授权。第三,固定 GIS_MCP_STORAGE_PATH 到专用根目录,输出只能使用运行 ID 下的相对路径。第四,若启用 HTTP/SSE,增加认证、反向代理范围限制、每 client 的速率与 AOI/行数/文件大小配额。第五,用 FastMCP client 回归 buffer、overlay、栅格 clip 和地图下载,检查调用日志、输出路径、异常响应与目录隔离。
在交付层,将地图 HTML 与其他中间栅格、矢量、凭据或调试日志放到不同目录。/storage/download 只允许白名单的成品相对路径,并在返回前核查 MIME type、大小和生成任务归属。
风险与局限
README 的 98 工具与 104 测试是项目作者的说明,不等于所有工具在组织网络、云凭据、数据许可或生产负载下都安全。不同下载器的数据许可、更新节奏、覆盖范围与使用条款并不相同;模型也可能选择了逻辑正确却业务不合适的工具或参数。
HTTP/SSE 暴露的 server 和 storage download 接口若无认证、目录隔离或请求审计,可能把数据下载和文件读取能力扩展到不应访问的 client。即便保存的是公开数据,组合 AOI、时间、资产或内部图层仍可能形成敏感信息,应按业务场景控制留存和分享。
检查清单
-
是否从 stdio 和最小 allowlist 起步,而非默认开放全部 98 个工具?
-
是否将数据下载、空间分析、渲染与文件下载拆成独立授权?
-
是否为外部数据设 AOI、日期、行数、文件大小与调用频率上限?
-
HTTP/SSE 是否有认证、网络隔离、审计与 client 限流?
-
GIS_MCP_STORAGE_PATH是否为专用根目录,并禁止路径穿越? -
/storage/download是否只提供有归属的成品相对路径? -
是否为每次 Agent 调用保存来源、版本、参数、输出与人工复核结论?
结论
gisMcp 证明 FastMCP 可以把分析、数据和地图交付组合成统一工具面;也正因如此,GIS Agent 的安全边界必须落在传输、下载、存储和结果发布四处。先让一小组只读工具在固定根目录中可审计地运行,再逐步开放影像处理和 Web 地图交付,才能把“工具很多”变成受控的空间工作流。
资料来源
- aiHelpmate/gisMcp 官方 README,2026-09-25 查阅。