v2.0.0 — FSL-1.1-MIT relicense + hygiene baseline
First major release. Two themes: (1) license switch to FSL-1.1-MIT, and
(2) project-hygiene baseline shared across the Lazy Ants MCP server
fleet (npm provenance, Trusted Publishing, ESLint 9, Dependabot,
multi-Node CI, version-sync guard).
Versions ≤ 1.1.1 remain under the original MIT license.
Changed
- License → FSL-1.1-MIT. Auto-reverts to MIT after two
years. The license switch is what makes this a semver-major bump;
the rest would be minor/patch on their own. - Dependencies:
typescript→^6.0.0,vitest→^4.1.0,
actions/checkout→v6,actions/setup-node→v6,
axios→^1.16.0(CVE coverage),@modelcontextprotocol/sdk→
^1.29.0.zodstays on^3.25.0— the MCP SDK has known
.describe()propagation bugs with zod 4. - Releasing: GitHub Releases auto-publish to npm with provenance
(--provenance --access public) before pushing to the MCP Registry.
Authentication via npm Trusted Publishing — noNPM_TOKENsecret
in the repo.mcp-publisheris pinned by version + SHA-256 and
smoke-tested before the irreversiblenpm publish. Cutover/recovery
guard skipsnpm publishcleanly if the version is already on npm. - CI: test workflow runs on Node 20 and 22 with npm cache, lint,
version-sync check, andnpm audit --audit-level=moderate --omit=dev.
Added
- ESLint 9 flat config (
eslint.config.mjs) with
tseslint.configs.recommended+globals.node. Newnpm run lint
script, gated in CI. - Dependabot for weekly npm + GitHub Actions updates, grouped
minor+patch, ignoring@types/nodemajor bumps. scripts/check-versions.mjsenforces
package.json#version==server.json#/packages[0].version
(hard fail) and warns on registry-version regressions. Implements
full semver §10/§11 (build metadata stripped, prerelease ordering).SECURITY.mdvulnerability disclosure path.CHANGELOG.md(Keep a Changelog format).engines.node >= 20inpackage.json.- Hetzner API field additions from the upstream changelog:
hetzner_rebuild_serveraccepts optionaluser_data(2026-01-16).- LB HTTP service schemas accept optional
timeout_idle(2026-04-30). hetzner_create_primary_ipno longer requiresassignee_type
(2026-04-27).
Verification
- npm:
npm view @lazyants/hetzner-mcp-server@2.0.0will show a
provenance attestation block once the publish workflow completes. - MCP Registry: listing at
https://registry.modelcontextprotocol.io/ updates to 2.0.0.
Full Changelog: v1.1.1...v2.0.0