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_add_lb_service Add Load Balancer Service ~115
Add a service (port listener with forwarding rules) to a load balancer.
| Name | Type | Req | Description |
|---|---|---|---|
| destination_port | integer | yes | Port traffic is forwarded to |
| health_check | object | – | Health check configuration |
| http | object | – | HTTP-specific service settings |
| id | integer | yes | Resource ID |
| listen_port | integer | yes | Port the load balancer listens on |
| protocol | string | yes | Service protocol: tcp, http, or https |
| proxyprotocol | boolean | – | Enable PROXY protocol |
No output schema declared.
No examples provided.
hetzner_add_lb_target Add Load Balancer Target ~92
Add a target (server, label selector, or IP) to a load balancer.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
| ip | object | – | IP target |
| label_selector | object | – | Label selector target |
| server | object | – | Server target |
| type | string | yes | Target type |
| use_private_ip | boolean | – | Use private IP for the target |
No output schema declared.
No examples provided.
hetzner_add_route Add Route to Network ~51
Add a route to an existing network.
| Name | Type | Req | Description |
|---|---|---|---|
| destination | string | yes | Destination network of the route |
| gateway | string | yes | Gateway for the route |
| id | integer | yes | Resource ID |
No output schema declared.
No examples provided.
hetzner_add_server_to_placement_group Add Server to Placement Group ~62
Add a server to a placement group. The server must be powered off before it can be added.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Server ID |
| placement_group | integer | yes | ID of the placement group to add the server to |
No output schema declared.
No examples provided.
hetzner_add_subnet Add Subnet to Network ~92
Add a subnet to an existing network.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
| ip_range | string | – | IP range of the subnet |
| network_zone | string | yes | Name of the network zone, e.g. "eu-central" |
| type | string | yes | Type of subnet |
| vswitch_id | integer | – | ID of the vSwitch (required for vswitch type) |
No output schema declared.
No examples provided.
hetzner_add_zone_rrset_records Add Records to DNS Zone RRSet ~110
Add new records to an existing RRSet without removing existing ones. Optionally update the RRSet TTL.
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | – | yes | Zone ID or name |
| name | string | yes | RRSet name |
| records | array | yes | Records to add to the RRSet |
| ttl | integer | – | Optional new TTL applied alongside the addition |
| type | string | yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) |
No output schema declared.
No examples provided.
hetzner_apply_firewall Apply Firewall to Resources ~47
Apply a firewall to one or more servers or label selectors.
| Name | Type | Req | Description |
|---|---|---|---|
| apply_to | array | yes | Resources to apply the firewall to |
| id | integer | yes | Resource ID |
No output schema declared.
No examples provided.
hetzner_assign_floating_ip Assign Floating IP ~50
Assign a floating IP to a server in the same location.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Floating IP ID |
| server | integer | yes | Server ID to assign the floating IP to |
No output schema declared.
No examples provided.
hetzner_assign_primary_ip Assign Primary IP ~64
Assign a primary IP to a server.
| Name | Type | Req | Description |
|---|---|---|---|
| assignee_id | integer | yes | Server ID to assign the primary IP to |
| assignee_type | string | yes | Assignee type (must be "server") |
| id | integer | yes | Primary IP ID |
No output schema declared.
No examples provided.
hetzner_attach_iso Attach ISO to Server ~59
Attach an ISO image to a server. The server must be rebooted to boot from the ISO.
| Name | Type | Req | Description |
|---|---|---|---|
| iso | string | yes | ISO name or ID to attach |
| server_id | integer | yes | Server ID to attach the ISO to |
No output schema declared.
No examples provided.
hetzner_attach_lb_to_network Attach Load Balancer to Network ~90
Attach a load balancer to a network.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
| ip | string | – | IP address to assign in the network |
| ip_range | string | – | Subnet IP range (CIDR) to attach to, e.g. "10.0.1.0/24" |
| network | integer | yes | Network ID to attach to |
No output schema declared.
No examples provided.
hetzner_attach_server_to_network Attach Server to Network ~134
Attach a server to a private network, optionally assigning a specific IP, alias IPs, or IP range.
| Name | Type | Req | Description |
|---|---|---|---|
| alias_ips | array | – | Additional alias IPs to assign the server on the network |
| id | integer | yes | Server ID |
| ip | string | – | Private IP to assign the server in the network (within the network IP range) |
| ip_range | string | – | Subnet IP range (CIDR) to attach to, e.g. "10.0.1.0/24" |
| network | integer | yes | ID of the network to attach the server to |
No output schema declared.
No examples provided.
hetzner_attach_volume Attach Volume ~67
Attach a volume to a server. The server and volume must be in the same location.
| Name | Type | Req | Description |
|---|---|---|---|
| automount | boolean | – | Auto-mount the volume after attaching |
| id | integer | yes | Volume ID |
| server | integer | yes | Server ID to attach the volume to |
No output schema declared.
No examples provided.
hetzner_change_alias_ips Change Server Alias IPs ~91
Replace the alias IPs that a server has on a private network. The list overrides any existing alias IPs for that network.
| Name | Type | Req | Description |
|---|---|---|---|
| alias_ips | array | yes | Full list of alias IPs to set on the network (replaces existing). Pass [] to clear. |
| id | integer | yes | Server ID |
| network | integer | yes | ID of the network the server is attached to |
No output schema declared.
No examples provided.
hetzner_change_dns_ptr Change Server Reverse DNS ~97
Change the reverse DNS entry for one of a server's public IPv4 or IPv6 addresses. Set dns_ptr to null to reset to the default.
| Name | Type | Req | Description |
|---|---|---|---|
| dns_ptr | string|null | yes | Reverse DNS PTR record value, or null to reset to the default |
| id | integer | yes | Server ID |
| ip | string | yes | Public IPv4 or IPv6 address of the server to set the reverse DNS entry for |
No output schema declared.
No examples provided.
hetzner_change_floating_ip_protection Change Floating IP Protection ~57
Enable or disable delete protection on a floating IP to guard against accidental destruction.
| Name | Type | Req | Description |
|---|---|---|---|
| delete | boolean | – | If true, prevents the floating IP from being deleted |
| id | integer | yes | Floating IP ID |
No output schema declared.
No examples provided.
hetzner_change_floating_ip_rdns Change Floating IP Reverse DNS ~78
Change the reverse DNS entry for a floating IP. Set dns_ptr to null to reset.
| Name | Type | Req | Description |
|---|---|---|---|
| dns_ptr | string|null | yes | Reverse DNS PTR record value, or null to reset |
| id | integer | yes | Floating IP ID |
| ip | string | yes | IP address to set the reverse DNS entry for |
No output schema declared.
No examples provided.
hetzner_change_image_protection Change Image Protection ~55
Enable or disable delete protection on a snapshot or backup image to guard against accidental destruction.
| Name | Type | Req | Description |
|---|---|---|---|
| delete | boolean | – | If true, prevents the image from being deleted |
| id | integer | yes | Image ID |
No output schema declared.
No examples provided.
hetzner_change_ip_range Change Network IP Range ~85
Expand the IP range of an existing network. The new CIDR range must contain the current range; shrinking is not supported.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Network ID |
| ip_range | string | yes | New IP range in CIDR notation (e.g. "10.0.0.0/8"). Must be a superset of the current range. |
No output schema declared.
No examples provided.
hetzner_change_lb_algorithm Change Load Balancer Algorithm ~40
Change the balancing algorithm of a load balancer.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
| type | string | yes | Algorithm type |
No output schema declared.
No examples provided.
hetzner_change_lb_dns_ptr Change Load Balancer Reverse DNS ~100
Change the reverse DNS entry for one of a load balancer's public IP addresses. Set dns_ptr to null to reset to the default.
| Name | Type | Req | Description |
|---|---|---|---|
| dns_ptr | string|null | yes | Reverse DNS PTR record value, or null to reset to the default |
| id | integer | yes | Load Balancer ID |
| ip | string | yes | Public IPv4 or IPv6 address of the load balancer to set the reverse DNS entry for |
No output schema declared.
No examples provided.
hetzner_change_lb_type Change Load Balancer Type ~51
Change the type (plan) of a load balancer.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Resource ID |
| load_balancer_type | string | yes | New load balancer type name or ID |
No output schema declared.
No examples provided.
hetzner_change_load_balancer_protection Change Load Balancer Protection ~60
Enable or disable delete protection on a load balancer to guard against accidental destruction.
| Name | Type | Req | Description |
|---|---|---|---|
| delete | boolean | – | If true, prevents the load balancer from being deleted |
| id | integer | yes | Load Balancer ID |
No output schema declared.
No examples provided.
hetzner_change_network_protection Change Network Protection ~52
Enable or disable delete protection on a network to guard against accidental destruction.
| Name | Type | Req | Description |
|---|---|---|---|
| delete | boolean | – | If true, prevents the network from being deleted |
| id | integer | yes | Network ID |
No output schema declared.
No examples provided.
hetzner_change_primary_ip_protection Change Primary IP Protection ~56
Enable or disable delete protection on a primary IP to guard against accidental destruction.
| Name | Type | Req | Description |
|---|---|---|---|
| delete | boolean | – | If true, prevents the primary IP from being deleted |
| id | integer | yes | Primary IP ID |
No output schema declared.
No examples provided.
hetzner_change_primary_ip_rdns Change Primary IP Reverse DNS ~77
Change the reverse DNS entry for a primary IP. Set dns_ptr to null to reset.
| Name | Type | Req | Description |
|---|---|---|---|
| dns_ptr | string|null | yes | Reverse DNS PTR record value, or null to reset |
| id | integer | yes | Primary IP ID |
| ip | string | yes | IP address to set the reverse DNS entry for |
No output schema declared.
No examples provided.
hetzner_change_server_protection Change Server Protection ~70
Enable or disable delete and rebuild protection on a server to guard against accidental destruction.
| Name | Type | Req | Description |
|---|---|---|---|
| delete | boolean | – | If true, prevents the server from being deleted |
| id | integer | yes | Server ID |
| rebuild | boolean | – | If true, prevents the server from being rebuilt |
No output schema declared.
No examples provided.
hetzner_change_storage_box_protection Change Storage Box Protection ~56
Enable or disable delete protection on a Storage Box to guard against accidental destruction.
| Name | Type | Req | Description |
|---|---|---|---|
| delete | boolean | – | If true, prevents the Storage Box from being deleted |
| id | integer | yes | Storage Box ID |
No output schema declared.
No examples provided.
hetzner_change_storage_box_subaccount_home_directory Change Storage Box Subaccount Home Directory ~74
Change the home directory a Storage Box subaccount is scoped to.
| Name | Type | Req | Description |
|---|---|---|---|
| home_directory | string | yes | New home directory for the subaccount, e.g. "/backups/db" |
| id | integer | yes | Storage Box ID |
| subaccount_id | integer | yes | Subaccount ID |
No output schema declared.
No examples provided.
hetzner_change_storage_box_type Change Storage Box Type ~72
Change the type (capacity tier) of a Storage Box. The new type must have at least the current usage capacity.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Storage Box ID |
| storage_box_type | string | yes | ID or name of the target Storage Box type, e.g. "bx30" |
No output schema declared.
No examples provided.
hetzner_change_volume_protection Change Volume Protection ~52
Enable or disable delete protection on a volume to guard against accidental destruction.
| Name | Type | Req | Description |
|---|---|---|---|
| delete | boolean | – | If true, prevents the volume from being deleted |
| id | integer | yes | Volume ID |
No output schema declared.
No examples provided.
hetzner_change_zone_primary_nameservers Change DNS Zone Primary Nameservers ~62
Replace the list of primary nameservers used by a secondary DNS zone for AXFR/IXFR transfers.
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | – | yes | Zone ID or name |
| primary_nameservers | array | yes | New full list of primary nameservers |
No output schema declared.
No examples provided.
hetzner_change_zone_protection Change DNS Zone Protection ~55
Enable or disable delete protection on a DNS zone to guard against accidental destruction.
| Name | Type | Req | Description |
|---|---|---|---|
| delete | boolean | – | If true, prevents the zone from being deleted |
| id_or_name | – | yes | Zone ID or name |
No output schema declared.
No examples provided.
hetzner_change_zone_rrset_protection Change DNS Zone RRSet Protection ~98
Enable or disable change protection on an RRSet to guard against accidental modification or deletion.
| Name | Type | Req | Description |
|---|---|---|---|
| change | boolean | – | If true, prevents the RRSet from being modified or deleted |
| 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_change_zone_rrset_ttl Change DNS Zone RRSet TTL ~101
Change the TTL of an RRSet. Pass ttl=null to fall back to the zone default TTL.
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | – | yes | Zone ID or name |
| name | string | yes | RRSet name |
| ttl | – | yes | New TTL in seconds, or null to fall back to the zone default |
| type | string | yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) |
No output schema declared.
No examples provided.
hetzner_change_zone_ttl Change DNS Zone Default TTL ~55
Change the default TTL applied to records in a DNS zone that do not have an explicit TTL.
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_name | – | yes | Zone ID or name |
| ttl | integer | yes | New default TTL in seconds |
No output schema declared.
No examples provided.
hetzner_create_certificate Create Certificate ~114
Create an uploaded certificate (provide PEM data) or a managed certificate (provide domain names).
| Name | Type | Req | Description |
|---|---|---|---|
| certificate | string | – | PEM-encoded certificate (required for uploaded type) |
| domain_names | array | – | Domain names (required for managed type) |
| labels | object | – | Labels as key-value pairs |
| name | string | yes | Name of the certificate |
| private_key | string | – | PEM-encoded private key (required for uploaded type) |
| type | string | – | Certificate type (default: uploaded) |
No output schema declared.
No examples provided.
hetzner_create_firewall Create Firewall ~71
Create a new firewall with optional rules and resource assignments.
| Name | Type | Req | Description |
|---|---|---|---|
| apply_to | array | – | Resources to apply the firewall to |
| labels | object | – | Labels as key-value pairs |
| name | string | yes | Name of the firewall |
| rules | array | – | Array of firewall rules |
No output schema declared.
No examples provided.
hetzner_create_floating_ip Create Floating IP ~122
Create a new floating IP. Either home_location or server must be provided.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Description of the floating IP |
| home_location | string | – | Home location name (e.g. "fsn1"). Required if server is not set |
| labels | object | – | Labels as key-value pairs |
| name | string | – | Name of the floating IP |
| server | integer | – | Server ID to assign the floating IP to. Required if home_location is not set |
| type | string | yes | IP type |
No output schema declared.
No examples provided.
hetzner_create_image Create Image ~69
Create a snapshot image from an existing server.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Image description |
| labels | object | – | Labels as key-value pairs |
| server_id | integer | yes | Server ID to create the image from |
| type | string | – | Image type (default: snapshot) |
No output schema declared.
No examples provided.
hetzner_create_load_balancer Create Load Balancer ~173
Create a new load balancer with the specified type, location, and optional targets and services.
| Name | Type | Req | Description |
|---|---|---|---|
| algorithm | object | – | Load balancing algorithm |
| labels | object | – | Labels as key-value pairs |
| load_balancer_type | string | yes | Load balancer type name or ID |
| location | string | – | Location name (e.g. "fsn1"), mutually exclusive with network_zone |
| name | string | yes | Name of the load balancer |
| network | integer | – | Network ID to attach to |
| network_zone | string | – | Network zone (e.g. "eu-central"), mutually exclusive with location |
| public_interface | boolean | – | Enable the public interface |
| services | array | – | Array of services |
| targets | array | – | Array of targets |
No output schema declared.
No examples provided.
hetzner_create_network Create Network ~105
Create a new network with the specified IP range, and optionally subnets and routes.
| Name | Type | Req | Description |
|---|---|---|---|
| ip_range | string | yes | IP range of the whole network, e.g. "10.0.0.0/8" |
| labels | object | – | Labels as key-value pairs |
| name | string | yes | Name of the network |
| routes | array | – | Array of routes to create |
| subnets | array | – | Array of subnets to create |
No output schema declared.
No examples provided.
hetzner_create_placement_group Create Placement Group ~59
Create a new placement group to control server distribution across hosts.
| Name | Type | Req | Description |
|---|---|---|---|
| labels | object | – | Labels as key-value pairs |
| name | string | yes | Name of the placement group |
| type | string | yes | Placement group type |
No output schema declared.
No examples provided.
hetzner_create_primary_ip Create Primary IP ~175
Create a new primary IP with the specified type, optional location, and optional assignee type.
| Name | Type | Req | Description |
|---|---|---|---|
| assignee_id | integer | – | Server ID to assign the primary IP to (create-and-assign in one call) |
| assignee_type | string | – | Assignee type. Optional since 2026-04-27; defaults to "server" until 2026-08-01, then to "unassigned". |
| auto_delete | boolean | – | Delete the primary IP when the assignee is deleted |
| labels | object | – | Labels as key-value pairs |
| location | string | – | Location name (e.g. "fsn1", "nbg1", "hel1") |
| name | string | yes | Name of the primary IP |
| type | string | yes | IP type |
No output schema declared.
No examples provided.
hetzner_create_server Create Server ~264
Create a new server with the specified type, image, and configuration options.
| Name | Type | Req | Description |
|---|---|---|---|
| automount | boolean | – | Auto-mount the volumes passed in "volumes" after attach |
| firewalls | array | – | Firewalls to apply to the server |
| image | string | yes | Image name or ID to use (e.g. "ubuntu-22.04", "debian-12") |
| labels | object | – | Labels as key-value pairs |
| location | string | – | Location name (e.g. "fsn1", "nbg1", "hel1") |
| name | string | yes | Name of the server |
| networks | array | – | Network IDs to attach the server to |
| placement_group | number | – | Placement group ID |
| public_net | object | – | Public network configuration |
| server_type | string | yes | Server type name or ID (e.g. "cx22", "cpx11") |
| ssh_keys | array | – | SSH key names or IDs to inject |
| start_after_create | boolean | – | Start server after creation (default: true) |
| user_data | string | – | Cloud-init user data (base64 or plain text) |
| volumes | array | – | Volume IDs to attach at creation |
No output schema declared.
No examples provided.
hetzner_create_ssh_key Create SSH Key ~74
Add a new SSH public key to the project for use when creating servers.
| Name | Type | Req | Description |
|---|---|---|---|
| labels | object | – | Labels as key-value pairs |
| name | string | yes | Name of the SSH key |
| public_key | string | yes | SSH public key content (e.g. "ssh-rsa AAAA...") |
No output schema declared.
No examples provided.
hetzner_create_storage_box Create Storage Box ~151
Create a new Storage Box in the given location and type. Billing applies for the provisioned resource.
| Name | Type | Req | Description |
|---|---|---|---|
| access_settings | object | – | Initial access settings for the Storage Box |
| labels | object | – | Labels as key-value pairs |
| location | string | yes | ID or name of the location, e.g. "fsn1" |
| name | string | yes | Name of the Storage Box |
| password | string | yes | Password for the Storage Box main account |
| ssh_keys | array | – | SSH public keys in OpenSSH format to inject into the Storage Box |
| storage_box_type | string | yes | ID or name of the Storage Box type, e.g. "bx20" |
No output schema declared.
No examples provided.
hetzner_create_storage_box_snapshot Create Storage Box Snapshot ~64
Create a manual snapshot of a Storage Box, optionally with a description and labels.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Human-readable description for the snapshot |
| id | integer | yes | Storage Box ID |
| labels | object | – | Labels as key-value pairs |
No output schema declared.
No examples provided.
hetzner_create_storage_box_subaccount Create Storage Box Subaccount ~137
Create a subaccount on a Storage Box, scoped to a home directory with its own password and access settings.
| Name | Type | Req | Description |
|---|---|---|---|
| access_settings | object | – | Initial access settings for the subaccount |
| description | string | – | Human-readable description for the subaccount |
| home_directory | string | yes | Home directory the subaccount is scoped to, e.g. "/backups/web" |
| id | integer | yes | Storage Box ID |
| labels | object | – | Labels as key-value pairs |
| name | string | – | Optional display name for the subaccount |
| password | string | yes | Password for the subaccount |
No output schema declared.
No examples provided.
hetzner_create_volume Create Volume ~139
Create a new volume. Either location or server must be provided to determine placement.
| Name | Type | Req | Description |
|---|---|---|---|
| automount | boolean | – | Auto-mount the volume after attaching to a server |
| format | string | – | Filesystem format for the volume |
| labels | object | – | Labels as key-value pairs |
| location | string | – | Location name (e.g. "fsn1"). Required if server is not set |
| name | string | yes | Name of the volume |
| server | integer | – | Server ID to attach the volume to. Required if location is not set |
| size | integer | yes | Size of the volume in GB |
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.