Skip to main content
Glama
wbf-solutions

Hetzner Cloud MCP Server — Cloud API + SSH management (60 tools)

Servidor MCP de Hetzner Cloud

El único MCP de Hetzner con gestión de servidores SSH. API + SSH en una sola herramienta.

PHP 8.1+ License: MIT MCP Protocol

Gestione su infraestructura de Hetzner Cloud desde Claude.ai, Claude Desktop, VS Code, Cursor o cualquier cliente compatible con MCP. Dos capas de gestión le brindan un control total:

  • Capa 1 — API de Hetzner Cloud: Energía del servidor, métricas, instantáneas, copias de seguridad, cortafuegos, zonas y registros DNS, modo rescate, reconstrucción y reescalado del servidor. Funciona incluso cuando el sistema operativo del servidor no responde.

  • Capa 2 — SSH: Servicios, registros, Nginx, MySQL, supervisor, cron, UFW, monitorización de disco/memoria/CPU. Herramientas reales de administración de sistemas, no solo envoltorios de API.

60 herramientas. Configuración dinámica de múltiples servidores. Autoalojado y de código abierto.


¿Por qué este MCP?

Todos los MCP de Hetzner existentes solo envuelven la API de Cloud. Este añade una capa completa de gestión SSH: las herramientas que realmente necesita al gestionar servidores en producción. Dos capas, 60 herramientas, autoalojado.

Característica

Incluido

API de Cloud (energía del servidor, métricas, instantáneas, copias de seguridad, cortafuegos, rescate, reconstrucción)

Gestión SSH (servicios, registros, Nginx, MySQL, salud del sistema)

Gestión DNS (zonas, registros, CRUD)

Multi-servidor (de 1 a N servidores desde una única instancia)

Protecciones contra acciones destructivas (se requiere confirmación para operaciones peligrosas)

Transporte

SSE + HTTP con streaming

Lenguaje

PHP 8.1+


Inicio rápido

Requisitos previos

1. Clonar e instalar

git clone https://github.com/wbf-solutions/hetzner-cloud-mcp.git
cd hetzner-cloud-mcp
composer install

2. Configurar

cp .env.example .env

Edite .env con sus detalles:

HETZNER_API_TOKEN=your-cloud-api-token

SERVERS=web
SERVER_WEB_ID=12345678
SERVER_WEB_IP=1.2.3.4
SERVER_WEB_SSH_USER=root

SSH_KEY_PATH=/root/.ssh/id_ed25519

MCP_API_KEY=your-random-key    # generate with: openssl rand -hex 32

3. Configurar la clave SSH

ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -N ""
ssh-copy-id -i /root/.ssh/id_ed25519.pub root@1.2.3.4

4. Configurar Nginx

server {
    listen 443 ssl;
    server_name mcp.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/mcp.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mcp.yourdomain.com/privkey.pem;

    root /var/www/hetzner-cloud-mcp;
    index api.php;

    location / {
        try_files $uri /api.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_buffering off;
        fastcgi_read_timeout 600;
    }
}

5. Conectar a Claude.ai

Configuración > Conectores > Añadir conector personalizado:

  • Nombre: Hetzner Cloud MCP

  • URL: https://mcp.yourdomain.com/api.php

Si configuró MCP_API_KEY, pásela a través de la URL: ?mcp=sse&key=YOUR_MCP_API_KEY o configure la clave API en la Configuración avanzada del conector como un token Bearer.


Herramientas disponibles (60)

Capa 1 — API de Hetzner Cloud (25 herramientas)

Herramienta

Descripción

Destructiva

server_info

Detalles del servidor: estado, IP, tipo, centro de datos

server_metrics

Métricas de CPU, disco o red

server_power_on

Encender

server_power_off

Apagado forzado

Confirmar

server_shutdown

Apagado ACPI elegante

server_reboot

Reinicio suave

server_reset

Reinicio forzado

Confirmar

server_reset_password

Restablecer contraseña de root

Confirmar

server_rescue_enable

Habilitar modo rescate

server_rescue_disable

Deshabilitar modo rescate

server_rebuild

Reconstruir desde imagen (borra datos)

Confirmar

server_change_type

Reescalar plan del servidor

Confirmar

snapshot_create

Crear instantánea

snapshot_list

Listar instantáneas

snapshot_delete

Eliminar instantánea

Confirmar

backup_enable

Habilitar copias de seguridad (+20% coste)

backup_disable

Deshabilitar copias de seguridad

Confirmar

firewall_list

Listar cortafuegos

firewall_get

Obtener reglas de cortafuegos

firewall_set_rules

Reemplazar todas las reglas de cortafuegos

Confirmar

firewall_apply_to_server

Aplicar cortafuegos al servidor

firewall_remove_from_server

Eliminar cortafuegos del servidor

project_servers_list

Listar todos los servidores

ssh_keys_list

Listar claves SSH

action_status

Comprobar estado de acción asíncrona

DNS (8 herramientas, requiere HETZNER_DNS_TOKEN)

Herramienta

Descripción

Destructiva

dns_zones_list

Listar zonas DNS

dns_zone_get

Obtener detalles de zona

