使用说明

项目简介

Geoapify Map Generator 是一个 MCP 服务器,它利用 Geoapify 提供的地理编码服务,将地址转换为 GPS 坐标,并使用 Folium 和 Selenium 生成地图图像。此服务器通过工具的形式向 LLM 客户端提供地理位置查询和地图生成能力。

主要功能点

  • 地址地理编码: 通过 'get_gps_coordinates' 工具,根据输入的地址字符串,调用 Geoapify API 获取对应的 GPS 坐标信息,返回 JSON 格式的地理编码数据。
  • GeoJSON 地图生成: 通过 'create_map_from_geojson' 工具,根据提供的 GeoJSON 坐标数据,使用 Folium 生成交互式地图,并使用 Selenium 将地图渲染为 PNG 图像文件,方便在 LLM 应用中展示地图。

安装步骤

  1. 获取 Geoapify API 密钥: 访问 Geoapify 官网 注册并获取 API 密钥。
  2. 设置环境变量: 将获取到的 API 密钥设置为名为 'GEO_APIKEY' 的环境变量。例如,在 Linux 或 macOS 系统中,可以在终端中使用 'export GEO_APIKEY=YOURAPIKEY' 命令设置。在 Windows 系统中,可以在系统环境变量中添加。
  3. 克隆仓库: 使用 'git clone https://github.com/burningion/geoapify-mcp' 命令克隆仓库到本地。
  4. 安装依赖: 根据 'README.md' 中的 'claude_desktop_config.json' 示例,项目依赖 'fastmcp', 'requests', 'folio', 'selenium', 'pillow' 等库。建议使用 'uv' 或 'pip' 等包管理工具安装这些依赖。例如,使用 'uv pip install fastmcp requests folium selenium pillow' 命令安装。

服务器配置

以下是配置 MCP 客户端(如 Claude)连接到 Geoapify Map Generator 服务器的 'claude_desktop_config.json' 示例配置。请根据实际仓库路径进行修改:

"MCP Map Demo": {  // 服务器名称,可以自定义
  "command": "uv",  // 启动命令,这里假设使用 uv 运行器,也可以是 python 或其他运行器
  "args": [ // 启动参数列表
    "--directory", // 指定工作目录参数
    "/PATH/TO/THIS/REPO", // 替换为仓库的实际本地路径
    "run", // uv 的 run 命令
    "--with", // uv 的 --with 参数,用于声明项目依赖
    "fastmcp", // 声明依赖 fastmcp
    "--with",
    "requests", // 声明依赖 requests
    "--with",
    "folio", // 声明依赖 folium (typo in original README, should be folium)
    "--with",
    "selenium", // 声明依赖 selenium
    "--with",
    "pillow", // 声明依赖 pillow
    "fastmcp", // 使用 fastmcp 运行器
    "run",  // fastmcp 的 run 命令
    "/PATH/TO/THIS/REPO/server.py" // 替换为 server.py 脚本的实际路径
  ],
  "env": { // 环境变量配置
    "GEO_APIKEY": "YOURAPIKEY"  //  将 YOURAPIKEY 替换为实际的 Geoapify API 密钥
  }
}

注意:

  • 请将配置中的 '/PATH/TO/THIS/REPO' 替换为 Geoapify Map Generator 仓库在您本地文件系统中的实际路径。
  • 请将 'YOURAPIKEY' 替换为您在 Geoapify 官网申请的 API 密钥。
  • 确保已安装 'uv' 或其他配置中指定的运行器。如果使用 'python' 直接运行,需要将 'command' 修改为 'python',并调整 'args' 参数。

基本使用方法

  1. 启动 MCP 服务器:根据上述配置,启动 MCP 客户端 (如 Claude),客户端将自动连接到 Geoapify Map Generator 服务器。
  2. 使用 'get_gps_coordinates' 工具:在 MCP 客户端中,可以使用自然语言指令调用 'get_gps_coordinates' 工具,并提供地址信息。例如:
    你能帮我获取 "北京市朝阳区建国门外大街" 的 GPS 坐标吗?
    服务器将返回包含 GPS 坐标的 JSON 数据。
  3. 使用 'create_map_from_geojson' 工具:首先需要准备包含地理坐标信息的 GeoJSON 文件(例如,可以使用 'get_gps_coordinates' 工具获取坐标后手动创建 GeoJSON 文件)。然后,在 MCP 客户端中,可以使用自然语言指令调用 'create_map_from_geojson' 工具,并提供 GeoJSON 文件。例如:
    请根据我上传的 geojson 文件生成地图图片。
    [上传 geo.json 文件]
    服务器将生成地图图片 'temp_map.png' 并返回图片文件路径。在 macOS 系统中,还会自动打开图片预览 (根据代码 'subprocess.run(["open", "temp_map.png"])')。

示例 GeoJSON 文件 (geo.json):

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "name": "地点 1",
        "description": "地点 1 的描述"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [ 116.4074, 39.9042 ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "name": "地点 2",
        "description": "地点 2 的描述"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [ 116.4274, 39.9242 ]
      }
    }
  ]
}

信息

分类

网页与API