Servers, volumes, networks, firewalls, load balancers, pricing and safe power operations.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Turn deletion and rebuild protection on or off for a server. Turning protection ON is the safest write in this server. Hetzner Cloud: POST /servers/{id}/actions/change_protection.
The server to protect.
Protect the server from deletion.
Protect the server from rebuild.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Turn deletion and rebuild protection on or off for a server. Turning protection ON is the safest write in this server. Hetzner Cloud: POST /servers/{id}/actions/change_protection.
| Argument | Type | Description |
|---|---|---|
| delete | boolean | Protect the server from deletion. |
| rebuild | boolean | Protect the server from rebuild. |
| server_id* | integer | The server to protect. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_id"
],
"properties": {
"delete": {
"type": "boolean",
"description": "Protect the server from deletion."
},
"rebuild": {
"type": "boolean",
"description": "Protect the server from rebuild."
},
"server_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The server to protect."
}
}
}Create a snapshot image from a server's disk — the safe thing to do BEFORE a risky change. Snapshots are billed for the space they use. Hetzner Cloud: POST /servers/{id}/actions/create_image.
| Argument | Type | Description |
|---|---|---|
| type | string | snapshot (kept until deleted) or backup (uses a backup slot). Defaults to snapshot. |
| server_id* | integer | The server to snapshot. |
| description | string | A label for the snapshot. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_id"
],
"properties": {
"type": {
"enum": [
"snapshot",
"backup"
],
"type": "string",
"description": "snapshot (kept until deleted) or backup (uses a backup slot). Defaults to snapshot."
},
"server_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The server to snapshot."
},
"description": {
"type": "string",
"description": "A label for the snapshot."
}
}
}Provision a new server. THIS STARTS BILLING: the chosen server type is charged by the hour from the moment it boots. Call hetzner_list_server_types first to see prices, and hetzner_list_images for a bootable image. Hetzner Cloud: POST /servers.
| Argument | Type | Description |
|---|---|---|
| name* | string | A unique name for the server (also its hostname). |
| image* | string | Image name or id to boot, e.g. ubuntu-24.04. |
| labels | object | Labels for filtering later. |
| location | string | Location name, e.g. fsn1. Defaults to Hetzner's choice. |
| ssh_keys | array | SSH key names or ids to authorise. Without one, Hetzner emails a root password. |
| user_data | string | cloud-init user data to run on first boot. |
| server_type* | string | Server type name, e.g. cx22. See hetzner_list_server_types. |
| start_after_create | boolean | Boot the server immediately. Defaults to true. |
Turn off automatic backups for a server. Existing backups are DELETED. Hetzner Cloud: POST /servers/{id}/actions/disable_backup.
| Argument | Type | Description |
|---|---|---|
| server_id* | integer | The server to stop backing up. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_id"
],
"properties": {
"server_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The server to stop backing up."
}
}
}Turn on automatic backups for a server. This adds roughly 20% to the server's price. Hetzner Cloud: POST /servers/{id}/actions/enable_backup.
| Argument | Type | Description |
|---|---|---|
| server_id* | integer | The server to protect. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_id"
],
"properties": {
"server_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The server to protect."
}
}
}Fetch the status of one asynchronous action. Every write tool here returns an action id — poll it with this to see whether the operation finished. Hetzner Cloud: GET /actions/{id}.
| Argument | Type | Description |
|---|---|---|
| action_id* | integer | The action's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"action_id"
],
"properties": {
"action_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The action's numeric id."
}
}
}Fetch a single resource by id. Hetzner Cloud: GET /certificates/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The resource's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The resource's numeric id."
}
}
}Fetch a single resource by id. Hetzner Cloud: GET /firewalls/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The resource's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The resource's numeric id."
}
}
}Fetch a single resource by id. Hetzner Cloud: GET /floating_ips/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The resource's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The resource's numeric id."
}
}
}Fetch a single resource by id. Hetzner Cloud: GET /load_balancers/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The resource's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The resource's numeric id."
}
}
}Fetch a single resource by id. Hetzner Cloud: GET /networks/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The resource's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The resource's numeric id."
}
}
}Fetch the full price list for the project's currency — server types, volumes, traffic, floating IPs, load balancers and backups. Hetzner Cloud: GET /pricing.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Fetch a single resource by id. Hetzner Cloud: GET /primary_ips/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The resource's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The resource's numeric id."
}
}
}Fetch a single server with its type, image, IPs, volumes, networks and protection flags. Hetzner Cloud: GET /servers/{id}.
| Argument | Type | Description |
|---|---|---|
| server_id* | integer | The server's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_id"
],
"properties": {
"server_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The server's numeric id."
}
}
}Fetch CPU, disk or network time series for one server over a window. Hetzner Cloud: GET /servers/{id}/metrics.
| Argument | Type | Description |
|---|---|---|
| end* | string | ISO-8601 end of the window. |
| step | integer | Resolution in seconds. |
| type* | string | Which metric family to return. |
| start* | string | ISO-8601 start of the window. |
| server_id* | integer | The server's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_id",
"type",
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"description": "ISO-8601 end of the window."
},
"step": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Resolution in seconds."
},
"type": {
"enum": [
"cpu",
"disk",
"network"
],
"type": "string",
"description": "Which metric family to return."
},
"start": {
"type": "string",
"description": "ISO-8601 start of the window."
},
"server_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The server's numeric id."
}
}
}Fetch a single resource by id. Hetzner Cloud: GET /ssh_keys/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The resource's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The resource's numeric id."
}
}
}Fetch a single resource by id. Hetzner Cloud: GET /volumes/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The resource's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The resource's numeric id."
}
}
}List TLS certificates, managed or uploaded, and their expiry. Hetzner Cloud: GET /certificates.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the resource with this exact name. |
| page | integer | 1-based page number. |
| per_page | integer | Page size, 1-50. |
| label_selector | string | Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the resource with this exact name."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50."
},
"label_selector": {
"type": "string",
"description": "Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom."
}
}
}List firewalls, their rules and which resources they are applied to. Hetzner Cloud: GET /firewalls.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the resource with this exact name. |
| page | integer | 1-based page number. |
| per_page | integer | Page size, 1-50. |
| label_selector | string | Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the resource with this exact name."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50."
},
"label_selector": {
"type": "string",
"description": "Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom."
}
}
}List floating IPs and which server each is assigned to. Hetzner Cloud: GET /floating_ips.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the resource with this exact name. |
| page | integer | 1-based page number. |
| per_page | integer | Page size, 1-50. |
| label_selector | string | Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the resource with this exact name."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50."
},
"label_selector": {
"type": "string",
"description": "Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom."
}
}
}List OS images, snapshots and backups you can boot or restore from. Hetzner Cloud: GET /images.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the image with this name, e.g. ubuntu-24.04. |
| page | integer | 1-based page number. |
| type | string | Only images of this kind. |
| per_page | integer | Page size, 1-50. |
| architecture | string | Only images for this CPU architecture. |
| label_selector | string | Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the image with this name, e.g. ubuntu-24.04."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"type": {
"enum": [
"system",
"snapshot",
"backup",
"app"
],
"type": "string",
"description": "Only images of this kind."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50."
},
"architecture": {
"enum": [
"x86",
"arm"
],
"type": "string",
"description": "Only images for this CPU architecture."
},
"label_selector": {
"type": "string",
"description": "Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom."
}
}
}List load balancers, their services, targets and health status. Hetzner Cloud: GET /load_balancers.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the resource with this exact name. |
| page | integer | 1-based page number. |
| per_page | integer | Page size, 1-50. |
| label_selector | string | Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the resource with this exact name."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50."
},
"label_selector": {
"type": "string",
"description": "Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom."
}
}
}List the datacentre locations (city, country, network zone) servers can run in. Hetzner Cloud: GET /locations.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the location with this name, e.g. fsn1. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the location with this name, e.g. fsn1."
}
}
}List private networks, their IP ranges, subnets and routes. Hetzner Cloud: GET /networks.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the resource with this exact name. |
| page | integer | 1-based page number. |
| per_page | integer | Page size, 1-50. |
| label_selector | string | Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the resource with this exact name."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50."
},
"label_selector": {
"type": "string",
"description": "Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom."
}
}
}List primary IPs and their assignments. Hetzner Cloud: GET /primary_ips.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the resource with this exact name. |
| page | integer | 1-based page number. |
| per_page | integer | Page size, 1-50. |
| label_selector | string | Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the resource with this exact name."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50."
},
"label_selector": {
"type": "string",
"description": "Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom."
}
}
}List the available server types with their cores, memory, disk and hourly and monthly prices — read this before creating a server. Hetzner Cloud: GET /server_types.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the type with this name, e.g. cx22. |
| page | integer | 1-based page number. |
| per_page | integer | Page size, 1-50. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the type with this name, e.g. cx22."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50."
}
}
}List the servers in the token's project, optionally filtered by name, status or a label selector. Hetzner Cloud: GET /servers.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the server with this exact name. |
| page | integer | 1-based page number. |
| status | string | Only servers in this power state. |
| per_page | integer | Page size, 1-50. |
| label_selector | string | Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the server with this exact name."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"status": {
"enum": [
"running",
"initializing",
"starting",
"stopping",
"off",
"deleting",
"migrating",
"rebuilding",
"unknown"
],
"type": "string",
"description": "Only servers in this power state."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50."
},
"label_selector": {
"type": "string",
"description": "Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom."
}
}
}List the SSH public keys available to inject when creating a server. Hetzner Cloud: GET /ssh_keys.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the resource with this exact name. |
| page | integer | 1-based page number. |
| per_page | integer | Page size, 1-50. |
| label_selector | string | Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the resource with this exact name."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50."
},
"label_selector": {
"type": "string",
"description": "Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom."
}
}
}List block-storage volumes, their size and which server they are attached to. Hetzner Cloud: GET /volumes.
| Argument | Type | Description |
|---|---|---|
| name | string | Only the resource with this exact name. |
| page | integer | 1-based page number. |
| per_page | integer | Page size, 1-50. |
| label_selector | string | Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only the resource with this exact name."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "1-based page number."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50."
},
"label_selector": {
"type": "string",
"description": "Label selector, e.g. env=prod or env!=dev — Hetzner's filter idiom."
}
}
}Power on a stopped server. Returns an action id — poll it with hetzner_get_action. Hetzner Cloud: POST /servers/{id}/actions/poweron.
| Argument | Type | Description |
|---|---|---|
| server_id* | integer | The server to start. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_id"
],
"properties": {
"server_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The server to start."
}
}
}Reboot a server gracefully via ACPI. Hetzner Cloud: POST /servers/{id}/actions/reboot.
| Argument | Type | Description |
|---|---|---|
| server_id* | integer | The server to reboot. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_id"
],
"properties": {
"server_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The server to reboot."
}
}
}Ask the guest OS to shut down gracefully via ACPI. Prefer this over a hard power-off. Note that a stopped server still costs money — only deleting it stops the bill. Hetzner Cloud: POST /servers/{id}/actions/shutdown.
| Argument | Type | Description |
|---|---|---|
| server_id* | integer | The server to shut down. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_id"
],
"properties": {
"server_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The server to shut down."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"server_type",
"image"
],
"properties": {
"name": {
"type": "string",
"description": "A unique name for the server (also its hostname)."
},
"image": {
"type": "string",
"description": "Image name or id to boot, e.g. ubuntu-24.04."
},
"labels": {
"type": "object",
"description": "Labels for filtering later.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"location": {
"type": "string",
"description": "Location name, e.g. fsn1. Defaults to Hetzner's choice."
},
"ssh_keys": {
"type": "array",
"items": {
"type": "string"
},
"description": "SSH key names or ids to authorise. Without one, Hetzner emails a root password."
},
"user_data": {
"type": "string",
"description": "cloud-init user data to run on first boot."
},
"server_type": {
"type": "string",
"description": "Server type name, e.g. cx22. See hetzner_list_server_types."
},
"start_after_create": {
"type": "boolean",
"description": "Boot the server immediately. Defaults to true."
}
}
}