dns_zone_create

Crear zona DNS

dns_zone_delete

Eliminar zona DNS

Confirmar

dns_records_list

Listar registros en zona

dns_record_add

Añadir registro DNS

dns_record_update

Actualizar registro DNS

dns_record_delete

Eliminar registro DNS

Confirmar

Capa 2 — SSH (27 herramientas)

Herramienta

Descripción

ssh_service_status

Comprobar estado del servicio systemd

ssh_service_start

Iniciar un servicio

ssh_service_stop

Detener un servicio

ssh_service_restart

Reiniciar un servicio

ssh_services_list

Listar servicios en ejecución

ssh_disk_usage

Espacio en disco (df -h)

ssh_memory_usage

Uso de RAM (free -h)

ssh_cpu_load

Carga de CPU + procesos principales

ssh_process_list

Procesos principales por memoria/CPU

ssh_uptime

Tiempo de actividad del servidor

ssh_nginx_test

Probar sintaxis de configuración de Nginx

ssh_nginx_reload

Recargar Nginx (prueba primero)

ssh_nginx_sites_list

Listar sitios habilitados

ssh_nginx_site_config

Ver configuración de sitio Nginx

ssh_logs_nginx_error

Seguir registro de errores de Nginx

ssh_logs_nginx_access

Seguir registro de acceso de Nginx

ssh_logs_syslog

Seguir registro del sistema

ssh_logs_journal

Ver diario de systemd

ssh_logs_supervisor

Ver registros de supervisor

ssh_mysql_databases

Listar bases de datos MySQL

ssh_mysql_processlist

Mostrar procesos MySQL

ssh_mysql_query

Consulta SQL de solo lectura

ssh_cron_list

Listar entradas de crontab

ssh_supervisor_status

Estados de programas de supervisor

ssh_supervisor_restart

Reiniciar programa de supervisor

ssh_ufw_status

Comprobar cortafuegos UFW

ssh_exec

Ejecutar comando (comandos peligrosos bloqueados)


Autenticación

Elija el modo que se ajuste a su despliegue:

Modo

Configuración

Ideal para

Sin autenticación

MCP_API_KEY= (vacío), sin OAUTH_*

Detrás de VPN/cortafuegos, desarrollo local

Clave API

MCP_API_KEY=su-clave

Autoalojado, usuario único/equipo

Clave API + OAuth

Establecer variables MCP_API_KEY + OAUTH_*

Multi-usuario, Directorio de Conectores

Clave API (recomendado para autoalojamiento)

Genere una clave y establézcala en .env:

openssl rand -hex 32

Los clientes pasan la clave como ?key=XXX o Authorization: Bearer XXX.

OAuth 2.1 (opcional)

Para despliegues avanzados o envío al Directorio de Conectores de Anthropic, puede añadir introspección de token OAuth 2.1 junto con la clave API estática. Esto requiere un servidor de autorización OAuth externo con un punto final de introspección (RFC 7662). Consulte .env.example para las variables OAUTH_*.


Seguridad

  • Autenticación: Clave API mediante parámetro de consulta o cabecera Authorization: Bearer. Introspección OAuth 2.1 opcional. Validación segura contra ataques de temporización.

  • Protecciones contra acciones destructivas: Todas las operaciones peligrosas requieren confirm=true.

  • Anotaciones de herramientas: Todas las herramientas incluyen readOnlyHint y destructiveHint según la especificación MCP.

  • Seguridad SSH: 29 patrones de comandos bloqueados (rm -rf, dd, mkfs, curl|sh, passwd, fdisk, etc.).

  • SQL de solo lectura: Solo se permiten SELECT, SHOW, DESCRIBE, EXPLAIN.

  • Limitación de tasa: Por IP con flock() atómico.


Configuración

Defina cualquier número de servidores en .env:

SERVERS=web,staging
SERVER_WEB_ID=12345678
SERVER_WEB_IP=1.2.3.4
SERVER_WEB_SSH_USER=root
SERVER_WEB_ALIASES=production,prod
SERVER_STAGING_ID=87654321
SERVER_STAGING_IP=5.6.7.8
DEFAULT_SERVER=web

SSH y DNS son opcionales: las herramientas se deshabilitan automáticamente cuando no están configuradas.

Consulte .env.example para la referencia completa.


Configuración del cliente

Cliente

Conexión

Claude.ai

Configuración > Conectores > Añadir conector personalizado con URL SSE

Claude Desktop

Añadir a claude_desktop_config.json

Claude Code

claude mcp add --transport http hetzner URL --header "Authorization: Bearer KEY"

VS Code / Cursor

Extensión de VS Code — próximamente


Despliegue

Funciona con VitoDeploy o configuración manual de Nginx + PHP-FPM. Requiere fastcgi_buffering off para streaming SSE. Consulte la guía completa de despliegue en la sección Inicio rápido.


Contribución

Consulte CONTRIBUTING.md. Vulnerabilidades de seguridad: labs@wbf.solutions.

Enlaces

Licencia

MIT — WBF Solutions | labs@wbf.solutions

-
security - not tested
-
license - not tested
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wbf-solutions/hetzner-cloud-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server