项目简介

OSMMCP (OpenStreetMap MCP Server) 是一个功能强大的地理空间工具服务器,专为大语言模型 (LLM) 设计。它通过Model Context Protocol (MCP) 标准协议提供一系列与OpenStreetMap数据交互的功能,如地址坐标转换、最佳路线规划、查找附近兴趣点、分析区域特征以及定位电动汽车充电站等,旨在增强LLM在地理信息处理方面的能力。

主要功能点

  • 地理编码: 将地址或地点名称转换为精确的地理坐标,也支持将坐标反向解析为人类可读的地址。
  • 路线规划: 计算两点之间的最佳路径,并提供距离、时间以及详细的逐向指示。
  • 附近地点搜索: 基于给定位置和半径,发现周边的餐馆、酒店、公园、商店等兴趣点。
  • 区域分析: 深入分析特定区域的宜居性(livability),包括步行、骑行、公共交通、教育、购物、餐饮、娱乐、安全和医疗等方面的评分,并提供关键设施和潜在问题的概括。
  • 电动汽车充电站: 精确查找附近或沿途的电动汽车充电站信息,包括类型、运营商、功率和费用。
  • 通勤分析: 比较不同交通方式(汽车、自行车、步行)在通勤时间、距离、碳排放和卡路里消耗方面的差异,并给出推荐。
  • 学校查找: 查找附近各类教育机构,如小学、中学、大学等。
  • 停车设施查找: 查找附近的停车场和停车设施,提供类型、容量、费用和可访问性等信息。
  • 推荐会议点: 为多位参与者计算并推荐位于他们之间最便捷的会议地点。

安装步骤

  1. 克隆仓库: 打开终端或命令提示符,执行以下命令下载项目代码:
    git clone https://github.com/estebamod/osmmcp.git
  2. 进入项目目录:
    cd osmmcp
  3. 构建项目: 编译服务器程序。您需要预先安装 Go 编程语言环境。
    go build -o osmmcp ./cmd/osmmcp
  4. 运行服务器:
    ./osmmcp
    服务器将在标准输入/输出上运行,准备好接收MCP客户端的请求。您可以使用 'Ctrl+C' 来停止服务器。

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

OSMMCP 服务器作为 MCP 客户端的后端,客户端需要知道如何启动并连接到它。以下是 MCP 客户端配置 OSMMCP 服务器的示例信息:

{
  "serverName": "osm-mcp-server",
  "command": "/path/to/your/osmmcp",
  "args": [],
  "description": "提供基于OpenStreetMap的地理空间工具,包括地理编码、路线规划和地点搜索。"
}
  • serverName: 'osm-mcp-server' - 服务器的唯一名称。
  • command: '/path/to/your/osmmcp' - 指向您刚才构建的 'osmmcp' 可执行文件的完整路径。例如,如果您在当前目录运行,可以是 './osmmcp'。在实际部署中,建议提供绝对路径。
  • args: '[]' - 启动服务器时附加的命令行参数列表。默认情况下,该服务器不需要额外参数。可选参数包括:
    • '--debug': 启用调试日志,会输出更详细的运行信息。
    • '--user-agent <string>': 设置发往OpenStreetMap API的User-Agent字符串。
    • '--nominatim-rps <float>': 设置Nominatim地理编码服务的每秒请求速率限制。
    • '--nominatim-burst <int>': 设置Nominatim地理编码服务的突发请求数量。
    • '--overpass-rps <float>': 设置Overpass查询服务的每秒请求速率限制。
    • '--overpass-burst <int>': 设置Overpass查询服务的突发请求数量。
    • '--osrm-rps <float>': 设置OSRM路由服务的每秒请求速率限制。
    • '--osrm-burst <int>': 设置OSRM路由服务的突发请求数量。
    • '--generate-config <path>': 生成一个适用于Claude Desktop客户端的配置文件(通常不需要手动设置)。
    • '--merge-only': 与 '--generate-config' 结合使用,仅合并新配置,不覆盖现有文件。
  • description: 对服务器功能的简要描述,方便客户端识别。

基本使用方法

一旦MCP服务器运行起来,支持MCP协议的LLM客户端(例如Claude Desktop Client)将能够自动发现并调用其暴露的地理空间工具。您无需直接与服务器的HTTP端点交互(README中提到的HTTP GET示例是传统的RESTful API用法,本MCP服务器通过标准输入/输出来与LLM客户端通信,不直接暴露HTTP接口)。

例如,通过支持MCP的LLM客户端,您可以直接向LLM提问:

  • "请帮我查找埃菲尔铁塔的坐标。" (会调用 'geocode_address' 工具)
  • "从纽约市到旧金山的驾车路线是什么?" (会调用 'get_route_directions' 工具)
  • "在伦敦市中心附近有哪些好的餐馆?" (会调用 'find_nearby_places' 工具)
  • "请分析一下旧金山渔人码头附近的宜居性。" (会调用 'analyze_neighborhood' 工具)

LLM客户端会根据您的问题,自动选择并调用OSMMCP服务器提供的相应工具来获取信息。

信息

分类

AI与计算