Open Streetmap Mcp

Open Streetmap Mcp

🚀 OpenStreetMap (OSM) MCP 服务器

OpenStreetMap MCP 服务器是一个增强大型语言模型(LLM)功能的实现方案,它将位置服务与地理空间数据相结合,为用户提供强大的地理信息处理能力。

🚀 快速开始

本地测试

运行服务器

  1. 安装依赖:
uv sync
  1. 启动服务器:
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 的原始地理数据。

📦 安装指南

开发模式

  1. 安装依赖:
uv sync
  1. 启动服务器:
uv run --port 8000

生产环境

  1. 构建发布包:
uv build
  1. 部署到生产环境,确保配置文件路径正确:
    • MacOS~/Library/Application Support/osm-mcp-server/
    • Windows%APPDATA%/osm-mcp-server/
    • Linux~/.config/osm-mcp-server/

💻 使用示例

基础用法

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())

🔍 演示

会合点优化

会合点优化

社区分析

社区分析

停车场搜索

停车场搜索

📚 详细文档

组件

资源

  1. 地理位置资源:提供地理位置的详细信息,包括经纬度、地址和相关标签。
  2. 搜索资源:支持基于关键词、类别或过滤条件的位置搜索。
  3. 路线规划资源:计算两点之间的路径,并返回详细的路径数据。

工具

  • 地理编码工具:用于将地址转换为经纬度。
  • 反向地理编码工具:根据经纬度获取地址信息。
  • 附近地点工具:查找指定范围内的兴趣点。
  • 路径规划工具:计算两点之间的最优路线。

使用场景

房地产决策

帮助用户分析目标区域的房地产价值,通过周边设施和交通便利性来评估房产价格。

EV 充电站查找

为电动汽车用户提供附近充电站的位置、可用性和实时状态信息。

开发和发布

准备发行

  1. 同步依赖:
uv sync
  1. 构建发行包:
uv build
  1. 发布到 PyPI:
uv publish

调试

使用 MCP 绝缘子工具进行调试:

npx @modelcontextprotocol/inspector uv --directory /path/to/osm-mcp-server run osm-mcp-server
  • 0 关注
  • 0 收藏,8 浏览
  • system 提出于 2025-09-20 22:15

相似服务问题