gdal-mcp
JordanGunn/gdal-mcp加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你让 AI 代理处理一张卫星遥感影像,代理可以写代码、调用 API,但在面对 .tif 格式的 DEM(数字高程模型)时犯了难:这张图用的是哪个坐标参考系统?重投影到 Web 墨卡托时应该选哪种重采样算法?为什么这张图处理后边缘出现了诡异的锯齿?
这不是代理"不聪明",而是地理信息处理(GIS)本身就是一门需要专业判断的领域——坐标参考系统(CRS)选错,数据直接报废;重采样方法选错,定量分析结果完全失真。
gdal-mcp 正是为解决这个问题而生:它是一个基于 Model Context Protocol(MCP)的服务端,将 GDAL/Rasterio/GeoPandas 等地理信息处理能力,以结构化工具的形式暴露给 AI 代理,让代理在处理地理数据时具备"专业判断力"。
GDAL(Geospatial Data Abstraction Library)是地理信息领域最核心的数据处理库,几乎所有主流 GIS 软件(QGIS、ArcGIS、PostGIS)底层都在用它。然而 GDAL 本身是 C++ 库,原生 API 复杂且缺乏结构化抽象,直接暴露给 AI 代理会导致两个核心问题:
raster_reproject 需要指定 CRS(如 EPSG:4326 → EPSG:3857)、重采样方法(nearest/bilinear/cubic 等),选错后果严重.tif 文件的坐标范围、波段信息、Nodata 值等gdal-mcp 由 JordanGunn(Wayfinder-Foundry 团队)开发,基于 FastMCP 2.0 框架,将 Python 原生地理信息处理库(Rasterio、pyogrio、GeoPandas、PyProj、Shapely)封装为 MCP 工具,AI 代理通过标准 MCP 协议即可调用。
| 工具 | 功能 | 典型场景 |
|---|---|---|
raster_info | 读取元数据(CRS、分辨率、边界、波段信息) | 处理前快速了解数据规格 |
raster_convert | 格式转换 + 压缩 + 生成金字塔 | 导出 Cloud-Optimized GeoTIFF (COG) |
raster_reproject | 坐标参考系统转换 + 重采样 | 叠加不同 CRS 的卫星影像 |
raster_stats | 统计信息(直方图、百分位数) | 快速了解像元值分布 |
raster_query | 空间查询(按坐标/范围提取像元值) | 获取某点的海拔/温度数据 |
| 工具 | 功能 | 典型场景 |
|---|---|---|
vector_info | 读取矢量元数据(几何类型、字段、CRS) | 查看 shapefile 结构 |
vector_convert | 格式转换(GeoJSON/Shapefile/GeoPackage) | 导出为 Web 友好的 GeoJSON |
vector_reproject | 坐标转换 | 将 WGS84 数据投影到本地坐标系 |
vector_clip | 空间裁剪 | 用边界框裁剪行政区域数据 |
vector_buffer | 缓冲区分析 | 某点周围 500 米范围内的建筑 |
vector_simplify | 几何简化 | 减小矢量数据文件大小用于可视化 |
vector_query | 属性 + 空间查询 | 查某县所有道路 |
这是 gdal-mcp 最独特的设计。当 AI 代理调用 raster_reproject 或 justify_crs_selection 这类"方法论敏感"的操作时,反射中间件(Reflection Middleware) 会拦截请求,要求代理提供结构化理由:
只有代理提供了符合 schema 的理由,操作才会执行。这一机制确保 AI 在关键地理处理步骤上"想清楚再动手",避免因 CRS 选择或重采样方法不当导致数据失真。
AI Agent
│ MCP Protocol
▼
FastMCP Server (src/server.py)
├── 工具注册: src/tools/raster/, src/tools/vector/
├── 反射中间件: src/middleware/reflection_middleware.py
├── 资源提供: src/resources/ (catalog/metadata/reference)
└── 底层处理: Rasterio / pyogrio / GeoPandas / PyProj / Shapely
依赖栈:fastmcp>=2.0(服务框架)→ pydantic>=2.0(数据验证)→ typer(CLI)+ rich(终端美化)→ 地理处理库(rasterio、geopandas、pyproj、shapely、pyogrio、fiona)
代码结构:采用 src/ 布局(符合现代 Python 包规范),中间件、工具、提示词、资源四大模块职责清晰。主要逻辑约 3000 行 Python,无外部 AI/ML 依赖,专注于地理数据处理管道。
gdal-mcp 本质上是 MCP 协议的服务端实现,面向的是 AI 开发者或需要将地理处理能力集成到 AI Agent 的用户。
安装方式:极简,一行命令:
uvx --from gdal-mcp gdal --transport stdio
配置方式:在 Claude Desktop 或其他 MCP 客户端中添加配置:
{
"mcpServers": {
"gdal-mcp": {
"command": "uvx",
"args": ["--from", "gdal-mcp", "gdal", "--transport", "stdio"],
"env": {
"GDAL_MCP_WORKSPACES": "/path/to/geospatial/data"
}
}
}
}
工作空间隔离:GDAL_MCP_WORKSPACES 环境变量控制服务端可访问的目录范围,防止误操作。
.tif、.shp 等文件,不适合纯云端场景随着 AI Agent 工作流越来越复杂,Agent 需要处理的数据类型也从文本/图像扩展到了地理信息。gdal-mcp 代表了一种趋势:将领域特定工具的专业知识,通过标准化协议(这里是 MCP)开放给 AI Agent。
在遥感分析、土地利用监测、气象数据处理、导航路径规划等场景中,AI Agent 往往需要处理地理数据,而现有 Agent 框架普遍缺乏这类能力。gdal-mcp 的反射中间件设计尤其值得注意——它尝试让 AI 在专业决策前进行"方法论自省",这在科学计算领域有更广泛的应用前景。
从增长数据看,该项目上线约 3 个月获得 72 stars,月增长趋势分 13.47,考虑到地理信息处理的垂直领域属性,这个增长是健康的。