Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.lazyants/hetzner

NPM · @LAZYANTS/HETZNER-MCP-SERVER · SCANNED SEP 21

MCP server for the Hetzner Cloud API — servers, networks, volumes, firewalls, and more.

−2 this week 91 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 34 of 108 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency87
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to lazyants/hetzner-mcp-server). View diagnostics → Pass
  • License check failed: the license (FSL-1.1-MIT) isn't a recognized OSI-approved license. See how to fix → Fail
  • Actively maintained (last published 31 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability82
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 13318 tokens (~71/item across 186 items; 185 tools + 1 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
  • Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 25 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 186 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.lazyants/hetzner MCP server?

io.github.lazyants/hetzner runs locally as an npm package, launched with npx -y @lazyants/hetzner-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @lazyants/hetzner-mcp-server

# add to Claude Code
claude mcp add lazyants-hetzner -- npx -y @lazyants/hetzner-mcp-server
// .cursor/mcp.json
{
  "mcpServers": {
    "lazyants-hetzner": {
      "command": "npx",
      "args": [
        "-y",
        "@lazyants/hetzner-mcp-server"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "lazyants-hetzner": {
      "command": "npx",
      "args": [
        "-y",
        "@lazyants/hetzner-mcp-server"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add lazyants-hetzner -- npx -y @lazyants/hetzner-mcp-server
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "lazyants-hetzner": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@lazyants/hetzner-mcp-server"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add lazyants-hetzner --command npx --arg -y --arg @lazyants/hetzner-mcp-server
# ~/.hermes/config.yaml
mcp_servers:
  lazyants-hetzner:
    command: "npx"
    args: ["-y", "@lazyants/hetzner-mcp-server"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "lazyants-hetzner": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@lazyants/hetzner-mcp-server"
      ]
    }
  }
}
# add to Vellum
assistant mcp add lazyants-hetzner -t stdio -c npx -a -y @lazyants/hetzner-mcp-server
// mcp.json
{
  "mcpServers": {
    "lazyants-hetzner": {
      "command": "npx",
      "args": [
        "-y",
        "@lazyants/hetzner-mcp-server"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 19 Sept 26 +1
    • Stability: 0.97 → pass security
  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 −2
    • Stability: pass → 0.90 functional
  • 15 Sept 26 +1
    • Stability: 0.97 → pass security
  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 −3
    • Stability: pass → 0.83 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Analysed npm/@lazyants/hetzner-mcp-server@2.5.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo lazyants/hetzner-mcp-server
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/lazyants/hetzner-mcp-server/.github/workflows/publish-registry.yml@refs/tags/v2.5.0
Rekor log index 2537216009
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:5e64e702fa5a85fdcb23af6c887f6a36182bf86ebb62437785aee8ffcbdfb3e4ceda81e7c573aa929b29ce79caa9b06d05e56d2ed65b17ffa7cab5303

Background: How many MCP packages publish verified provenance →

Dependencies 108 packages
Packages resolved 108
Stale 34
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 185 exposed · ~13,289 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
hetzner_create_zone ~178

Create a new DNS zone in primary or secondary mode. Optionally provide TTL, primary nameservers (for secondary), initial RRSets, or a zonefile.

NameTypeReqDescription
labelsobjectLabels as key-value pairs
modestringyesZone mode: "primary" (managed here) or "secondary" (transferred from external primary)
namestringyesFully qualified domain name of the zone, e.g. "example.com"
primary_nameserversarrayPrimary nameservers (required for secondary zones)
rrsetsarrayInitial RRSets to create with the zone
ttlintegerDefault TTL in seconds for records in this zone
zonefilestringInitial zone content in RFC 1035 zonefile format (alternative to rrsets)

No output schema declared.

No examples provided.

hetzner_create_zone_rrset ~129

Create a new RRSet (record set) inside a DNS zone.

NameTypeReqDescription
id_or_nameyesZone ID or name
labelsobjectLabels as key-value pairs
namestringyesRRSet name (e.g. "@", "www", "_acme-challenge")
recordsarrayRecords belonging to this RRSet
ttlintegerTTL in seconds for records in this RRSet
typestringyesDNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.)

No output schema declared.

No examples provided.

hetzner_delete_certificate ~36

Delete a certificate. It must not be in use by any load balancer.

NameTypeReqDescription
idintegeryesResource ID

No output schema declared.

No examples provided.

hetzner_delete_firewall ~34

Delete a firewall. It must be removed from all resources first.

NameTypeReqDescription
idintegeryesResource ID

No output schema declared.

No examples provided.

hetzner_delete_floating_ip ~58

Delete a floating IP permanently. Since 2026-05-01 the floating IP must be unassigned first; otherwise the API returns the must_be_unassigned error code.

NameTypeReqDescription
idintegeryesFloating IP ID

No output schema declared.

No examples provided.

hetzner_delete_image ~29

Permanently delete a snapshot or backup image.

NameTypeReqDescription
idintegeryesImage ID

No output schema declared.

No examples provided.

hetzner_delete_lb_service ~49

Remove a service from a load balancer by its listen port.

NameTypeReqDescription
idintegeryesResource ID
listen_portintegeryesListen port of the service to delete

No output schema declared.

No examples provided.

hetzner_delete_load_balancer ~30

Permanently delete a load balancer.

NameTypeReqDescription
idintegeryesResource ID

No output schema declared.

No examples provided.

hetzner_delete_network ~36

Delete a network. All subnets and routes within it will also be deleted.

NameTypeReqDescription
idintegeryesResource ID

No output schema declared.

No examples provided.

hetzner_delete_placement_group ~37

Delete a placement group. All servers must be removed from it first.

NameTypeReqDescription
idintegeryesPlacement group ID

No output schema declared.

No examples provided.

hetzner_delete_primary_ip ~57

Delete a primary IP permanently. Since 2026-05-01 the primary IP must be unassigned first; otherwise the API returns the must_be_unassigned error code.

NameTypeReqDescription
idintegeryesPrimary IP ID

No output schema declared.

No examples provided.

hetzner_delete_route ~55

Remove a route from an existing network.

NameTypeReqDescription
destinationstringyesDestination network of the route to delete
gatewaystringyesGateway of the route to delete
idintegeryesResource ID

No output schema declared.

No examples provided.

hetzner_delete_server ~35

Permanently delete a server. This destroys the server and all associated data.

NameTypeReqDescription
idintegeryesServer ID

No output schema declared.

No examples provided.

hetzner_delete_ssh_key ~32

Delete an SSH key from the project permanently.

NameTypeReqDescription
idintegeryesSSH key ID

No output schema declared.

No examples provided.

hetzner_delete_storage_box ~43

Delete a Storage Box and all of its data permanently. The Storage Box must not be delete-protected.

NameTypeReqDescription
idintegeryesStorage Box ID

No output schema declared.

No examples provided.

hetzner_delete_storage_box_snapshot ~40

Delete a Storage Box snapshot permanently.

NameTypeReqDescription
idintegeryesStorage Box ID
snapshot_idintegeryesSnapshot ID

No output schema declared.

No examples provided.

hetzner_delete_storage_box_subaccount ~52

Delete a Storage Box subaccount permanently. Its home directory contents are not removed.

NameTypeReqDescription
idintegeryesStorage Box ID
subaccount_idintegeryesSubaccount ID

No output schema declared.

No examples provided.

hetzner_delete_subnet ~48

Remove a subnet from an existing network by its IP range.

NameTypeReqDescription
idintegeryesResource ID
ip_rangestringyesIP range of the subnet to delete

No output schema declared.

No examples provided.

hetzner_delete_volume ~34

Delete a volume permanently. The volume must be detached from any server.

NameTypeReqDescription
idintegeryesVolume ID

No output schema declared.

No examples provided.

hetzner_delete_zone ~44

Delete a DNS zone and all of its RRSets permanently. The zone must not be delete-protected.

NameTypeReqDescription
id_or_nameyesZone ID or name

No output schema declared.

No examples provided.

hetzner_delete_zone_rrset ~80

Delete an RRSet from a DNS zone permanently. The RRSet must not be change-protected.

NameTypeReqDescription
id_or_nameyesZone ID or name
namestringyesRRSet name
typestringyesDNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.)

No output schema declared.

No examples provided.

hetzner_detach_iso ~49

Detach an ISO image from a server. The server must be rebooted for the change to take effect.

NameTypeReqDescription
server_idintegeryesServer ID to detach the ISO from

No output schema declared.

No examples provided.

hetzner_detach_lb_from_network ~45

Detach a load balancer from a network.

NameTypeReqDescription
idintegeryesResource ID
networkintegeryesNetwork ID to detach from

No output schema declared.

No examples provided.

hetzner_detach_server_from_network ~56

Detach a server from a private network, removing its private connectivity on that network.

NameTypeReqDescription
idintegeryesServer ID
networkintegeryesID of the network to detach the server from

No output schema declared.

No examples provided.

hetzner_detach_volume ~33

Detach a volume from the server it is attached to.

NameTypeReqDescription
idintegeryesVolume ID

No output schema declared.

No examples provided.

hetzner_disable_backup ~33

Disable automatic backups for a server and remove all existing backup snapshots.

NameTypeReqDescription
idintegeryesServer ID

No output schema declared.

No examples provided.

hetzner_disable_lb_public_interface ~40

Disable the public network interface of a load balancer, removing its public connectivity.

NameTypeReqDescription
idintegeryesLoad Balancer ID

No output schema declared.

No examples provided.

hetzner_disable_rescue ~35

Disable rescue mode on a server. The next reboot will boot normally.

NameTypeReqDescription
idintegeryesServer ID

No output schema declared.

No examples provided.

hetzner_disable_storage_box_snapshot_plan ~39

Disable the automatic snapshot plan for a Storage Box. Existing snapshots are kept.

NameTypeReqDescription
idintegeryesStorage Box ID

No output schema declared.

No examples provided.

hetzner_enable_backup ~46

Enable automatic daily backups for a server. Backups increase the server price by 20 percent. The backup window is chosen automatically.

NameTypeReqDescription
idintegeryesServer ID

No output schema declared.

No examples provided.

hetzner_enable_lb_public_interface ~44

Enable the public network interface of a load balancer so it can be reached over public IPs.

NameTypeReqDescription
idintegeryesLoad Balancer ID

No output schema declared.

No examples provided.

hetzner_enable_rescue ~65

Enable rescue mode on a server. The server must be rebooted to enter rescue mode.

NameTypeReqDescription
idintegeryesServer ID
ssh_keysarraySSH key IDs to inject into rescue system
typestringRescue system type

No output schema declared.

No examples provided.

hetzner_enable_storage_box_snapshot_plan ~141

Enable or update the automatic snapshot plan for a Storage Box (schedule and retention).

NameTypeReqDescription
day_of_monthDay of month to run monthly (1-31), or null
day_of_weekDay of week to run weekly (1=Monday .. 7=Sunday), or null
hourintegeryesHour of the day to run the snapshot (0-23, UTC)
idintegeryesStorage Box ID
max_snapshotsintegeryesMaximum number of automatic snapshots to retain
minuteintegeryesMinute of the hour to run the snapshot (0-59)

No output schema declared.

No examples provided.

hetzner_export_zonefile ~41

Export the current contents of a DNS zone as an RFC 1035 zonefile string.

NameTypeReqDescription
id_or_nameyesZone ID or name

No output schema declared.

No examples provided.

hetzner_get_certificate ~30

Get details of a specific certificate by its ID.

NameTypeReqDescription
idintegeryesResource ID

No output schema declared.

No examples provided.

hetzner_get_datacenter ~69

Deprecated by Hetzner; /datacenters is removed after 2026-10-01 (HTTP 410). Use hetzner_list_server_types (locations[].available/recommended) and hetzner_list_locations instead.

NameTypeReqDescription
idintegeryesDatacenter ID

No output schema declared.

No examples provided.

hetzner_get_firewall ~31

Get details of a specific firewall by its ID.

NameTypeReqDescription
idintegeryesResource ID

No output schema declared.

No examples provided.

hetzner_get_floating_ip ~33

Get details of a specific floating IP by ID.

NameTypeReqDescription
idintegeryesFloating IP ID

No output schema declared.

No examples provided.

hetzner_get_image ~29

Get details of a specific image by ID.

NameTypeReqDescription
idintegeryesImage ID

No output schema declared.

No examples provided.

hetzner_get_iso ~30

Get details of a specific ISO image by ID.

NameTypeReqDescription
idintegeryesISO ID

No output schema declared.

No examples provided.

hetzner_get_lb_metrics ~106

Get metrics for a load balancer over a specified time range.

NameTypeReqDescription
endstringyesEnd of the time range in ISO 8601 format
idintegeryesResource ID
startstringyesStart of the time range in ISO 8601 format
typestringyesMetric type, e.g. "open_connections", "connections_per_second", "requests_per_second", "bandwidth.in", "bandwidth.out"

No output schema declared.

No examples provided.

hetzner_get_load_balancer ~34

Get details of a specific load balancer by its ID.

NameTypeReqDescription
idintegeryesResource ID

No output schema declared.

No examples provided.

hetzner_get_location ~29

Get details of a specific location by ID.

NameTypeReqDescription
idintegeryesLocation ID

No output schema declared.

No examples provided.

hetzner_get_network ~30

Get details of a specific network by its ID.

NameTypeReqDescription
idintegeryesResource ID

No output schema declared.

No examples provided.

hetzner_get_placement_group ~33

Get details of a specific placement group by ID.

NameTypeReqDescription
idintegeryesPlacement group ID

No output schema declared.

No examples provided.

hetzner_get_pricing ~40

Get current prices for all Hetzner Cloud resources (servers, volumes, traffic, floating IPs, load balancers, and more).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

hetzner_get_primary_ip ~32

Get details of a specific primary IP by ID.

NameTypeReqDescription
idintegeryesPrimary IP ID

No output schema declared.

No examples provided.

hetzner_get_server ~29

Get details of a specific server by ID.

NameTypeReqDescription
idintegeryesServer ID

No output schema declared.

No examples provided.

hetzner_get_server_metrics ~129

Retrieve time series metrics (CPU, disk, network) for a server over a time range.

NameTypeReqDescription
endstringyesEnd of period, ISO 8601 timestamp (e.g. "2025-01-02T00:00:00Z")
idintegeryesServer ID
startstringyesStart of period, ISO 8601 timestamp (e.g. "2025-01-01T00:00:00Z")
typestringyesComma-separated metric types: "cpu", "disk", "network"

No output schema declared.

No examples provided.

hetzner_get_server_type ~35

Get details of a specific server type, including specs and pricing.

NameTypeReqDescription
idintegeryesServer type ID

No output schema declared.

No examples provided.

Common questions

What is the io.github.lazyants/hetzner MCP server?

io.github.lazyants/hetzner is an MCP server listed in the public MCP registry as io.github.lazyants/hetzner. MCP server for the Hetzner Cloud API, servers, networks, volumes, firewalls, and more. This page covers its npm package (@lazyants/hetzner-mcp-server).

Is the io.github.lazyants/hetzner MCP server safe to use?

io.github.lazyants/hetzner scores 91 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.lazyants/hetzner MCP server expose?

io.github.lazyants/hetzner exposes 185 tools: hetzner_list_servers, hetzner_get_server, hetzner_create_server, hetzner_update_server, hetzner_delete_server, and 180 more. Their descriptions and schemas cost roughly 13,289 tokens of context every time the server is loaded.

Is the io.github.lazyants/hetzner MCP server still maintained?

io.github.lazyants/hetzner is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.lazyants/hetzner MCP server under?

io.github.lazyants/hetzner declares the FSL-1.1-MIT licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.