Skip to content

cyanheads/openstreetmap-mcp-server

v0.7.0Apache-2.0

Geocode, reverse geocode, and run Overpass spatial queries on OpenStreetMap data via MCP. STDIO or Streamable HTTP.

Changelog

All notable changes to this project. Each entry links to its full per-version file in changelog/.

0.7.0 — 2026-10-26

Boundary survey guidance served as MCP skill resources.

0.6.2 — 2026-10-25

OpenStreetMap names, line breaks, and nested raw values survive Markdown rendering.

0.6.1 — 2026-10-14

A busy Overpass dispatcher ends a call in one submission, the default is one query in flight, and every query declares 256 MiB and reads at most 64 MiB. Nearby distances measure to the nearest point, tag filters can match one item of a semicolon list, and over-cap limits are served up to the cap.

0.6.0 — 2026-10-03 · ⚠️ Breaking · 🛡️ Security

Overpass endpoints are named by origin alone, so an API key in an endpoint's path or query no longer reaches responses or logs; a mirror sized with |N adds capacity, and an unreachable host cools down across calls instead of costing each one a timeout.

0.5.2 — 2026-09-21

A deterministic Overpass/Nominatim 4xx is no longer re-submitted, and both services now run their pacing and call budget on mcp-ts-core's createPacer and withRetry deadlineMs.

0.5.1 — 2026-09-17

Condensed tool descriptions and server instructions

0.5.0 — 2026-09-16 · ⚠️ Breaking

Numeric Nominatim coordinates, within boundary scoping on query_bbox

0.4.8 — 2026-09-16

RequestCancelled, offset notices, lighter catalog, core 0.13.2

0.4.7 — 2026-09-10

Overpass endpoint faulting and countrycodes validation

0.4.6 — 2026-09-10

Tag filters and Docker run instructions

0.4.5 — 2026-09-09

