mcpField
O
osm-tagging-schema-mcp

osm-tagging-schema-mcp

本地服务
github.com/gander-tools地图与出行8今天更新

关于 osm-tagging-schema-mcp

面向 AI Agent 和 LLM 应用的 OpenStreetMap 标签模式 MCP 服务,从本地模式数据查询标签、预设和值,并执行校验和格式转换。该概念验证基于官方模式库确定性返回结果,不访问 OSM 网络服务,也不在服务端运行 AI。

主要功能

  1. 01校验标签键和值
  2. 02查询标签值与预设
  3. 03搜索标签和预设
  4. 04比较标签集合
  5. 05平面格式与 JSON 转换

适用场景

  1. 01检查常用 OSM 标签是否符合模式
  2. 02查询预设及其详细信息
  3. 03比较不同标签集合
  4. 04在平面标签与 JSON 间转换

MCP 相关

服务通过 MCP 工具向客户端提供标签校验、查询、搜索、比较和格式转换能力。支持 stdio 和 HTTP 传输,结果取自随 @openstreetmap/id-tagging-schema 提供的模式数据。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"gander-tools-osm-tagging-schema": {
"command": "npx",
"args": [
"-y",
"@gander-tools/osm-tagging-schema-mcp"
]
}
}
}
启动命令npx -y @gander-tools/osm-tagging-schema-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@gander-tools/osm-tagging-schema-mcp3.0.1

工具

9

收录的工具列表 · 更新于 2 周前

参数类型必填说明
tagsstring是OpenStreetMap 标签的扁平文本格式,每行包含一个 key=value 键值对。每行必须恰好包含一个格式为 "key=value" 的标签。支持注释行(以 # 开头,会被忽略)、空行(会被跳过)以及各种换行符(LF、CRLF、CR)。如果值中包含等号,则仅将第一个 = 作为分隔符。示例:"amenity=restaurant\nname=Test Cafe\ncuisine=italian\n# This is a comment\nopening_hours=Mo-Su 10:00-22:00"。所有键和值都会去除首尾空白。空值会导致错误。

详细介绍

OpenStreetMap 标记方案 MCP 服务

Test Fuzzing Release Docker

npm downloads GitHub Release

TypeScript MCP SDK OSM Schema

Code Quality NPM Provenance SLSA 3

License: GPL-3.0 Last Commit GitHub Issues GitHub PRs

这是什么?

这是一个专为 AI Agent 和大模型应用设计的 Model Context Protocol (MCP) 服务。它充当人工智能系统与官方 @openstreetmap/id-tagging-schema 库提供的全面 OpenStreetMap 标记知识库之间的桥梁。

项目状态

本项目是一个概念验证。它在某些方面具有实际价值,但在其他方面也存在已知不足,以下都会如实说明。

  • 它适用于最新的标记方案 @openstreetmap/id-tagging-schema v7。
  • 正在开发一个更好的替代工具。它将比最初计划的更晚推出,且不承诺具体日期。

问题报告和想法:请提交 issue 或发起 discussion。

工作原理

服务默认通过 stdio 运行,也可通过 HTTP 运行,并将标记方案作为 MCP 工具公开。每个工具都会读取 @openstreetmap/id-tagging-schema 中随包提供的方案数据(预设、字段、已弃用标记、翻译),并以确定性方式据此作答。服务不会连接 OSM,也不包含 AI:AI Agent 调用工具并解读结果。

验证会根据方案检查标记:键是否已知、值是否为匹配字段允许的值,以及键/值是否已弃用并有建议的替代项。

能做什么,不能做什么

该工具有一定局限。依赖它之前,请先了解预期:它只根据方案数据作答,现实中存在或 OSM wiki 上记录的标记,有一部分未涵盖。

工具能做什么局限
validate_tag接受常用标记(100%),几乎不会误报 deprecated(99.2%)只能检测约 20% 的 wiki 已弃用标记;拼写错误和外语值会被接受为有效值(允许自定义标记);railway=platform 和 railway=station 会被错误标记为已弃用
validate_tag_collection与 validate_tag 一致(100%)与 validate_tag 存在相同的遗漏;不会报告控制字符
suggest_improvements为 92% 的常用标记匹配到预设拼写错误和外语值通常会得到建议,而不是问题报告
get_tag_values包含 97% 的 taginfo 值;会拒绝无效键和超出限制的请求列表中缺少少数 taginfo 值
search_tags按名称找到 60% 的键尽管描述中提到模糊匹配,但不容忍拼写错误;带冒号的键(addr:street)常常无法找到;limit 为 0 或负数时不一定会被拒绝;access 会返回没有 key 的 keyMatches 项
search_presets为 69% 的常用标记找到预设(前 3 个结果中占 56%)多词查询(bicycle parking)可能没有结果;排序效果较弱;limit 为 0 或负数时不一定会被拒绝
get_preset_details93% 的常用标记有对应预设;始终会拒绝未知 ID一些常用标记(例如 historic=*、craft=grinding_mill、railway=stop)没有预设
compare_tags与本地计算结果一致(100%);文本和 JSON 输入会产生相同输出可比较任意标记集合,因此不会判定某个标记是否错误;只会拒绝格式错误的输入
flat_to_json无损转换,包括 ;、空格、=、Unicode、: 和 /会静默接受重复键和控制字符
json_to_flat无损往返转换(100%);会拒绝无效输入键不会按字母顺序排序,而是保留输入顺序

所有工具都不会因无效输入导致服务崩溃:错误信息易于理解,或结果为空列表。

摘要

适用于确定性逻辑足以胜任的场景:格式转换、比较标签集、读取预设和数值、验证常用标签。较弱的领域:检测已弃用标签和搜索(拼写错误、多个单词、带冒号的键)。

这不是什么

⚠️ 重要说明:

  • 不是独立应用:此服务需要与 AI 系统(如 Claude Code 或 Claude Desktop)集成才能发挥作用。它没有用户界面或 Web 前端。
  • 不供人类直接使用:如果没有 AI Agent 作为中介,此工具对终端用户毫无用处。它专为通过程序访问的 LLM 应用设计。

如果你在寻找面向用户的 OSM 标注工具,可以考虑使用 iD editor 或 JOSM。

安装

将服务添加到 Claude Code(stdio):

# npx
claude mcp add --transport stdio osm-tagging-schema -- npx -y @gander-tools/osm-tagging-schema-mcp

# Docker
claude mcp add --transport stdio osm-tagging-schema -- docker run -i --rm ghcr.io/gander-tools/osm-tagging-schema-mcp:latest

HTTP 传输

stdio 是默认传输方式。设置 TRANSPORT=http 即可通过 HTTP 提供服务(可流式传输,Docker 镜像中的端口为 3000):

变量默认值含义
TRANSPORTstdiostdio 或 http
PORT3000HTTP 端口
HOST0.0.0.0HTTP 绑定地址
CORS_ORIGINShttp://localhost:6274,https://mcp.ziziyi.com以逗号分隔的允许使用的 CORS 来源
LOG_LEVELINFOSILENT、ERROR、WARN、INFO、DEBUG
docker run --rm -p 3000:3000 -e TRANSPORT=http ghcr.io/gander-tools/osm-tagging-schema-mcp:latest

端点:GET /health(存活状态)、GET /ready(架构已加载)、GET /version。

许可证

GNU 通用公共许可证 v3.0 - 详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。