Unofficial MCP server for the Hetzner Cloud API: one typed tool per operation, read and write.
Connect Runs on your machine
claude mcp add the-real-hetzner-mcp -e HETZNER_API_TOKEN=<HETZNER_API_TOKEN> -e HETZNER_READ_ONLY=<HETZNER_READ_ONLY> -e HETZNER_CONFIRM_WRITES=<HETZNER_CONFIRM_WRITES> -e HETZNER_DENY_TOOLS=<HETZNER_DENY_TOOLS> -e LOG_LEVEL=<LOG_LEVEL> -- npx -y @mguttmann/[email protected]
{
"mcpServers": {
"the-real-hetzner-mcp": {
"command": "npx",
"args": [
"-y",
"@mguttmann/[email protected]"
],
"env": {
"HETZNER_API_TOKEN": "<HETZNER_API_TOKEN>",
"HETZNER_READ_ONLY": "<HETZNER_READ_ONLY>",
"HETZNER_CONFIRM_WRITES": "<HETZNER_CONFIRM_WRITES>",
"HETZNER_DENY_TOOLS": "<HETZNER_DENY_TOOLS>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
{
"mcpServers": {
"the-real-hetzner-mcp": {
"command": "npx",
"args": [
"-y",
"@mguttmann/[email protected]"
],
"env": {
"HETZNER_API_TOKEN": "<HETZNER_API_TOKEN>",
"HETZNER_READ_ONLY": "<HETZNER_READ_ONLY>",
"HETZNER_CONFIRM_WRITES": "<HETZNER_CONFIRM_WRITES>",
"HETZNER_DENY_TOOLS": "<HETZNER_DENY_TOOLS>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
{
"servers": {
"the-real-hetzner-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@mguttmann/[email protected]"
],
"env": {
"HETZNER_API_TOKEN": "<HETZNER_API_TOKEN>",
"HETZNER_READ_ONLY": "<HETZNER_READ_ONLY>",
"HETZNER_CONFIRM_WRITES": "<HETZNER_CONFIRM_WRITES>",
"HETZNER_DENY_TOOLS": "<HETZNER_DENY_TOOLS>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
HETZNER_API_TOKENRequired, secret | Hetzner Cloud API token from the Cloud Console (project > Security > API tokens). The server can do exactly what this token allows; use a Read token if the client only needs to read. |
HETZNER_READ_ONLYOptional | true: every tool that is not read-only, and hcloud_raw_request with a method other than GET, returns an error without sending a request. Any value other than true, 1, yes, false, 0, no or empty stops the server at startup. |
HETZNER_CONFIRM_WRITESOptional | true: every tool that is not read-only returns a preview unless the call carries confirm "YES". Friction against mistakes, not a security boundary. |
HETZNER_DENY_TOOLSOptional | Comma-separated tool name globs (for example hcloud_delete_*,hcloud_raw_request) that always return an error. Deny hcloud_raw_request as well, otherwise denied endpoints stay reachable through it. A pattern that matches no tool stops the server at startup. |
LOG_LEVELOptional | Log level of the JSON logs on stderr. |
Details
| Package | @mguttmann/[email protected] (NPM, stdio) |
| First published | 27 Oct 2026 |
| Last updated | 27 Oct 2026 |
| Registry name | io.github.mguttmann/the-real-hetzner-mcp |
More other servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
