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
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
| Comando | Domínios | Ferramentas |
|---|---|---|
hetzner-mcp-server | Todos os 15 domínios | 185 |
hetzner-mcp-servers | Servidores, Datacenters/Locations/Server Types, Pricing | 34 |
hetzner-mcp-networking | Networks, Firewalls | 21 |
hetzner-mcp-load-balancers | Load Balancers, Certificates | 28 |
hetzner-mcp-ips | Floating IPs, Primary IPs | 20 |
hetzner-mcp-storage | Volumes, Images | 17 |
hetzner-mcp-storage-boxes | Storage Boxes (+ snapshots, subaccounts, types) | 29 |
hetzner-mcp-config | SSH Keys, ISOs, Placement Groups | 14 |
hetzner-mcp-dns | DNS Zones | 22 |
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_datacentersão descontinuadas pela Hetzner e removidas após 2026-10-01 (HTTP 410). Usehetzner_list_server_types(locations[].available/recommended) ehetzner_list_locationsno 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:
- Atualize a versão em
package.jsoneserver.json(npm run check-versionsgarante o alinhamento entrepackage.json#/versioneserver.json#/packages[0].version). - Atualize o
CHANGELOG.md. - Faça o commit e depois o
gh release create vX.Y.Z --notes-from-tag(ou escreva as notas de versão inline). - O workflow
Publish to npm + MCP Registryé executado automaticamente: elenpm publishcom provenance, consulta o registry até que o tarball esteja disponível e, em seguida, envia oserver.jsoncorrespondente para o MCP Registry viamcp-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.