Hetzner Cloud MCP Server

Servidor MCP para a API Hetzner Cloud — gerencie servidores, redes, volumes, firewalls, balanceadores de carga e muito mais. 104 ferramentas em 13 domínios de recursos.

Documentação

hetzner-mcp-server

Tests

Servidor MCP para a API Hetzner Cloud. Gerencie servidores, redes, volumes, firewalls, load balancers e muito mais por meio do Model Context Protocol.

185 ferramentas em 15 domínios de recursos, com 9 pontos de entrada para que você escolha o servidor certo para o limite de ferramentas do seu cliente MCP. Uma referência de API somente leitura (reference://hetzner/api) também é exposta em todos os pontos de entrada.

Instalação

npm install -g @lazyants/hetzner-mcp-server

Ou execute diretamente:

npx @lazyants/hetzner-mcp-server

Configuração

Defina seu token da API Hetzner Cloud:

export HETZNER_API_TOKEN=your-token-here

Obtenha um token no Console Hetzner Cloud em Security > API Tokens.

As ferramentas de Storage Box usam um host separado (https://api.hetzner.com/v1). Elas usam HETZNER_STORAGE_API_TOKEN se definido; caso contrário, recorrem a HETZNER_API_TOKEN, de modo que um único token continua funcionando. Defina HETZNER_STORAGE_API_TOKEN somente se você quiser restringir o acesso ao Storage Box a um token dedicado:

export HETZNER_STORAGE_API_TOKEN=your-storage-token-here  # optional

Pontos de Entrada

ComandoDomíniosFerramentas
hetzner-mcp-serverTodos os 15 domínios185
hetzner-mcp-serversServidores, Datacenters/Locations/Server Types, Pricing34
hetzner-mcp-networkingNetworks, Firewalls21
hetzner-mcp-load-balancersLoad Balancers, Certificates28
hetzner-mcp-ipsFloating IPs, Primary IPs20
hetzner-mcp-storageVolumes, Images17
hetzner-mcp-storage-boxesStorage Boxes (+ snapshots, subaccounts, types)29
hetzner-mcp-configSSH Keys, ISOs, Placement Groups14
hetzner-mcp-dnsDNS Zones22

Use servidores divididos para reduzir o tamanho do contexto — escolha apenas as divisões que você precisa.

Claude Code

Adicione ao ~/.claude/settings.json:

{
  "mcpServers": {
    "hetzner": {
      "command": "npx",
      "args": ["-y", "@lazyants/hetzner-mcp-server"],
      "env": {
        "HETZNER_API_TOKEN": "your-token-here"
      }
    }
  }
}

Ou use servidores divididos (escolha as divisões que você precisa):

{
  "mcpServers": {
    "hetzner-servers": {
      "command": "npx",
      "args": ["-y", "-p", "@lazyants/hetzner-mcp-server", "hetzner-mcp-servers"],
      "env": { "HETZNER_API_TOKEN": "your-token-here" }
    },
    "hetzner-networking": {
      "command": "npx",
      "args": ["-y", "-p", "@lazyants/hetzner-mcp-server", "hetzner-mcp-networking"],
      "env": { "HETZNER_API_TOKEN": "your-token-here" }
    }
  }
}

Claude Desktop

Adicione ao claude_desktop_config.json:

{
  "mcpServers": {
    "hetzner": {
      "command": "npx",
      "args": ["-y", "@lazyants/hetzner-mcp-server"],
      "env": {
        "HETZNER_API_TOKEN": "your-token-here"
      }
    }
  }
}

Ferramentas

Servers (27 ferramentas) — servers

hetzner_list_servers, hetzner_get_server, hetzner_create_server, hetzner_update_server, hetzner_delete_server, hetzner_power_on, hetzner_power_off, hetzner_reboot, hetzner_reset, hetzner_shutdown, hetzner_rebuild_server, hetzner_resize_server, hetzner_enable_rescue, hetzner_disable_rescue, hetzner_get_server_metrics, hetzner_list_server_actions, hetzner_change_server_protection, hetzner_request_console, hetzner_enable_backup, hetzner_disable_backup, hetzner_change_alias_ips, hetzner_change_dns_ptr, hetzner_attach_server_to_network, hetzner_detach_server_from_network, hetzner_add_server_to_placement_group, hetzner_remove_server_from_placement_group, hetzner_reset_server_password

Images (7 ferramentas) — storage

hetzner_list_images, hetzner_get_image, hetzner_update_image, hetzner_delete_image, hetzner_create_image, hetzner_change_image_protection, hetzner_list_image_actions

ISOs (4 ferramentas) — config

hetzner_list_isos, hetzner_get_iso, hetzner_attach_iso, hetzner_detach_iso

Placement Groups (5 ferramentas) — config

hetzner_list_placement_groups, hetzner_get_placement_group, hetzner_create_placement_group, hetzner_update_placement_group, hetzner_delete_placement_group

Reference Data (7 ferramentas) — servers

hetzner_list_datacenters, hetzner_get_datacenter, hetzner_list_locations, hetzner_get_location, hetzner_list_server_types, hetzner_get_server_type, hetzner_get_pricing

hetzner_list_datacenters / hetzner_get_datacenter são descontinuadas pela Hetzner e removidas após 2026-10-01 (HTTP 410). Use hetzner_list_server_types (locations[].available/recommended) e hetzner_list_locations no lugar.

Networks (12 ferramentas) — networking

hetzner_list_networks, hetzner_get_network, hetzner_create_network, hetzner_update_network, hetzner_delete_network, hetzner_add_subnet, hetzner_delete_subnet, hetzner_add_route, hetzner_delete_route, hetzner_change_network_protection, hetzner_change_ip_range, hetzner_list_network_actions

Firewalls (9 ferramentas) — networking

hetzner_list_firewalls, hetzner_get_firewall, hetzner_create_firewall, hetzner_update_firewall, hetzner_delete_firewall, hetzner_set_firewall_rules, hetzner_apply_firewall, hetzner_remove_firewall, hetzner_list_firewall_actions

Load Balancers (21 ferramentas) — load-balancers

hetzner_list_load_balancers, hetzner_get_load_balancer, hetzner_create_load_balancer, hetzner_update_load_balancer, hetzner_delete_load_balancer, hetzner_add_lb_target, hetzner_remove_lb_target, hetzner_add_lb_service, hetzner_update_lb_service, hetzner_delete_lb_service, hetzner_change_lb_algorithm, hetzner_change_lb_type, hetzner_attach_lb_to_network, hetzner_detach_lb_from_network, hetzner_get_lb_metrics, hetzner_list_lb_types, hetzner_change_load_balancer_protection, hetzner_list_load_balancer_actions, hetzner_enable_lb_public_interface, hetzner_disable_lb_public_interface, hetzner_change_lb_dns_ptr

Certificates (7 ferramentas) — load-balancers

hetzner_list_certificates, hetzner_get_certificate, hetzner_create_certificate, hetzner_update_certificate, hetzner_delete_certificate, hetzner_retry_certificate, hetzner_list_certificate_actions

Volumes (10 ferramentas) — storage

hetzner_list_volumes, hetzner_get_volume, hetzner_create_volume, hetzner_update_volume, hetzner_delete_volume, hetzner_attach_volume, hetzner_detach_volume, hetzner_resize_volume, hetzner_change_volume_protection, hetzner_list_volume_actions

Floating IPs (10 ferramentas) — ips

hetzner_list_floating_ips, hetzner_get_floating_ip, hetzner_create_floating_ip, hetzner_update_floating_ip, hetzner_delete_floating_ip, hetzner_assign_floating_ip, hetzner_unassign_floating_ip, hetzner_change_floating_ip_rdns, hetzner_change_floating_ip_protection, hetzner_list_floating_ip_actions

Primary IPs (10 ferramentas) — ips

hetzner_list_primary_ips, hetzner_get_primary_ip, hetzner_create_primary_ip, hetzner_update_primary_ip, hetzner_delete_primary_ip, hetzner_assign_primary_ip, hetzner_unassign_primary_ip, hetzner_change_primary_ip_rdns, hetzner_change_primary_ip_protection, hetzner_list_primary_ip_actions

SSH Keys (5 ferramentas) — config

hetzner_list_ssh_keys, hetzner_get_ssh_key, hetzner_create_ssh_key, hetzner_update_ssh_key, hetzner_delete_ssh_key

DNS Zones (22 ferramentas) — dns

hetzner_list_zones, hetzner_get_zone, hetzner_create_zone, hetzner_update_zone, hetzner_delete_zone, hetzner_change_zone_protection, hetzner_change_zone_ttl, hetzner_change_zone_primary_nameservers, hetzner_export_zonefile, hetzner_import_zonefile, hetzner_list_zone_actions, hetzner_list_zone_rrsets, hetzner_get_zone_rrset, hetzner_create_zone_rrset, hetzner_update_zone_rrset, hetzner_delete_zone_rrset, hetzner_change_zone_rrset_protection, hetzner_change_zone_rrset_ttl, hetzner_add_zone_rrset_records, hetzner_remove_zone_rrset_records, hetzner_set_zone_rrset_records, hetzner_update_zone_rrset_records

Storage Boxes (29 ferramentas) — storage-boxes

Storage Boxes usam o host https://api.hetzner.com/v1. Token: HETZNER_STORAGE_API_TOKEN (recorre a HETZNER_API_TOKEN).

hetzner_list_storage_boxes, hetzner_create_storage_box, hetzner_get_storage_box, hetzner_update_storage_box, hetzner_delete_storage_box, hetzner_list_storage_box_folders, hetzner_list_storage_box_actions, hetzner_change_storage_box_protection, hetzner_change_storage_box_type, hetzner_reset_storage_box_password, hetzner_update_storage_box_access_settings, hetzner_rollback_storage_box_snapshot, hetzner_enable_storage_box_snapshot_plan, hetzner_disable_storage_box_snapshot_plan, hetzner_list_storage_box_types, hetzner_get_storage_box_type, hetzner_list_storage_box_snapshots, hetzner_create_storage_box_snapshot, hetzner_get_storage_box_snapshot, hetzner_update_storage_box_snapshot, hetzner_delete_storage_box_snapshot, hetzner_list_storage_box_subaccounts, hetzner_create_storage_box_subaccount, hetzner_get_storage_box_subaccount, hetzner_update_storage_box_subaccount, hetzner_delete_storage_box_subaccount, hetzner_change_storage_box_subaccount_home_directory, hetzner_reset_storage_box_subaccount_password, hetzner_update_storage_box_subaccount_access_settings

Segurança

  • Nunca envie seu token de API para o controle de versão
  • Use tokens somente leitura quando você precisar apenas listar/obter recursos
  • Ferramentas de criação e exclusão geram custos reais — a Hetzner cobra pelos recursos provisionados
  • O servidor lida automaticamente com a limitação de taxa (3.600 solicitações/hora, backoff exponencial em 429)

Isenção de responsabilidade

As operações de criação, atualização e exclusão podem gerar cobranças na sua conta Hetzner Cloud. Use tokens de API somente leitura sempre que possível. Os autores não são responsáveis por quaisquer custos incorridos.

Publicação de versões

As versões são publicadas por meio do evento de Release no GitHub. Fluxo dos mantenedores:

  1. Atualize a versão em package.json e server.json (npm run check-versions garante o alinhamento entre package.json#/version e server.json#/packages[0].version).
  2. Atualize o CHANGELOG.md.
  3. Faça o commit e depois o gh release create vX.Y.Z --notes-from-tag (ou escreva as notas de versão inline).
  4. O workflow Publish to npm + MCP Registry é executado automaticamente: ele npm publish com provenance, consulta o registry até que o tarball esteja disponível e, em seguida, envia o server.json correspondente para o MCP Registry via mcp-publisher.

O workflow ignora npm publish corretamente se a versão já estiver no npm (proteção de corte para versões publicadas parcialmente de forma manual).

Autenticação npm

A publicação usa npm Trusted Publishing: o token OIDC do GitHub (id-token: write) do workflow é trocado por um token de publicação de uso único em tempo de execução. Nenhum segredo NPM_TOKEN precisa existir no repositório.

A vinculação é configurada na interface web do npm (package → Trusted Publishers): provider GitHub Actions, organização lazyants, repositório hetzner-mcp-server, workflow publish-registry.yml.

Licença

FSL-1.1-MIT — consulte LICENSE para os termos completos. As versões 1.1.1 e anteriores permanecem licenciadas sob MIT.