Osm Tagging Schema Mcp

io.github.gander-toolsPublished by GitHub account gander-toolsv3.0.1Updated Oct 24, 2026

MCP server for querying and validating OpenStreetMap tags

VerifiedSTDIODesktop onlyLocation & LifestyleDeveloper Tools

Overview

AI-generated overview

A local MCP server that lets an assistant query and validate OpenStreetMap tags against the official iD tagging schema, offline and deterministically.

What you can do
Validate single tags or tag collections against the schema, including deprecated key/value detection with suggested replacements and improvement suggestions for presets matched to tags. Look up allowed values for a key, search tags and presets by name, and read preset details by id. Compare two tag sets and convert between flat tag strings and JSON. All answers come from the bundled schema data, with no network access to OSM and no AI inside the server.
When to use it
Useful when an assistant needs deterministic OSM tagging help: checking whether popular tags are valid, converting tag formats, comparing tag sets, or reading presets and allowed values. The project calls itself a proof of concept, so avoid relying on it for deprecated-tag detection or fuzzy search.
Requirements
Runs as a local process via npx (Node.js) or Docker, stdio by default. Optional HTTP mode is enabled with TRANSPORT=http, with PORT, HOST, CORS_ORIGINS and LOG_LEVEL settings. No accounts, API keys or network access to OSM are needed.
Before you install
The README states it is a proof of concept with known gaps: it detects only about 20% of wiki-deprecated tags, accepts typos and foreign values as valid, and search misses colon keys and multi-word queries. It answers from schema data only, so tags not covered by the schema are not judged. It is meant for AI agents, not direct human use.

Installation

In SourceWeft

  1. Open Osm Tagging Schema Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

OpenStreetMap Tagging Schema MCP Server

[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]

What is this?

This is a Model Context Protocol (MCP) server designed specifically for AI agents and LLM applications. It acts as a bridge between artificial intelligence systems and the comprehensive OpenStreetMap tagging knowledge base provided by the official @openstreetmap/id-tagging-schema library.

Project status

This project is a Proof of Concept. It gives real value in some areas and has known gaps in others, both described honestly below.

  • It works with the latest tagging schema, @openstreetmap/id-tagging-schema v7.
  • A better replacement tool is being worked on. It will arrive later than originally planned, and no date is promised.

Bug reports and ideas: open an issue or start a discussion.

How it works

The server runs over stdio (default) or HTTP and exposes the tagging schema as MCP tools. Every tool reads the schema data shipped in @openstreetmap/id-tagging-schema (presets, fields, deprecated tags, translations) and answers from it deterministically. There is no network access to OSM and no AI inside the server: the AI agent calls the tools and interprets the results.

Validation checks a tag against the schema: known key, value allowed by the matching field, deprecated key/value with a suggested replacement.

What works and what doesn't

The tool has limitations. Know what to expect before relying on it: it answers from the schema data only, and a part of the tags that exist in the wild or on the OSM wiki is not covered.

ToolWorksLimitations
validate_tagPopular tags accepted (100%), almost no false deprecated alarms (99.2%)Detects only ~20% of wiki-deprecated tags; typos and foreign values are accepted as valid (custom tags are allowed); railway=platform and railway=station are wrongly flagged as deprecated
validate_tag_collectionConsistent with validate_tag (100%)Same gaps as validate_tag; control characters are not reported
suggest_improvementsPreset matched for 92% of popular tagsTypos and foreign values usually yield suggestions, not a problem report
get_tag_values97% of taginfo values present; bad keys and limits rejectedA few taginfo values are missing from the lists
search_tagsFinds 60% of keys by nameNo typo tolerance despite the fuzzy-matching description; keys with a colon (addr:street) are often missed; limit of 0 or negative not always rejected; access returns a keyMatches item without key
search_presetsPreset found for 69% of popular tags (56% in top 3)Multi-word queries (bicycle parking) can return nothing; weak ranking; limit of 0 or negative not always rejected
get_preset_detailsPreset exists for 93% of popular tags; unknown ids always rejectedSome popular tags (e.g. historic=*, craft=grinding_mill, railway=stop) have no preset
compare_tagsMatches local computation (100%); text and JSON input give identical outputCompares any tag sets, so it never says a tag is wrong; only malformed input is rejected
flat_to_jsonLossless, including ;, spaces, =, Unicode, : and /Duplicate keys and control characters are accepted silently
json_to_flatLossless round-trip (100%); bad input rejectedKeys are not sorted alphabetically, input order is kept

Across all tools, invalid input never crashed the server: errors are readable or the result is an empty list.

Summary

Useful where deterministic logic is enough: format conversion, comparing tag sets, reading presets and values, validating popular tags. Weakest areas: deprecated tag detection and search (typos, multiple words, colon keys).

What this is NOT

⚠️ Important clarifications:

  • Not a standalone application: This server requires integration with AI systems (like Claude Code or Claude Desktop) to be useful. It has no user interface or web frontend.
  • Not for direct human use: Without an AI agent as an intermediary, this tool provides no value to end users. It's designed exclusively for programmatic access by LLM applications.

If you're looking for a user-facing OSM tagging tool, consider iD editor or JOSM instead.

Installation

Add the server to Claude Code (stdio):

bash
# npxclaude mcp add --transport stdio osm-tagging-schema -- npx -y @gander-tools/osm-tagging-schema-mcp
# Dockerclaude mcp add --transport stdio osm-tagging-schema -- docker run -i --rm ghcr.io/gander-tools/osm-tagging-schema-mcp:latest

HTTP transport

stdio is the default. Set TRANSPORT=http to serve over HTTP (streamable, port 3000 in the Docker image):

VariableDefaultMeaning
TRANSPORTstdiostdio or http
PORT3000HTTP port
HOST0.0.0.0HTTP bind address
CORS_ORIGINShttp://localhost:6274,https://mcp.ziziyi.comComma-separated allowed CORS origins
LOG_LEVELINFOSILENT, ERROR, WARN, INFO, DEBUG
bash
docker run --rm -p 3000:3000 -e TRANSPORT=http ghcr.io/gander-tools/osm-tagging-schema-mcp:latest

Endpoints: GET /health (liveness), GET /ready (schema loaded), GET /version.

License

GNU General Public License v3.0 - See LICENSE file for details.

Source: README.md at commit bb2e493

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v3.0.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts