OpenStreetMap Tagging Schema

OpenStreetMap Tagging Schema

gander-tools

Validates and queries OpenStreetMap tagging schemas to ensure your OSM data follows proper tagging conventions. Helps discover correct tag combinations and identifies tagging errors or improvements.

Query and validate OpenStreetMap tags with preset discovery and validation tools

6176 views2Remote

What it does

  • Validate OSM tag collections against official schema
  • Search for proper tag presets by feature type
  • Compare tag sets to identify differences
  • Suggest improvements for existing tag combinations
  • Convert between JSON and flat tag formats
  • Retrieve valid values for specific tag keys

Best for

OSM data contributors ensuring correct taggingGIS developers working with OpenStreetMap dataMap editing applications needing tag validationData quality assurance for OSM imports
Uses official OSM tagging schema10 specialized validation toolsNo API key needed

About OpenStreetMap Tagging Schema

OpenStreetMap Tagging Schema is a community-built MCP server published by gander-tools that provides AI assistants with tools and capabilities via the Model Context Protocol. Validate and discover OpenStreetMap tags quickly with preset discovery and validation tools for accurate mapping metadat It is categorized under developer tools. This server exposes 10 tools that AI clients can invoke during conversations and coding sessions.

How to install

You can install OpenStreetMap Tagging Schema in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server supports remote connections over HTTP, so no local installation is required.

License

OpenStreetMap Tagging Schema is released under the GPL-3.0 license.

Tools (10)

compare_tags

Compare two sets of OpenStreetMap tags to identify differences, additions, deletions, and modifications. Performs detailed tag-level comparison showing which tags were added, removed, or changed between two versions. Provides human-readable names for all tags and values using the OSM tagging schema. Use this for reviewing tag changes, understanding feature modifications, analyzing tag history, or validating tag transformations. Returns structured diff with localized names for better readability.

flat_to_json

Convert OpenStreetMap tags from flat text format (key=value per line) to JSON object format. This is an INPUT CONVERTER for AI workflows - use it FIRST when you receive tags in flat text format and need to work with them as a JSON object. Handles various text formats including key=value pairs (one per line), whitespace variations, empty lines, and comments (lines starting with #). Returns a clean JSON object with all parsed tags. Essential for processing OSM data from text exports, iD editor output, or JOSM exports.

get_preset_details

Get complete detailed information about a specific OpenStreetMap preset. Presets are feature templates that define standard tagging patterns (e.g., the 'Restaurant' preset defines amenity=restaurant and lists fields like cuisine, outdoor_seating, etc.). Returns comprehensive preset information including: display name, all required and suggested tags, supported geometry types, complete list of fields (with template expansion), field types and options, and parent/child preset relationships. Use this to understand exactly how to tag a specific feature type, learn what fields are available for a preset, or get example values for proper tagging.

get_tag_values

Retrieve all possible values for a specific OpenStreetMap tag key, with localized human-readable names for both the key and each value. This tool searches through the OSM tagging schema (both predefined field options and preset definitions) to find every documented value that can be used with the specified key. Returns four pieces of information: the normalized key name, localized key display name, a simple array of all values, and a detailed array with localized names for each value. Use this to discover what values are available for a tag (e.g., all amenity types), learn the proper terminology for values, or build UI selection lists. Essential for understanding OSM's controlled vocabularies.

json_to_flat

Convert OpenStreetMap tags from JSON object format to flat text format (key=value per line). This is an OUTPUT CONVERTER for AI workflows - use it LAST when you need to present tags in a human-readable text format or export them for use in other tools. Produces clean, consistent key=value format with one tag per line, sorted alphabetically by key. Use this for generating human-readable tag lists, exporting to OSM editors, or sharing tag collections. The output format is compatible with JOSM, iD editor imports, and other OSM tools that accept flat text tag format.

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

MCP Badge

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.

Current Status: Production-ready MCP server, actively maintained and continuously improved. The service is deployed and accessible at https://mcp.gander.tools/osm-tagging/.

We welcome your feedback! Have ideas for improvements? Found a bug? Want to discuss features? Please open an issue or start a discussion.

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.
  • Not a public API for general use: The deployed service at mcp.gander.tools is intended for integration with AI agents, not for direct HTTP requests or high-volume automated queries. Please do not attempt to abuse the service with DDoS attacks or excessive traffic.

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

Features

7 MCP Tools organized into 3 categories:

  • Tag Query (2 tools): Query tag values and search tags
  • Preset Discovery (2 tools): Search and explore OSM presets with detailed configurations
  • Validation (3 tools): Validate tags, check for deprecated tags, suggest improvements

📖 Full tool reference: docs/api/

Installation

Using npx (Recommended)

# No installation needed - run directly
npx @gander-tools/osm-tagging-schema-mcp

Using Docker

# Run with stdio transport
docker run -i ghcr.io/gander-tools/osm-tagging-schema-mcp:latest

📖 More options: docs/user/installation.md (source installation, verification, troubleshooting)

Quick Start

With Claude Code CLI

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

# Use in conversations
# Ask Claude: "What OSM tags are available for restaurants?"
# Ask Claude: "Validate these tags: amenity=parking, capacity=50"

With Claude Desktop

Add to your Claude Desktop configuration:

{
  "mcpServers": {
    "osm-tagging-schema": {
      "command": "npx",
      "args": ["@gander-tools/osm-tagging-schema-mcp"]
    }
  }
}

📖 Next steps:

Testing with MCP Inspector

Test and debug the server using the official MCP Inspector:

# Test published package (quickest)
npx @modelcontextprotocol/inspector npx @gander-tools/osm-tagging-schema-mcp

# Test Docker image
npx @modelcontextprotocol/inspector docker run --rm -i ghcr.io/gander-tools/osm-tagging-schema-mcp

The Inspector provides an interactive web UI to test all tools, inspect responses, and debug issues.

📖 Complete inspection guide: docs/development/inspection.md (includes HTTP transport testing)

Development

Built with Test-Driven Development (TDD) and Property-Based Fuzzing:

  • Comprehensive test suite (unit + integration) with 100% pass rate
  • Property-based fuzz tests with fast-check for edge case discovery
  • Continuous fuzzing in CI/CD (weekly schedule + on every push/PR)
npm install      # Install dependencies
npm test         # Run all tests
npm run test:fuzz # Run fuzz tests
npm run build    # Build for production

📖 Development guides: docs/development/development.md | docs/development/fuzzing.md

Contributing

Contributions welcome! This project follows Test-Driven Development (TDD).

  1. Fork and clone the repository
  2. Install dependencies: npm install
  3. Create a feature branch
  4. Write tests first, then implement
  5. Ensure all tests pass: npm test
  6. Submit a pull request

📖 Guidelines: docs/development/contributing.md

Documentation

Quick Navigation

Choose your path:

I want to...Go to
Install and run the serverInstallation Guide
Configure with Claude Code/DesktopConfiguration Guide
Learn how to use the toolsUsage GuideAPI Reference
Test and debug the serverInspection Guide
Deploy in production (HTTP/Docker)Deployment Guide
Fix issues or errorsTroubleshooting Guide
Contribute to the projectContributing Guide

Complete Documentation

User Guides:

Developer Docs:


README truncated. View full README on GitHub.

Alternatives

Related Skills

Browse all skills