# io.github.gander-tools/osm-tagging-schema-mcp (npm · @gander-tools/osm-tagging-schema-mcp)

MCP server for querying and validating OpenStreetMap tags

- Trust score: 73/100 (medium)
- Change this week: +23
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

- npm · `@gander-tools/osm-tagging-schema-mcp`: 73/100 (this document), [markdown](https://verifymcp.io/servers/gander-tools-osm-tagging-schema-mcp/gander-tools-osm-tagging-schema-mcp.md), [page](https://verifymcp.io/servers/gander-tools-osm-tagging-schema-mcp/gander-tools-osm-tagging-schema-mcp)

## Channel facts

- Registry: `npm`
- Package: `@gander-tools/osm-tagging-schema-mcp`
- Version: `3.0.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Supply Chain Security**: 70/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known high-severity CVE affects @modelcontextprotocol/sdk 1.23.1, a direct dependency. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (90 of 94), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to gander-tools/osm-tagging-schema-mcp).
  - Clear OSI-approved license (GPL-3.0).
  - Actively maintained (last published 85 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 74/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2594 tokens (~288/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add gander-tools-osm-tagging-schema-mcp -- npx -y @gander-tools/osm-tagging-schema-mcp
```

### Codex

```bash
codex mcp add gander-tools-osm-tagging-schema-mcp -- npx -y @gander-tools/osm-tagging-schema-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gander-tools-osm-tagging-schema-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@gander-tools/osm-tagging-schema-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add gander-tools-osm-tagging-schema-mcp --command npx --arg -y --arg @gander-tools/osm-tagging-schema-mcp
```

### Hermes

```yaml
mcp_servers:
  gander-tools-osm-tagging-schema-mcp:
    command: "npx"
    args: ["-y", "@gander-tools/osm-tagging-schema-mcp"]
```

### Other

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

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-04 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 72, +33)

- [security regression] CVE-2026-25536 affects this package: high
- [security regression] CVE-2025-66414 affects this package: high
- [security regression] CVE-2026-0621 affects this package: high
- [security regression] Known CVEs: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security] The attested source repository moved: gander-tools/osm-tagging-schema-mcp
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional] Licence: GPL-3.0

### 2026-08-01 (score 39, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-07-31 (score 24, +16)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 8, −42)

- [security regression] Malware scan: pass → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: unverified → partial

### 2026-07-27 (score 50)

First indexed and scored.

## MCP tools (9)

### `flat_to_json` (~301 tokens)

\**INPUT CONVERTER**: Convert OpenStreetMap tags from human-friendly flat text format (one key=value pair per line) into JSON object format required by other MCP tools. This is a preprocessing tool - use it FIRST when users provide tags as text before passing the result to validation, search, or analysis tools. All other tools in this MCP server expect JSON input, so this converter is essential for text-based workflows. The parser is robust and flexible: it handles multiple line ending formats (LF/CRLF/CR), supports comments (lines starting with #), ignores empty lines, trims whitespace, and correctly handles equals signs within values. Returns a validated JSON object with all tags, or an error if any tag is malformed or has an empty value.

Input parameters:

- `tags` (string, required): OpenStreetMap tags in flat text format with one key=value pair per line. Each line should contain exactly one tag in the format "key=value". Supports comment lines (starting with #) which are ignored…

### `get_preset_details` (~314 tokens)

Retrieve comprehensive details for a specific OpenStreetMap preset, including all tags, geometry constraints, and field definitions. A preset represents a complete feature template with its standard tags, allowed geometry types, required fields, and optional fields. Returns the preset's localized name, complete tag set with human-readable names, geometry types (point/line/area/etc.), and expanded field lists. Field lists are automatically expanded from template references (like {@templates/contact} becomes email, phone, website, fax) and preset inheritance (like {building} expands to include all building fields). Use this to understand the complete structure of a feature type, learn what tags and fields are expected for a feature, or build forms/UIs for OSM data entry. Accepts three flexible input formats for maximum convenience.

Input parameters:

- `presetId` (required): Identifier for the preset to retrieve, in one of three formats: 1) Preset ID using slash notation (e.g., 'amenity/restaurant', 'highway/residential', 'natural/tree') - this is the direct preset ident…

### `get_tag_values` (~235 tokens)

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.

Input parameters:

- `tagKey` (string, required): The OpenStreetMap tag key to retrieve values for (e.g., 'amenity', 'building', 'highway', 'natural', 'shop'). Supports both simple keys and namespaced keys with colons (e.g., 'addr:street', 'name:en'…

### `json_to_flat` (~294 tokens)

\**OUTPUT CONVERTER**: Convert OpenStreetMap tags from JSON object format into human-friendly flat text format (one key=value pair per line). This is a postprocessing tool - use it LAST when users want tags displayed as readable text rather than JSON. Since all other tools in this MCP server return JSON format, this converter is essential for creating user-friendly output, generating text files for external tools, or producing easily readable tag lists. The converter validates the input thoroughly: ensures all values are strings (not numbers or other types), rejects empty values, trims whitespace from keys and values, and produces clean one-tag-per-line output with newline separators. Returns plain text with each tag on a separate line, or an error if validation fails.

Input parameters:

- `tags` (required): OpenStreetMap tags in JSON format, provided as either: 1) A JSON string that will be parsed (e.g., '{"amenity":"restaurant","name":"Test Cafe","cuisine":"italian"}') - must be valid JSON with string…

### `search_presets` (~439 tokens)

Search for OpenStreetMap presets by keyword or tag combination. OSM presets are predefined feature templates that define common feature types (like 'restaurant', 'park', 'road') with their standard tags, geometry constraints, and recommended fields. This tool searches through preset IDs and their associated tags to find matching features. Supports two search modes: keyword search (searches in preset IDs and all tag keys/values) and tag-based search (exact matching on specific tag key-value pairs using 'key=value' format). Returns comprehensive preset information including localized names, complete tag sets with human-readable names, and allowed geometry types. Use this to discover what feature types exist, find the correct preset for a feature you want to map, or explore related feature categories. Optionally filter results by geometry type or limit result count for performance.

Input parameters:

- `geometry` (string): Filter results to only presets that support a specific geometry type (optional). Valid values: 'point' (nodes/POIs), 'vertex' (nodes along ways), 'line' (open ways like roads/rivers), 'area' (closed…
- `keyword` (string, required): Search term for finding presets (case-insensitive). Two formats supported: 1) Simple keyword (e.g., 'restaurant', 'parking', 'school') - searches within preset IDs and all tag keys/values, matching p…
- `limit` (number): Maximum number of preset results to return (optional, no default limit). Use this to get faster responses when you only need a few results, or to avoid overwhelming output when searching broad terms.…

### `search_tags` (~227 tokens)

Search for OpenStreetMap tags by keyword in both tag keys and tag values. Returns two categories of results: keyMatches (when the keyword matches a tag key, returns that key with all possible values) and valueMatches (when the keyword matches a specific tag value, returns the key-value pair). Searches are case-insensitive and match partial strings. Use this to explore available tags or find tags related to a concept.

Input parameters:

- `keyword` (string, required): Single keyword to search for in tag keys and values (case-insensitive). Should be a standalone word or partial word, not a tag pair. Examples: 'restaurant' (finds amenity=restaurant), 'wheel' (finds…
- `limit` (number): Maximum total number of results to return across both keyMatches and valueMatches combined (default: 100). Use lower values for faster responses when you only need a few results.

### `suggest_improvements` (~269 tokens)

Analyze an OpenStreetMap tag collection and suggest improvements to make it more complete and informative. This tool identifies which OSM presets match your tags, then suggests missing fields that would enhance the feature's documentation. Returns structured suggestions categorized by operation type (add, remove, update) with human-readable explanations. Suggestions include both required fields (core attributes for the matched preset) and optional fields (additional details that would be helpful). Each suggestion includes localized field names and explains why the field would improve the data. Use this for improving incomplete OSM data, learning what additional tags are recommended for a feature type, or ensuring comprehensive tagging before data upload. Accepts input in three flexible formats: JSON object, JSON string, or flat text format (key=value per line).

Input parameters:

- `tags` (required): Collection of existing OpenStreetMap tags to analyze in one of three formats: 1) JSON object (e.g., {"amenity": "restaurant", "name": "Test Cafe"}), 2) JSON string (e.g., '{"amenity":"parking"}'), or…

