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.
Available components
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
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
claude mcp add lazyants-hetzner -- npx -y @lazyants/hetzner-mcp-server
{
"mcpServers": {
"lazyants-hetzner": {
"command": "npx",
"args": [
"-y",
"@lazyants/hetzner-mcp-server"
]
}
}
} {
"servers": {
"lazyants-hetzner": {
"command": "npx",
"args": [
"-y",
"@lazyants/hetzner-mcp-server"
]
}
}
} codex mcp add lazyants-hetzner -- npx -y @lazyants/hetzner-mcp-server
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"lazyants-hetzner": {
"type": "local",
"command": [
"npx",
"-y",
"@lazyants/hetzner-mcp-server"
],
"enabled": true
}
}
} openclaw mcp add lazyants-hetzner --command npx --arg -y --arg @lazyants/hetzner-mcp-server
mcp_servers:
lazyants-hetzner:
command: "npx"
args: ["-y", "@lazyants/hetzner-mcp-server"] {
"McpServers": {
"lazyants-hetzner": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@lazyants/hetzner-mcp-server"
]
}
}
} assistant mcp add lazyants-hetzner -t stdio -c npx -a -y @lazyants/hetzner-mcp-server
{
"mcpServers": {
"lazyants-hetzner": {
"command": "npx",
"args": [
"-y",
"@lazyants/hetzner-mcp-server"
]
}
}
} 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
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 →
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 →
hetzner_create_zone Create DNS Zone ~178
Create a new DNS zone in primary or secondary mode. Optionally provide TTL, primary nameservers (for secondary), initial RRSets, or a zonefile.
| Name | Type | Req | Description |
|---|---|---|---|
| labels | object | – | Labels as key-value pairs |
| mode | string | yes | Zone mode: "primary" (managed here) or "secondary" (transferred from external primary) |
| name | string | yes | Fully qualified domain name of the zone, e.g. "example.com" |
| primary_nameservers | array | – | Primary nameservers (required for secondary zones) |
| rrsets | array | – | Initial RRSets to create with the zone |
| ttl | integer | – | Default TTL in seconds for records in this zone |
| zonefile | string | – | Initial zone content in RFC 1035 zonefile format (alternative to rrsets) |
No output schema declared.
No examples provided.
hetzner_create_zone_rrset Create DNS Zone RRSet ~129
Create a new RRSet (record set) inside a DNS zone.
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | – | yes | Zone ID or name |
| labels | object | – | Labels as key-value pairs |
| name | string | yes | RRSet name (e.g. "@", "www", "_acme-challenge") |
| records | array | – | Records belonging to this RRSet |
| ttl | integer | – | TTL in seconds for records in this RRSet |
| type | string | yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) |
No output schema declared.
No examples provided.
hetzner_delete_certificate Delete Certificate ~36
Delete a certificate. It must not be in use by any load balancer.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
No output schema declared.
No examples provided.
hetzner_delete_firewall Delete Firewall ~34
Delete a firewall. It must be removed from all resources first.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
No output schema declared.
No examples provided.
hetzner_delete_floating_ip 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Floating IP ID |
No output schema declared.
No examples provided.
hetzner_delete_image Delete Image ~29
Permanently delete a snapshot or backup image.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Image ID |
No output schema declared.
No examples provided.
hetzner_delete_lb_service Delete Load Balancer Service ~49
Remove a service from a load balancer by its listen port.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
| listen_port | integer | yes | Listen port of the service to delete |
No output schema declared.
No examples provided.
hetzner_delete_load_balancer Delete Load Balancer ~30
Permanently delete a load balancer.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
No output schema declared.
No examples provided.
hetzner_delete_network Delete Network ~36
Delete a network. All subnets and routes within it will also be deleted.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
No output schema declared.
No examples provided.
hetzner_delete_placement_group Delete Placement Group ~37
Delete a placement group. All servers must be removed from it first.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Placement group ID |
No output schema declared.
No examples provided.
hetzner_delete_primary_ip 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Primary IP ID |
No output schema declared.
No examples provided.
hetzner_delete_route Delete Route from Network ~55
Remove a route from an existing network.
| Name | Type | Req | Description |
|---|---|---|---|
| destination | string | yes | Destination network of the route to delete |
| gateway | string | yes | Gateway of the route to delete |
| id | integer | yes | Resource ID |
No output schema declared.
No examples provided.
hetzner_delete_server Delete Server ~35
Permanently delete a server. This destroys the server and all associated data.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Server ID |
No output schema declared.
No examples provided.
hetzner_delete_ssh_key Delete SSH Key ~32
Delete an SSH key from the project permanently.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | SSH key ID |
No output schema declared.
No examples provided.
hetzner_delete_storage_box Delete Storage Box ~43
Delete a Storage Box and all of its data permanently. The Storage Box must not be delete-protected.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Storage Box ID |
No output schema declared.
No examples provided.
hetzner_delete_storage_box_snapshot Delete Storage Box Snapshot ~40
Delete a Storage Box snapshot permanently.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Storage Box ID |
| snapshot_id | integer | yes | Snapshot ID |
No output schema declared.
No examples provided.
hetzner_delete_storage_box_subaccount Delete Storage Box Subaccount ~52
Delete a Storage Box subaccount permanently. Its home directory contents are not removed.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Storage Box ID |
| subaccount_id | integer | yes | Subaccount ID |
No output schema declared.
No examples provided.
hetzner_delete_subnet Delete Subnet from Network ~48
Remove a subnet from an existing network by its IP range.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
| ip_range | string | yes | IP range of the subnet to delete |
No output schema declared.
No examples provided.
hetzner_delete_volume Delete Volume ~34
Delete a volume permanently. The volume must be detached from any server.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Volume ID |
No output schema declared.
No examples provided.
hetzner_delete_zone Delete DNS Zone ~44
Delete a DNS zone and all of its RRSets permanently. The zone must not be delete-protected.
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | – | yes | Zone ID or name |
No output schema declared.
No examples provided.
hetzner_delete_zone_rrset Delete DNS Zone RRSet ~80
Delete an RRSet from a DNS zone permanently. The RRSet must not be change-protected.
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | – | yes | Zone ID or name |
| name | string | yes | RRSet name |
| type | string | yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) |
No output schema declared.
No examples provided.
hetzner_detach_iso Detach ISO from Server ~49
Detach an ISO image from a server. The server must be rebooted for the change to take effect.
| Name | Type | Req | Description |
|---|---|---|---|
| server_id | integer | yes | Server ID to detach the ISO from |
No output schema declared.
No examples provided.
hetzner_detach_lb_from_network Detach Load Balancer from Network ~45
Detach a load balancer from a network.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
| network | integer | yes | Network ID to detach from |
No output schema declared.
No examples provided.
hetzner_detach_server_from_network Detach Server from Network ~56
Detach a server from a private network, removing its private connectivity on that network.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Server ID |
| network | integer | yes | ID of the network to detach the server from |
No output schema declared.
No examples provided.
hetzner_detach_volume Detach Volume ~33
Detach a volume from the server it is attached to.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Volume ID |
No output schema declared.
No examples provided.
hetzner_disable_backup Disable Server Backup ~33
Disable automatic backups for a server and remove all existing backup snapshots.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Server ID |
No output schema declared.
No examples provided.
hetzner_disable_lb_public_interface Disable Load Balancer Public Interface ~40
Disable the public network interface of a load balancer, removing its public connectivity.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Load Balancer ID |
No output schema declared.
No examples provided.
hetzner_disable_rescue Disable Rescue Mode ~35
Disable rescue mode on a server. The next reboot will boot normally.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Server ID |
No output schema declared.
No examples provided.
hetzner_disable_storage_box_snapshot_plan Disable Storage Box Snapshot Plan ~39
Disable the automatic snapshot plan for a Storage Box. Existing snapshots are kept.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Storage Box ID |
No output schema declared.
No examples provided.
hetzner_enable_backup Enable Server Backup ~46
Enable automatic daily backups for a server. Backups increase the server price by 20 percent. The backup window is chosen automatically.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Server ID |
No output schema declared.
No examples provided.
hetzner_enable_lb_public_interface Enable Load Balancer Public Interface ~44
Enable the public network interface of a load balancer so it can be reached over public IPs.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Load Balancer ID |
No output schema declared.
No examples provided.
hetzner_enable_rescue Enable Rescue Mode ~65
Enable rescue mode on a server. The server must be rebooted to enter rescue mode.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Server ID |
| ssh_keys | array | – | SSH key IDs to inject into rescue system |
| type | string | – | Rescue system type |
No output schema declared.
No examples provided.
hetzner_enable_storage_box_snapshot_plan Enable Storage Box Snapshot Plan ~141
Enable or update the automatic snapshot plan for a Storage Box (schedule and retention).
| Name | Type | Req | Description |
|---|---|---|---|
| day_of_month | – | – | Day of month to run monthly (1-31), or null |
| day_of_week | – | – | Day of week to run weekly (1=Monday .. 7=Sunday), or null |
| hour | integer | yes | Hour of the day to run the snapshot (0-23, UTC) |
| id | integer | yes | Storage Box ID |
| max_snapshots | integer | yes | Maximum number of automatic snapshots to retain |
| minute | integer | yes | Minute of the hour to run the snapshot (0-59) |
No output schema declared.
No examples provided.
hetzner_export_zonefile Export DNS Zonefile ~41
Export the current contents of a DNS zone as an RFC 1035 zonefile string.
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | – | yes | Zone ID or name |
No output schema declared.
No examples provided.
hetzner_get_certificate Get Certificate ~30
Get details of a specific certificate by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
No output schema declared.
No examples provided.
hetzner_get_datacenter 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Datacenter ID |
No output schema declared.
No examples provided.
hetzner_get_firewall Get Firewall ~31
Get details of a specific firewall by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
No output schema declared.
No examples provided.
hetzner_get_floating_ip Get Floating IP ~33
Get details of a specific floating IP by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Floating IP ID |
No output schema declared.
No examples provided.
hetzner_get_image Get Image ~29
Get details of a specific image by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Image ID |
No output schema declared.
No examples provided.
hetzner_get_iso Get ISO ~30
Get details of a specific ISO image by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | ISO ID |
No output schema declared.
No examples provided.
hetzner_get_lb_metrics Get Load Balancer Metrics ~106
Get metrics for a load balancer over a specified time range.
| Name | Type | Req | Description |
|---|---|---|---|
| end | string | yes | End of the time range in ISO 8601 format |
| id | integer | yes | Resource ID |
| start | string | yes | Start of the time range in ISO 8601 format |
| type | string | yes | Metric 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 Get Load Balancer ~34
Get details of a specific load balancer by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
No output schema declared.
No examples provided.
hetzner_get_location Get Location ~29
Get details of a specific location by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Location ID |
No output schema declared.
No examples provided.
hetzner_get_network Get Network ~30
Get details of a specific network by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
No output schema declared.
No examples provided.
hetzner_get_placement_group Get Placement Group ~33
Get details of a specific placement group by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Placement group ID |
No output schema declared.
No examples provided.
hetzner_get_pricing 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 Get Primary IP ~32
Get details of a specific primary IP by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Primary IP ID |
No output schema declared.
No examples provided.
hetzner_get_server Get Server ~29
Get details of a specific server by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Server ID |
No output schema declared.
No examples provided.
hetzner_get_server_metrics Get Server Metrics ~129
Retrieve time series metrics (CPU, disk, network) for a server over a time range.
| Name | Type | Req | Description |
|---|---|---|---|
| end | string | yes | End of period, ISO 8601 timestamp (e.g. "2025-01-02T00:00:00Z") |
| id | integer | yes | Server ID |
| start | string | yes | Start of period, ISO 8601 timestamp (e.g. "2025-01-01T00:00:00Z") |
| type | string | yes | Comma-separated metric types: "cpu", "disk", "network" |
No output schema declared.
No examples provided.
hetzner_get_server_type Get Server Type ~35
Get details of a specific server type, including specs and pricing.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Server type ID |
No output schema declared.
No examples provided.
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.