Skip to content

Changelog

[0.1.1] - 2026-08-18

Added

  • Documentation site at https://osm-mcp.ni-c.de: guides, a complete tool reference generated from the actual schemas, FAQ and this changelog.
  • Architecture diagram and demo recording, each generated from a single source (npm run assets, docs/demo.tape) and verified in CI.
  • Fully automated release pipeline: npm publishing with provenance via Trusted Publishing, GitHub releases from the changelog, MCP Registry and multi-arch GHCR publishing on tag push.

[0.1.0] - 2026-08-18

Security

  • The optional ORS_API_KEY is now stripped from every tool result as a last line of defense: it travels in an Authorization header, so an upstream (or a misconfigured ORS_BASE_URL host) echoing the request could previously have leaked it into the model context through an error body. URL-style key parameters are additionally redacted from sanitized error bodies.
  • The mcp-publisher binary in the release workflows is now version-pinned and checksum-verified instead of floating on releases/latest — it runs with the job's OIDC identity, which proves registry ownership.
  • The npm/registry publish in release.yml now waits for its own Trivy container scan instead of racing the scan in ci.yml.
  • The response cache now has an aggregate 32 MB byte budget on top of the entry cap; the caps alone allowed ~500 MB of retained upstream JSON.
  • Every tool call gets a 120 s wall-clock deadline: many-waypoint requests behind the 1 req/s geocoding limiter could previously occupy the queue for minutes past any client timeout.
  • POI core tags are truncated with the same 500-char value budget as poi_details tags, and countrycodes input length is bounded.

Fixed

  • Validated base URLs are returned in their WHATWG-normalized form instead of the raw input string.

  • The container now exits promptly on SIGTERM/SIGINT — as PID 1, Node gets no default signal handling, so docker stop used to wait out its grace period and SIGKILL.

  • The optional ORS_API_KEY is now removed from the environment before any configuration validation can throw. Previously a caller that caught the ConfigError (e.g. for an invalid OSM_CACHE_TTL) would keep running with the key still in process.env — readable in /proc/<pid>/environ and inherited by child processes. (Same finding as audiobookshelf-mcp PR #2.)

  • Invalid base-URL and OSM_CACHE_TTL values are no longer echoed in error messages — an API key pasted into the wrong environment variable would have been printed verbatim into the MCP host's log.

  • isLoopbackHost now strips IPv6 brackets generically instead of matching only the literal [::1].

Added

  • Initial implementation: 11 read-only OpenStreetMap tools — geocoding (Nominatim + Photon), routing/matrix/trip optimization via the FOSSGIS OSRM instance with correct routed-{car,bike,foot} profile prefixes, isochrones via Valhalla (OpenRouteService optional via ORS_API_KEY), POI search and details via Overpass with mirror failover, plus offline straight-line distance and openstreetmap.org link tools.
  • Per-service rate limiting, in-memory response caching and a mandatory identifying User-Agent, keeping the server inside the published usage policies of the public OSM services.

Released under the MIT License.