项目简介
OSMMCP (OpenStreetMap MCP Server) 是一个功能强大的地理空间工具服务器,专为大语言模型 (LLM) 设计。它通过Model Context Protocol (MCP) 标准协议提供一系列与OpenStreetMap数据交互的功能,如地址坐标转换、最佳路线规划、查找附近兴趣点、分析区域特征以及定位电动汽车充电站等,旨在增强LLM在地理信息处理方面的能力。
主要功能点
- 地理编码: 将地址或地点名称转换为精确的地理坐标,也支持将坐标反向解析为人类可读的地址。
- 路线规划: 计算两点之间的最佳路径,并提供距离、时间以及详细的逐向指示。
- 附近地点搜索: 基于给定位置和半径,发现周边的餐馆、酒店、公园、商店等兴趣点。
- 区域分析: 深入分析特定区域的宜居性(livability),包括步行、骑行、公共交通、教育、购物、餐饮、娱乐、安全和医疗等方面的评分,并提供关键设施和潜在问题的概括。
- 电动汽车充电站: 精确查找附近或沿途的电动汽车充电站信息,包括类型、运营商、功率和费用。
- 通勤分析: 比较不同交通方式(汽车、自行车、步行)在通勤时间、距离、碳排放和卡路里消耗方面的差异,并给出推荐。
- 学校查找: 查找附近各类教育机构,如小学、中学、大学等。
- 停车设施查找: 查找附近的停车场和停车设施,提供类型、容量、费用和可访问性等信息。
- 推荐会议点: 为多位参与者计算并推荐位于他们之间最便捷的会议地点。
安装步骤
- 克隆仓库: 打开终端或命令提示符,执行以下命令下载项目代码:
git clone https://github.com/estebamod/osmmcp.git - 进入项目目录:
cd osmmcp - 构建项目: 编译服务器程序。您需要预先安装 Go 编程语言环境。
go build -o osmmcp ./cmd/osmmcp - 运行服务器:
服务器将在标准输入/输出上运行,准备好接收MCP客户端的请求。您可以使用 'Ctrl+C' 来停止服务器。./osmmcp
服务器配置 (用于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与计算