### `validate_tag` (~246 tokens)

Validate a single OpenStreetMap tag key-value pair against the OSM tagging schema. Performs comprehensive validation including: deprecation checking (identifies deprecated tags and suggests modern replacements), schema existence validation (verifies the tag key exists in the schema), option validation (checks if the value is in predefined options for that key), and field type checking (distinguishes between strict fields and combo fields that allow custom values). Returns detailed validation results with localized names and actionable messages. Use this for educational purposes, data quality checks, or validating individual tags before bulk operations.

Input parameters:

- `key` (string, required): The OpenStreetMap tag key to validate (e.g., 'amenity', 'building', 'highway', 'natural'). Tag keys should use the standard OSM format with colons for namespaces (e.g., 'addr:street', 'name:en'). Cas…
- `value` (string, required): The OpenStreetMap tag value to validate against the specified key (e.g., 'restaurant', 'yes', 'residential', 'park'). Values are checked against predefined options if the field has them. Case-sensiti…

### `validate_tag_collection` (~269 tokens)

Validate a complete collection of OpenStreetMap tags together, performing comprehensive validation on each tag and providing aggregated statistics. This tool validates each tag individually (using the same validation logic as validate_tag) and then aggregates the results to give you an overall picture of the collection's quality. Returns detailed validation results for each tag (including deprecation warnings, schema validation, and option checking) plus summary statistics (total valid count, deprecated count, error count). Use this for bulk validation of OSM data exports, quality assurance of tag collections before upload, or analyzing the completeness of feature tagging. Accepts input in three flexible formats: JSON object, JSON string, or flat text format (key=value per line).

Input parameters:

- `tags` (required): Collection of OpenStreetMap tags in one of three formats: 1) JSON object (e.g., {"amenity": "restaurant", "name": "Test Cafe", "cuisine": "italian"}), 2) JSON string (e.g., '{"amenity":"parking"}'),…

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/gander-tools-osm-tagging-schema-mcp/gander-tools-osm-tagging-schema-mcp#diagnostics

## Score history

- 2026-08-04: 73
- 2026-08-03: 72
- 2026-08-02: 72
- 2026-08-01: 39
- 2026-07-31: 24
- 2026-07-30: 8
- 2026-07-28: 50
- 2026-07-27: 50

## Links

- npm package: https://www.npmjs.com/package/@gander-tools/osm-tagging-schema-mcp
- Socket report: https://socket.dev/npm/package/@gander-tools/osm-tagging-schema-mcp
- Repository: https://github.com/gander-tools/osm-tagging-schema-mcp
- Changelog RSS feed: https://verifymcp.io/servers/gander-tools-osm-tagging-schema-mcp/gander-tools-osm-tagging-schema-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/gander-tools-osm-tagging-schema-mcp/gander-tools-osm-tagging-schema-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/gander-tools-osm-tagging-schema-mcp/gander-tools-osm-tagging-schema-mcp
