v2.1.0
Added
- DNS Zones module (
src/tools/zones.ts) + new entry binary
hetzner-mcp-dns(src/entry-dns.ts) covering 22 tools across
the Hetzner DNS Zones API (zones CRUD, RRSets CRUD,
primary-nameserver changes, protection, TTL changes, zonefile
import/export). Wraps the GA Nov 2025 surface on the existing
api.hetzner.cloudbaseURL + token (PR #24). change_*_protectionacross 7 resources: servers, load
balancers, volumes, networks, floating IPs, primary IPs, images.
Adds the data-loss guard rails the API has supported for years
but were never wrapped (PR #21).- Per-resource
list_*_actionsfor 8 resources: load balancers,
volumes, floating IPs, primary IPs, networks, firewalls,
certificates, images (PR #23). Replaces the global/actions
endpoint Hetzner deprecated in January 2025. - Server actions:
request_console,enable_backup,
disable_backup,change_alias_ips,change_dns_ptr(servers);
change_ip_range(networks). Plusmust_be_unassigned
precondition notes ondelete_floating_ip/delete_primary_ip
descriptions (PR #25). - Per-tool axios-mock test coverage across all 14 tool modules
(PRs #26, #28, #29, #30). Every tool now has at least one test
asserting path/method/body/query shape against a mocked
hetznerRequest(). - README tool counts updated to reflect the 147-tool surface
(PR #27).
Changed
- Migrated to Zod 4 (
zod ^4.4.3). Brings hetzner into line
with@lazyants/lexware-mcp-serverand
@lazyants/transkribus-mcp-server(both already on Zod 4 since
their 2.0.1). Allz.record(z.unknown())call sites updated to
the Zod-4 two-argument formz.record(z.string(), z.unknown()).
Runtime-verified.describe()propagation andtools/list
required[]correctness on the full schema surface (PR #22). - Bumped grouped minor+patch deps (PR #18): see the Dependabot PR
for the exact diff. No behavior changes.
Fixed
formatResponseno longer setsstructuredContentfor array
payloads. The MCP SDK rejects arrays instructuredContent;
previously this would crash on any tool returning a top-level
array (e.g. paginatedlist_*shortcuts). Now array payloads
go through the JSON-stringifiedcontent[]path only (PR #31).
Note on tool count
Total registered tools grew from 104 to 147 (+43): +22 DNS Zones
(PR #24), +8 list_*_actions (PR #23), +6 server/network actions
(PR #25), +7 change_*_protection (PR #21). Smoke test asserts
147 across full server + per-entry splits (28/21/25/20/17/14/22).