openstreetmap_search_places gains viewbox/bounded locality scoping (#62) and a confirmed-exhaustion truncated probe (#15); all three Nominatim tools fail fast on HTTP 400 with a new invalid_parameters reason and schema-level layer/exclude_place_ids validation (#59); enrichment trailers render human labels instead of raw keys (#63).

0.4.4 — 2026-09-09 · 🛡️ Security

openstreetmap_query_raw bounds per-element response size with max_element_bytes (#60); all six tools now escape community-edited OSM text for literal Markdown display in content[] (#61); adopts mcp-ts-core 0.12.8 and vitest 5.

0.4.3 — 2026-09-02 · 🛡️ Security

overpass_unavailable now throws ServiceUnavailable for every non-504 5xx (previously 500/501 surfaced as InternalError); adopts mcp-ts-core 0.12.5, including the SSRF DNS guard fix closing a Bun-1.4-on-Linux bypass.

0.4.2 — 2026-08-25

Adopts mcp-ts-core 0.12.3 and MCP SDK v2: tool arguments are now strict, advertised schemas move to JSON Schema 2020-12 and declare the error envelope, and HTTP serves protocol revision 2026-07-28 with cache hints on the list operations.

0.4.1 — 2026-08-09

Nominatim tools disclose that tags decorate rather than select (#52), search_places advertises its query/address requirement (#57) and names its actual paging remedy on truncation (#55), and design.md's Zod snippets are resynced (#58)

0.4.0 — 2026-08-10 · ⚠️ Breaking

Non-JSON Nominatim bodies fail fast, element_types requires at least one entry, and search_places splits invalid_input into two reasons

0.3.6 — 2026-08-02

openstreetmap_query_nearby and openstreetmap_query_bbox advertise the amenity / tag_key+tag_value requirement as anyOf in their published inputSchema (#47)

0.3.5 — 2026-08-02

Overpass endpoint failover advances past a throttled or faulted host instead of ending the call, query_raw gains limit/offset paging, and client deadlines derive from the query's own timeout (#49, #50, #51)

0.3.4 — 2026-07-29

Opt-in Overpass endpoint failover via OSM_OVERPASS_ENDPOINTS, a servingEndpoint enrichment field, and a 120s total-call time budget bounding retries (#37)

0.3.3 — 2026-07-29

Overpass 5xx causes now reach query_bbox and query_nearby, data_timestamp is omitted rather than fabricated when absent, and two field descriptions are corrected (#39, #40, #43, #46)

0.3.2 — 2026-07-29

Overpass 5xx failures had no error contract entry and malformed-query parse errors were truncated before reaching the caller (#38, #45)

0.3.1 — 2026-07-29

Overpass HTML throttle pages and OOM remarks were misclassified, retried, or dropped as silent successes; concurrent submissions are now capped client-side (#41, #42, #44)

0.3.0 — 2026-07-26 · ⚠️ Breaking

Nominatim tools renamed to explicit three-token names and osm_ids is array-only (#30, #29); openstreetmap_query_raw surfaces the Overpass parse error from HTTP 400 bodies (#33)

0.2.15 — 2026-07-26

openstreetmap_query_nearby/bbox and openstreetmap_geocode distinguish an exhausted page from a real empty result (#27, #35); geocode content[] importance no longer loses precision (#28); tag_key/tag_value are trimmed before Overpass interpolation (#36)

0.2.14 — 2026-07-26

Nominatim throttle now reserves request slots synchronously so concurrent callers can't bypass the 1 req/s limit (#26); featureType search filter fixed (#31); geocode/reverse/lookup gain rate_limited and upstream_error error contracts (#32); OSM_NOMINATIM_BASE_URL path prefix preserved for subpath-hosted mirrors (#34)

0.2.13 — 2026-07-09

openstreetmap_query_raw content[] now renders every raw element field for full structuredContent parity (#20); openstreetmap_geocode nextExcludeIds emits stable OSM refs instead of volatile place_ids (#25)

0.2.12 — 2026-07-06

openstreetmap_query_bbox/query_nearby gain offset paging with nextOffset (#24); openstreetmap_geocode gains exclude_place_ids/nextExcludeIds (#24); openstreetmap_query_bbox rejects inverted bounding boxes with invalid_bbox (#22)

0.2.11 — 2026-07-06

openstreetmap_query_raw content output includes coordinates and all elements (#20); Nominatim content output includes country_code/ISO3166-2-lvl4 (#21); mcp-ts-core ^0.10.14

0.2.10 — 2026-07-05

openstreetmap_query_nearby/query_bbox reject Overpass QL metacharacters in tag inputs instead of interpolating them; query_raw's missing-[out:json] error now carries its recovery hint

0.2.9 — 2026-07-05

Nominatim language param fix (accept-language), geocode truncation guard, free-form query guidance for parent-institution tokens, mcp-ts-core ^0.10.11

0.2.8 — 2026-06-20

@cyanheads/mcp-ts-core ^0.10.6 → ^0.10.9: dependency-specifier and plugin-manifest devcheck guards, fresh-scaffold/worktree script guards, framework skill re-sync

0.2.7 — 2026-06-15

Build tooling: run release:github under bun, drop the unused tsx devDependency

0.2.6 — 2026-06-12

@cyanheads/mcp-ts-core ^0.9.21 → ^0.10.6: geocode truncation disclosure, explicit server identity, MCPB bundle cleaner, Docker healthcheck

0.2.5 — 2026-06-02

@cyanheads/mcp-ts-core ^0.9.16 → ^0.9.21: per-request log context fix, secret scrubbing from error messages, withRetry fail-fast on non-retryable errors

0.2.4 — 2026-05-30

Overpass fail-fast on deterministic failures, recovery hints populated, HTTP 400 as ValidationError, geocode effectiveQuery enrichment

0.2.3 — 2026-05-30

enrichment adoption: geocode/query tools surface tag echoes, true totals, truncation, and empty-result guidance via structuredContent and content[]

0.2.2 — 2026-05-28

mcp-ts-core ^0.9.13: 413 body cap, HTTP session-init gate, quieter error logs, GET /mcp keywords

0.2.1 — 2026-05-28

query_nearby results now sorted nearest-first with distance_meters; extratags scope clarified for Overpass tools

0.2.0 — 2026-05-24 · ⚠️ Breaking

Breaking rename: repo/package nominatim → openstreetmap; tool prefixes nominatim_/overpass_ → openstreetmap_; env vars NOMINATIM_/OVERPASS_* → OSM_*

0.1.8 — 2026-05-24

Code simplification: shared format/tag helpers, flatMap, Set; error codes ValidationError; mcp-ts-core ^0.9.7 → ^0.9.9

0.1.7 — 2026-05-24

Fix HTTP 406 on all Overpass tools: add missing User-Agent header; read version dynamically from package.json

0.1.6 — 2026-05-23

Adds hosted server endpoint metadata: remotes block in server.json and public URL in README

0.1.5 — 2026-05-23

Dockerfile build stage restored to oven/bun:1.3; package.json scripts migrated from tsx to bun run; manifest.json description and metadata fields aligned; server.json runtimeHint corrected to bun

0.1.4 — 2026-05-23

Sync tagline across README, package.json, server.json, manifest.json, and GitHub repo description

0.1.3 — 2026-05-23

Validate [out:json] in overpass_query_raw before sending query; sync package metadata to gold standard

0.1.2 — 2026-05-23

Fix ctx.state cache keys in NominatimService and OverpassService — SHA-256 hash replaces raw JSON/QL embedding, resolving all 6 tools being broken

0.1.1 — 2026-05-23

OpenStreetMap geocoding, reverse geocoding, and Overpass spatial queries via 6 tool definitions

0.1.0 — 2026-05-23

Initial scaffold from @cyanheads/mcp-ts-core