Releases: cyanheads/openstreetmap-mcp-server
Releases · cyanheads/openstreetmap-mcp-server
Release list
v0.3.6: Advertise the amenity / tag_key+tag_value requirement in the schema
Advertise the amenity / tag_key+tag_value requirement in the schema
openstreetmap_query_nearbyandopenstreetmap_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
v0.3.5: Overpass endpoint failover, query_raw paging, derived timeouts
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)
v0.3.4: opt-in Overpass endpoint failover
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
v0.3.3: Overpass 5xx cause sharing, honest data_timestamp
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)
v0.3.2: Overpass error-contract and body-capture fixes
Overpass error-contract and body-capture fixes
- Overpass 5xx failures (504 timeout, 502/503/500/501) now map to declared
overpass_gateway_timeout/overpass_unavailablereasons with recovery hints, keeping their status-mapped error codes (#38) OverpassServicecaptures 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)
v0.3.1: Overpass load discipline and error classification
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
v0.3.0: Explicit Nominatim tool names, array-only osm_ids, Overpass 400 parse errors
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
v0.2.15: Paging exhaustion, geocode precision, tag-input trimming
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
v0.2.14: Nominatim throttle fix, error contracts, path prefix
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
v0.2.13: Full content-output parity and stable geocode refs
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_raw—format()renders every element field incontent[](waynodes[], relationmembers[], out-meta fields), not just the hand-picked ones — closes the content[]/structuredContent gap (#20)openstreetmap_geocode—nextExcludeIdsemits stable OSM refs (N/W/R+osm_id) instead of volatileplace_ids, preventing already-seen results from repeating across pages; falls back toplace_idwhen a result carries no OSM ref (#25)
Dependency bumps:
tsc-alias^1.8.17 → ^1.9.0vitest^4.1.9 → ^4.1.10
262 tests pass; bun run devcheck clean.