OpenStreetMap(OSM)MCP服务器
OpenStreetMap MCP服务器实现,通过基于位置的服务和地理空间数据增强LLM功能。
演示
汇点优化
邻域分析
停车场搜索
安装
在MCP主机中,如Claude Desktop、Cursor、Windsurf等。
osm-mcp-server:主服务器,可供公众使用。
JSON``` 1 2 3 4 5 6 7 8”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. 在开发模式下安装软件包:
BASH```
1pip install -e .
- 启动服务器:
BASH``` 1osm-mcp-server
1. 服务器将启动并监听标准输入/输出上的MCP请求。
### 使用示例客户端进行测试
存储库中包括两个示例客户端 `examples/` 目录:
#### 基本客户端示例
`client.py` 演示了OSM MCP服务器的基本用法:
BASH```
1python examples/client.py
这将:
- 连接到本地运行的服务器
- 获取有关旧金山的信息
- 搜索该地区的餐馆
- 通过进度跟踪检索综合地图数据
LLM集成示例
llm_client.py 提供了一个为LLM集成设计的辅助类:
BASH``` 1python examples/llm_client.py
此示例显示了LLM如何使用位置助手:
- 从文本查询中获取位置信息
- 查找附近的景点
- 获取位置之间的路线
- 寻找最佳会面地点
- 探索社区
### 写自己的客户
要创建自己的客户端,请执行以下操作:
1. 导入MCP客户端:
PYTHON```
1from mcp.client import Client
- 使用服务器URL初始化客户端:
PYTHON``` 1client = Client(“http://localhost:8000”)
1. 调用工具或访问资源:
PYTHON```
1
2# 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 JSON``` 1 2 3 4 5 6 7 8 9 10 11”mcpServers”: { “osm-mcp-server”: { “command”: “uv”, “args”: [ “—directory”, “/path/to/osm-mcp-server”, “run”, “osm-mcp-server” ] } }
## 发展
### 建筑与出版
准备分发包裹:
1. 同步依赖关系并更新锁文件:
BASH```
1uv sync
- 构建包分发:
BASH``` 1uv build
这将在 `dist/` 目录。
1. 发布到PyPI:
BASH```
1uv publish
注意:您需要通过环境变量或命令标志设置PyPI凭据。
调试
由于MCP服务器在stdio上运行,调试可能具有挑战性。为了达到最佳调试效果 经验,我们强烈建议使用 MCP检查员.
您可以通过以下方式启动MCP检查器 npm 使用此命令:
BASH``` 1npx @modelcontextprotocol/inspector uv —directory /path/to/osm-mcp-server run osm-mcp-server
启动后,检查器将显示一个URL,您可以在浏览器中访问该URL以开始调试。