Skip to content

Releases: cyanheads/openstreetmap-mcp-server

v0.3.6: Advertise the amenity / tag_key+tag_value requirement in the schema

Choose a tag to compare

@cyanheads cyanheads released this 02 Aug 16:32
v0.3.6
20dfc6a

Advertise the amenity / tag_key+tag_value requirement in the schema

  • openstreetmap_query_nearby and openstreetmap_query_bbox's
    advertised inputSchema now carries anyOf over required-sets, so a
    caller reading the schema alone sees that a tag mode is required (#47)
  • Additive: existing argument sets stay valid; resolveTagInput remains
    the runtime enforcement point

CHANGELOG v0.3.6

v0.3.5: Overpass endpoint failover, query_raw paging, derived timeouts

Choose a tag to compare

@cyanheads cyanheads released this 02 Aug 16:03
v0.3.5
2f275ac

Overpass endpoint failover, query_raw paging, derived timeouts

  • Overpass endpoint rotation advances past a throttled or self-diagnosed-faulty host instead of ending the call, failing only once every configured endpoint has refused the query; a non-JSON HTTP 2xx response is classified by its error document instead of surfacing as a raw SyntaxError (#49)
  • openstreetmap_query_raw gains limit/offset paging and totalFound/truncated/nextOffset outputs; the Overpass result cache declines to retain a response past 100,000 elements (bounds retention, not the JSON.parse peak) (#50)
  • Client-side deadlines derive from the query's effective [timeout:N] instead of a flat 90s/120s pair, so query_raw's advertised timeout_seconds up to 180 is honored end to end (#51)
  • deps: @biomejs/biome ^2.5.5 → 2.5.6, @types/node ^26.1.1 → 26.1.2 (both pinned)

CHANGELOG v0.3.5

v0.3.4: opt-in Overpass endpoint failover

Choose a tag to compare

@cyanheads cyanheads released this 30 Jul 05:10
v0.3.4
73507c2

opt-in Overpass endpoint failover

  • OSM_OVERPASS_ENDPOINTS: ordered mirror list, rotates on transient failure only (#37)
  • servingEndpoint enrichment field on every Overpass tool response, redacted to origin+path (#37)
  • 120s total-call time budget bounds retries across endpoints, surfacing endpoints_exhausted
  • OSM_OVERPASS_BASE_URL unchanged: still pins one endpoint and disables failover

CHANGELOG v0.3.4

v0.3.3: Overpass 5xx cause sharing, honest data_timestamp

Choose a tag to compare

@cyanheads cyanheads released this 30 Jul 04:04
v0.3.3
43353d3

Overpass 5xx cause sharing, honest data_timestamp

  • query_bbox and query_nearby now surface the Overpass-stated 5xx cause in the error message, shared with query_raw via a common extractor; the captured non-2xx body is dropped from error.data instead of being duplicated under body/responseBody (#46)
  • data_timestamp on query_bbox and query_nearby is optional and omitted instead of falling back to the current time when Overpass reports no freshness metadata (#43)
  • query_bbox's west/east descriptions document the antimeridian-crossing semantics Overpass already supported (#40)
  • search_places's notice description now covers the truncation-cap case, not only the exhausted-paging-walk case (#39)

CHANGELOG v0.3.3

v0.3.2: Overpass error-contract and body-capture fixes

Choose a tag to compare

@cyanheads cyanheads released this 30 Jul 02:56
v0.3.2
dea4fe5

Overpass error-contract and body-capture fixes

  • Overpass 5xx failures (504 timeout, 502/503/500/501) now map to declared overpass_gateway_timeout / overpass_unavailable reasons with recovery hints, keeping their status-mapped error codes (#38)
  • OverpassService captures the full non-2xx error body (up to 4000 bytes) instead of relying on the framework's 500-byte default, so malformed-query parse errors reach the caller instead of being truncated (#45)

CHANGELOG v0.3.2

v0.3.1: Overpass load discipline and error classification

Choose a tag to compare

@cyanheads cyanheads released this 30 Jul 01:49
v0.3.1
4a34278

Overpass load discipline and error classification

  • upstream_error surfaces any Overpass runtime remark that is not a timeout or OOM, instead of returning an empty success (#41)
  • out-of-memory remarks reach result_too_large instead of being misclassified as a timeout (#42)
  • HTML throttle pages fail fast as rate_limited instead of being resubmitted up to 4x (#44)
  • OSM_OVERPASS_MAX_CONCURRENCY caps concurrent Overpass submissions (default 2), queuing past the cap instead of piling onto the endpoint
  • framework skills, docs, and dependency-specifier checks synced to the current template
  • deps: @cyanheads/mcp-ts-core ^0.10.17 -> ^0.11.0

CHANGELOG v0.3.1

v0.3.0: Explicit Nominatim tool names, array-only osm_ids, Overpass 400 parse errors

Choose a tag to compare

@cyanheads cyanheads released this 26 Jul 11:13
v0.3.0
b52cc4f

Explicit Nominatim tool names, array-only osm_ids, Overpass 400 parse errors

  • Nominatim tools renamed to explicit three-token names: openstreetmap_geocode -> openstreetmap_search_places, openstreetmap_reverse -> openstreetmap_reverse_geocode, openstreetmap_lookup -> openstreetmap_lookup_objects (#30)
  • openstreetmap_lookup_objects' osm_ids is array-only; a bare or JSON-stringified string now fails at the schema boundary instead of being misdiagnosed downstream (#29)
  • openstreetmap_query_raw surfaces the Overpass parse error from HTTP 400 response bodies, capped at 300 chars (#33)
  • Framework skill/script sync: DuckDB canvas scratch-root env var, bundle strip for platform-specific native bindings, field-test helper hardening
  • deps: @cyanheads/mcp-ts-core ^0.10.16 -> ^0.10.17, typescript ^6.0.3 -> ^7.0.2

CHANGELOG v0.3.0

v0.2.15: Paging exhaustion, geocode precision, tag-input trimming

Choose a tag to compare

@cyanheads cyanheads released this 26 Jul 10:26
v0.2.15
8f716dd

Paging exhaustion, geocode precision, tag-input trimming

  • openstreetmap_query_nearby/bbox distinguish an exhausted offset from a genuine empty result — reports the real match count and a valid retry offset (#27)
  • openstreetmap_geocode's exclude_place_ids paging walk reports its own exhaustion as success with zero results, instead of throwing no_results with a query-rewrite hint (#35)
  • openstreetmap_geocode's content[] importance no longer disagrees with structuredContent's full-precision value (#28)
  • resolveTagInput trims tag_key/tag_value before Overpass interpolation, fixing silent zero results from padded values (#36)
  • docs/design.md error blocks resynced with shipped tool contracts

CHANGELOG v0.2.15

v0.2.14: Nominatim throttle fix, error contracts, path prefix

Choose a tag to compare

@cyanheads cyanheads released this 26 Jul 10:03
v0.2.14
60901b3

Nominatim throttle fix, error contracts, path prefix

  • Nominatim now reserves request slots synchronously so concurrent callers can't bypass the 1 req/s throttle (#26)
  • openstreetmap_geocode's featureType filter reaches Nominatim — was sent as lowercase featuretype and silently dropped (#31)
  • openstreetmap_geocode, openstreetmap_reverse, and openstreetmap_lookup gain rate_limited/upstream_error contracts with recovery hints, plus isTransientNominatimError to stop retrying already-throttled requests (#32)
  • OSM_NOMINATIM_BASE_URL path prefix is preserved for subpath-hosted mirrors (#34)
  • Overpass tool definitions and service migrated off the legacy error.data.statusCode field; mcp-ts-core bumped to ^0.10.16; FUNDING.yml and SECURITY.md added
  • deps: @cyanheads/mcp-ts-core ^0.10.14 → ^0.10.16

CHANGELOG v0.2.14

v0.2.13: Full content-output parity and stable geocode refs

Choose a tag to compare

@cyanheads cyanheads released this 09 Jul 20:27
v0.2.13
9770ae4

Full content-output parity and stable geocode refs

query_raw content[] now mirrors every raw element field; geocode pagination keys off stable OSM refs instead of volatile place_ids.

Fixed:

  • openstreetmap_query_rawformat() renders every element field in content[] (way nodes[], relation members[], out-meta fields), not just the hand-picked ones — closes the content[]/structuredContent gap (#20)
  • openstreetmap_geocodenextExcludeIds emits stable OSM refs (N/W/R + osm_id) instead of volatile place_ids, preventing already-seen results from repeating across pages; falls back to place_id when a result carries no OSM ref (#25)

Dependency bumps:

  • tsc-alias ^1.8.17 → ^1.9.0
  • vitest ^4.1.9 → ^4.1.10

262 tests pass; bun run devcheck clean.

CHANGELOG v0.2.13