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_KEYis now stripped from every tool result as a last line of defense: it travels in anAuthorizationheader, so an upstream (or a misconfiguredORS_BASE_URLhost) 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-publisherbinary in the release workflows is now version-pinned and checksum-verified instead of floating onreleases/latest— it runs with the job's OIDC identity, which proves registry ownership. - The npm/registry publish in
release.ymlnow waits for its own Trivy container scan instead of racing the scan inci.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_detailstags, andcountrycodesinput 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 stopused to wait out its grace period and SIGKILL.The optional
ORS_API_KEYis now removed from the environment before any configuration validation can throw. Previously a caller that caught theConfigError(e.g. for an invalidOSM_CACHE_TTL) would keep running with the key still inprocess.env— readable in/proc/<pid>/environand inherited by child processes. (Same finding as audiobookshelf-mcp PR #2.)Invalid base-URL and
OSM_CACHE_TTLvalues 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.isLoopbackHostnow 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 viaORS_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.