地理数据服务

OpenStreetMap MCP服务器通过增强LLM的地理数据处理能力,提供地址编码、路线规划、兴趣点搜索等位置服务功能。

  • by jagan-shanmugam
  • Python
  • 本地部署
  • 230 星标
  • 更新于
在 GitHub 查看 jagan-shanmugam/open-streetmap-mcp

使用说明

OpenStreetMap(OSM)MCP服务器

OpenStreetMap MCP服务器实现,通过基于位置的服务和地理空间数据增强LLM功能。

演示

汇点优化

邻域分析

停车场搜索

安装

在MCP主机中,如Claude Desktop、Cursor、Windsurf等。

  • osm-mcp-server:主服务器,可供公众使用。

    "mcpServers": {
      "osm-mcp-server": {
        "command": "uvx",
        "args": [
          "osm-mcp-server"
        ]
      }
    }
    

特性

该服务器为LLM提供了与OpenStreetMap数据交互的工具,使基于位置的应用程序能够:

  • 地理代码地址和地名坐标
  • 将地理编码坐标反向转换为地址
  • 查找附近的景点
  • 获取位置之间的路线指示
  • 在边界框内按类别搜索地点
  • 为多人推荐最佳会面地点
  • 探索区域并获取全面的位置信息
  • 查找附近的学校和教育机构
  • 分析家庭和工作之间的通勤选择
  • 找到带连接器和电源滤波的电动汽车充电站
  • 对房地产进行邻里宜居性分析
  • 查找停车设施及其可用性和费用信息

组件

资源

服务器实现基于位置的资源:

  • location://place/{query}:按名称或地址获取有关地点的信息
  • location://map/{style}/{z}/{x}/{y}:在指定坐标处获取样式化的地图图块

工具

服务器实现了几个地理空间工具:

  • geocode_address:将文本转换为地理坐标
  • reverse_geocode:将坐标转换为人类可读的地址
  • find_nearby_places:发现某个地点附近的兴趣点
  • get_route_directions:获取位置之间的逐向指示
  • search_category:查找某个区域中特定类别的位置
  • suggest_meeting_point:为多人找到最佳会面地点
  • explore_area:获取有关社区的全面数据
  • find_schools_nearby:将教育机构设在特定地点附近
  • analyze_commute:比较家庭和工作之间的交通选择
  • find_ev_charging_stations:通过过滤定位电动汽车充电基础设施
  • analyze_neighborhood:评估房地产社区的宜居性
  • find_parking_facilities:查找目的地附近的停车位

局部测试

运行服务器

要在本地运行服务器,请执行以下操作:

  1. 在开发模式下安装软件包:
pip install -e .
  1. 启动服务器:
osm-mcp-server
  1. 服务器将启动并监听标准输入/输出上的MCP请求。

使用示例客户端进行测试

存储库中包括两个示例客户端 examples/ 目录:

基本客户端示例

client.py 演示了OSM MCP服务器的基本用法:

python examples/client.py

这将:

  • 连接到本地运行的服务器
  • 获取有关旧金山的信息
  • 搜索该地区的餐馆
  • 通过进度跟踪检索综合地图数据

LLM集成示例

llm_client.py 提供了一个为LLM集成设计的辅助类:

python examples/llm_client.py

此示例显示了LLM如何使用位置助手:

  • 从文本查询中获取位置信息
  • 查找附近的景点
  • 获取位置之间的路线
  • 寻找最佳会面地点
  • 探索社区

写自己的客户

要创建自己的客户端,请执行以下操作:

  1. 导入MCP客户端:
from mcp.client import Client
  1. 使用服务器URL初始化客户端:
client = Client("http://localhost:8000")
  1. 调用工具或访问资源:
# Example: Geocode an address
results = await client.invoke_tool("geocode_address", {"address": "New York City"})

本地服务器的Claude桌面配置

在MacOS上: ~/Library/Application\ Support/Claude/claude_desktop_config.json 在Windows上: %APPDATA%/Claude/claude_desktop_config.json

Development/Unpublished Servers Configuration
"mcpServers": {
  "osm-mcp-server": {
    "command": "uv",
    "args": [
      "--directory",
      "/path/to/osm-mcp-server",
      "run",
      "osm-mcp-server"
    ]
  }
}

发展

建筑与出版

准备分发包裹:

  1. 同步依赖关系并更新锁文件:
uv sync
  1. 构建包分发:
uv build

这将在 dist/ 目录。

  1. 发布到PyPI:
uv publish

注意:您需要通过环境变量或命令标志设置PyPI凭据。

调试

由于MCP服务器在stdio上运行,调试可能具有挑战性。为了达到最佳调试效果 经验,我们强烈建议使用 MCP检查员.

您可以通过以下方式启动MCP检查器 npm 使用此命令:

npx @modelcontextprotocol/inspector uv --directory /path/to/osm-mcp-server run osm-mcp-server

启动后,检查器将显示一个URL,您可以在浏览器中访问该URL以开始调试。