关于 streetmap-port
streetmap-port 是用于查询 OpenStreetMap 地理信息的命令行工具及 stdio MCP 服务。它支持地理编码、地点查找、对象详情查询和本地大圆距离计算。
主要功能
- 01正向与反向地理编码
- 02按名称搜索地点
- 03按类别查找附近地点
- 04查询 OSM 对象详情
- 05本地计算大圆距离
适用场景
- 01将地点名称转换为坐标
- 02查找某坐标附近的地点
- 03根据坐标查询地址
- 04计算两个地点间的距离
MCP 相关
向 MCP 客户端提供地理编码、地点搜索、附近地点搜索、OSM 对象查询和距离计算等六种工具。地理编码与对象查询使用 Nominatim,附近搜索使用 Overpass。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | number | 否 | 可选:返回的地理编码结果数量上限;默认为 5,并限制在 1-50 之间。 |
| query | string | 是 | 要转换为坐标的自由格式地址或地点名称。 |
详细介绍
streetmap-port
将 OpenStreetMap 地理信息集成到 CLI 和 stdio MCP 服务中的单一 二进制文件:将名称地理编码为坐标、将坐标反向地理编码为地址、搜索地点、按类型和 ID 查询 OSM 对象、查找某个点附近特定类别的地点,以及在本地计算大圆距离。
地理编码、反向地理编码和查询使用公共 Nominatim API(并采用其使用政策要求的描述性 User-Agent);附近搜索使用公共 Overpass API。所有请求都通过可注入的 fetch 函数发出,坐标在构建任何请求之前都会经过验证,API 错误响应会作为错误返回——绝不会替换成虚构的地点。distance_between 是纯本地的 haversine 计算,不会发起 API 调用。
安装
npx -y @reneturcios/streetmap-port mcp
CLI
streetmap-port mcp
streetmap-port geocode <query...>
streetmap-port reverse <lat> <lon>
streetmap-port search <query...>
streetmap-port nearby <lat> <lon> [category] [radius-m]
streetmap-port distance <lat1> <lon1> <lat2> <lon2>
streetmap-port --version
退出代码:0 表示成功,1 表示 API/验证错误,2 表示用法错误。
MCP 工具
| 工具 | 用途 |
|---|---|
geocode_address | 通过 OSM Nominatim API 将自由格式的地址或地点名称地理编码为坐标 |
reverse_geocode | 通过 OSM Nominatim API 将坐标反向地理编码为最近的地址 |
search_places | 通过 OSM Nominatim API 按名称搜索地点 |
find_nearby | 通过 OSM Overpass API 查找坐标附近特定类别的地点 |
get_place_details | 通过 Nominatim 查询 API 获取一个 OSM 对象(节点、路径或关系)的详细信息 |
distance_between | 计算两组坐标之间的大圆距离(以公里为单位)(本地计算,不调用 API) |
MCP 客户端配置:
{
"mcpServers": {
"streetmap-port": {
"command": "npx",
"args": ["-y", "@reneturcios/streetmap-port", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/streetmap-port # MCP server
docker run --rm ghcr.io/cloudcorprecords/streetmap-port --version
开发
npm install
npm run build
npm test
数据 © OpenStreetMap 贡献者(ODbL)。代码采用 MIT 许可证。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。