项目简介

GDAL MCP (Model Context Protocol) 是一个基于FastMCP框架开发的、面向对话式AI的地理空间分析服务器。它旨在通过自然语言交互,让领域专家无需掌握复杂的命令行工具、Python编程或GDAL语法,即可轻松利用GDAL的强大能力。该服务器实现了MCP协议,为大型语言模型(LLM)提供标准化的上下文信息和功能调用接口,从而实现更智能、更自主的地理空间数据处理和分析工作流。

主要功能点

  • 地理空间工具集: 封装了GDAL(通过Python原生库如Rasterio、PyProj、pyogrio等)的核心操作,包括栅格数据的'信息查询 (raster_info)'、'格式转换 (raster_convert)'、'坐标系重投影 (raster_reproject)'、'统计分析 (raster_stats)',以及矢量数据的'信息查询 (vector_info)'。
  • 资源管理与发现: 提供'catalog://workspace'资源,允许LLM发现和管理工作区中的所有栅格和矢量数据;'metadata://{file}'资源提供详细的文件格式、CRS、波段等元数据信息;'reference://'资源提供坐标参考系统(CRS)、重采样方法、压缩方式等领域知识,辅助LLM做出更明智的决策。
  • Prompt模板: 定义了'gdal_task'等Prompt模板,指导LLM客户端如何有效地选择和调用GDAL MCP提供的工具。
  • 生产就绪: 采用Python原生栈(无GDAL CLI依赖)、类型安全(Pydantic)、工作区安全(路径验证中间件)、CI/CD流程和全面的测试覆盖,确保了代码质量和可靠性。
  • 上下文支持: 支持在长时间运行的操作中向LLM提供实时反馈。

安装步骤

GDAL MCP支持多种安装和运行方式,您可以根据自己的需求选择。

  1. 使用 'uvx' (推荐,无需安装到本地): 直接运行,无需在本地系统安装。这会在一个隔离的环境中执行GDAL MCP服务器。
    uvx --from gdal-mcp gdal --transport stdio
  2. 使用 Docker: 构建并运行Docker镜像,提供隔离和一致的运行环境。
    docker build -t gdal-mcp .
    docker run -i gdal-mcp --transport stdio
  3. 本地开发环境安装: 如果您想进行开发或更精细的控制,可以克隆仓库并在本地安装。
    git clone https://github.com/Wayfinder-Foundry/gdal-mcp.git
    cd gdal-mcp
    uv sync # 使用uv管理依赖
    uv run gdal --transport stdio

服务器配置 (用于MCP客户端)

GDAL MCP服务器可以通过JSON-RPC协议与支持MCP的客户端(如Claude Desktop、Cursor等)进行通信。以下是配置MCP客户端连接GDAL MCP服务器的示例:

例如,在Claude Desktop客户端的配置文件 ('~/Library/Application Support/Claude/claude_desktop_config.json' 或类似位置) 中添加以下JSON配置:

{
  "mcpServers": {
    "gdal-mcp": {
      "command": "uvx",
      "args": ["--from", "gdal-mcp", "gdal", "--transport", "stdio"],
      "env": {
        "GDAL_CACHEMAX": "512"
      },
      "description": "GDAL MCP服务器,提供地理空间数据处理能力。",
      "icon": "https://example.com/gdal-mcp-icon.png"
    }
  }
}
  • server name ('gdal-mcp'): 您为该MCP服务器指定的唯一标识符,客户端将使用此名称引用它。
  • command ('uvx'): 启动GDAL MCP服务器的可执行命令。这里推荐使用 'uvx' 来确保环境隔离。
  • args ('--from', 'gdal-mcp', 'gdal', '--transport', 'stdio'): 传递给启动命令的参数。'--transport stdio' 指示服务器使用标准输入/输出进行JSON-RPC通信。
  • env ('GDAL_CACHEMAX'): 可选的环境变量,例如设置GDAL的缓存大小,以优化性能。
  • description: 可选,提供给客户端的用户友好描述。
  • icon: 可选,服务器的图标URL。

基本使用方法 (与MCP客户端交互)

一旦服务器配置并运行,您可以通过MCP客户端以自然语言向其发出请求。

  1. 启动MCP客户端: 确保您的MCP客户端(如Claude Desktop)已启动并加载了GDAL MCP的配置。
  2. 提出自然语言请求: 在客户端的聊天界面中,您可以尝试以下类型的请求:
    • "使用'raster_info'检查 '/path/to/my_raster.tif' 的元数据。"
    • "将 '/data/input.tif' 转换为Cloud-Optimized GeoTIFF格式,并使用deflate压缩,输出到 '/data/output_cog.tif'。"
    • "将 '/data/dem.tif' 重投影到Web Mercator (EPSG:3857) 坐标系,使用三次卷积重采样,保存为 '/data/dem_webmercator.tif'。"
    • "展示工作区中所有栅格文件列表。"
    • "哪些CRS是欧洲地区常用的?" MCP客户端将解析您的自然语言请求,并根据GDAL MCP服务器声明的工具和资源,生成相应的JSON-RPC调用,然后将结果返回给您。

信息

分类

AI与计算