article
README
🚀 OpenStreetMap (OSM) MCP 服务器
OpenStreetMap MCP 服务器是一个增强大型语言模型(LLM)功能的实现方案,它将位置服务与地理空间数据相结合,为用户提供强大的地理信息处理能力。
🚀 快速开始
本地测试
运行服务器
- 安装依赖:
uv sync
- 启动服务器:
uv run --port 8000
测试客户端
import asyncio
from mcp.client import Client
async def main():
client = Client("http://localhost:8000")
# 地理编码测试
results = await client.invoke_tool("geocode_address", {"address": "Empire State Building"})
print(f"找到位置:{results[0]['display_name']}")
# 获取坐标
lat = float(results[0]['lat'])
lon = float(results[0]['lon'])
# 查找附近咖啡馆
nearby = await client.invoke_tool(
"find_nearby_places",
{
"latitude": lat,
"longitude": lon,
"radius": 500,
"categories": ["amenity"],
"limit": 5
}
)
# 打印结果
print(f"找到 {nearby['total_count']} 个附近地点")
for category, subcategories in nearby["categories"].items():
for subcategory, places in subcategories.items():
print(f" - {subcategory}: {len(places)} 个地点")
if __name__ == "__main__":
asyncio.run(main())
✨ 主要特性
- 地理编码:将地址转换为经纬度。
- 反向地理编码:根据经纬度获取地址信息。
- 附近地点搜索:查找指定范围内的兴趣点。
- 路径规划:计算两点之间的最优路线。
- 地图数据访问:访问 OpenStreetMap 的原始地理数据。
📦 安装指南
开发模式
- 安装依赖:
uv sync
- 启动服务器:
uv run --port 8000
生产环境
- 构建发布包:
uv build
- 部署到生产环境,确保配置文件路径正确:
- MacOS:
~/Library/Application Support/osm-mcp-server/ - Windows:
%APPDATA%/osm-mcp-server/ - Linux:
~/.config/osm-mcp-server/
- MacOS:
💻 使用示例
基础用法
import asyncio
from mcp.client import Client
async def main():
client = Client("http://localhost:8000")
# 地理编码测试
results = await client.invoke_tool("geocode_address", {"address": "Empire State Building"})
print(f"找到位置:{results[0]['display_name']}")
# 获取坐标
lat = float(results[0]['lat'])
lon = float(results[0]['lon'])
# 查找附近咖啡馆
nearby = await client.invoke_tool(
"find_nearby_places",
{
"latitude": lat,
"longitude": lon,
"radius": 500,
"categories": ["amenity"],
"limit": 5
}
)
# 打印结果
print(f"找到 {nearby['total_count']} 个附近地点")
for category, subcategories in nearby["categories"].items():
for subcategory, places in subcategories.items():
print(f" - {subcategory}: {len(places)} 个地点")
if __name__ == "__main__":
asyncio.run(main())
🔍 演示
会合点优化
社区分析
停车场搜索
📚 详细文档
组件
资源
- 地理位置资源:提供地理位置的详细信息,包括经纬度、地址和相关标签。
- 搜索资源:支持基于关键词、类别或过滤条件的位置搜索。
- 路线规划资源:计算两点之间的路径,并返回详细的路径数据。
工具
- 地理编码工具:用于将地址转换为经纬度。
- 反向地理编码工具:根据经纬度获取地址信息。
- 附近地点工具:查找指定范围内的兴趣点。
- 路径规划工具:计算两点之间的最优路线。
使用场景
房地产决策
帮助用户分析目标区域的房地产价值,通过周边设施和交通便利性来评估房产价格。
EV 充电站查找
为电动汽车用户提供附近充电站的位置、可用性和实时状态信息。
开发和发布
准备发行
- 同步依赖:
uv sync
- 构建发行包:
uv build
- 发布到 PyPI:
uv publish
调试
使用 MCP 绝缘子工具进行调试:
npx @modelcontextprotocol/inspector uv --directory /path/to/osm-mcp-server run osm-mcp-server
Scan to join WeChat group