Skip to main content
Glama
wbf-solutions

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

Hetzner Cloud MCP Server

Единственный Hetzner MCP с управлением сервером по SSH. API + SSH в одном инструменте.

PHP 8.1+ License: MIT MCP Protocol

Управляйте своей инфраструктурой Hetzner Cloud из Claude.ai, Claude Desktop, VS Code, Cursor или любого другого клиента, совместимого с MCP. Два уровня управления обеспечивают полный контроль:

  • Уровень 1 — Hetzner Cloud API: Питание сервера, метрики, снимки, резервные копии, брандмауэры, DNS-зоны и записи, режим восстановления, переустановка и изменение конфигурации сервера. Работает, даже если ОС сервера не отвечает.

  • Уровень 2 — SSH: Службы, логи, Nginx, MySQL, supervisor, cron, UFW, мониторинг диска/памяти/процессора. Настоящие инструменты системного администратора, а не просто обертки над API.

60 инструментов. Динамическая конфигурация для нескольких серверов. Self-hosted и открытый исходный код.


Почему именно этот MCP?

Все существующие Hetzner MCP только оборачивают Cloud API. Этот сервер добавляет полноценный уровень управления по SSH — инструменты, которые действительно нужны при управлении рабочими серверами. Два уровня, 60 инструментов, self-hosted.

Функция

Включено

Cloud API (питание сервера, метрики, снимки, резервные копии, брандмауэры, восстановление, переустановка)

Да

SSH управление (службы, логи, Nginx, MySQL, состояние системы)

Да

DNS управление (зоны, записи, CRUD)

Да

Мультисерверность (от 1 до N серверов из одного экземпляра)

Да

Защита от деструктивных действий (требуется подтверждение для опасных операций)

Да

Транспорт

SSE + Streamable HTTP

Язык

PHP 8.1+


Быстрый старт

Предварительные требования

  • PHP 8.1+ с расширением curl

  • Composer

  • Токен Hetzner Cloud API (Console > Security > API Tokens)

  • SSH-ключ для доступа к серверу (инструменты уровня 2)

1. Клонирование и установка

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

2. Настройка

cp .env.example .env

Отредактируйте файл .env, указав свои данные:

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. Настройка 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. Настройка 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. Подключение к Claude.ai

Settings > Connectors > Add custom connector:

  • Name: Hetzner Cloud MCP

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

Если вы установили MCP_API_KEY, передайте его через URL: ?mcp=sse&key=YOUR_MCP_API_KEY или настройте API-ключ в расширенных настройках коннектора как Bearer-токен.


Доступные инструменты (60)

Уровень 1 — Hetzner Cloud API (25 инструментов)

Инструмент

Описание

Деструктивный

server_info

Детали сервера: статус, IP, тип, дата-центр

server_metrics

Метрики CPU, диска или сети

server_power_on

Включение питания

server_power_off

Жесткое выключение питания

Подтверждение

server_shutdown

Корректное выключение через ACPI

server_reboot

Мягкая перезагрузка

server_reset

Жесткая перезагрузка

Подтверждение

server_reset_password

Сброс root-пароля

Подтверждение

server_rescue_enable

Включение режима восстановления

server_rescue_disable

Выключение режима восстановления

server_rebuild

Переустановка из образа (удаляет данные)

Подтверждение

server_change_type

Изменение тарифного плана сервера

Подтверждение

snapshot_create

Создание снимка

snapshot_list

Список снимков

snapshot_delete

Удаление снимка

Подтверждение

backup_enable

Включение резервных копий (+20% к стоимости)

backup_disable

Выключение резервных копий

Подтверждение

firewall_list

Список брандмауэров

firewall_get

Получение правил брандмауэра

firewall_set_rules

Замена всех правил брандмауэра

Подтверждение

firewall_apply_to_server

Применение брандмауэра к серверу

firewall_remove_from_server

Удаление брандмауэра с сервера

project_servers_list

Список всех серверов

ssh_keys_list

Список SSH-ключей

action_status

Проверка статуса асинхронного действия

DNS (8 инструментов, требуется HETZNER_DNS_TOKEN)

Инструмент

Описание

Деструктивный

dns_zones_list

Список DNS-зон

dns_zone_get

Получение деталей зоны

dns_zone_create

Создание DNS-зоны

dns_zone_delete

Удаление DNS-зоны

Подтверждение

dns_records_list

Список записей в зоне

dns_record_add

Добавление DNS-записи

dns_record_update

Обновление DNS-записи

dns_record_delete

Удаление DNS-записи

Подтверждение

Уровень 2 — SSH (27 инструментов)

Инструмент

Описание

ssh_service_status

Проверка статуса службы systemd

ssh_service_start

Запуск службы

ssh_service_stop

Остановка службы

ssh_service_restart

Перезапуск службы

ssh_services_list

Список запущенных служб

ssh_disk_usage

Использование диска (df -h)

ssh_memory_usage

Использование RAM (free -h)

ssh_cpu_load

Загрузка CPU + топ процессов

ssh_process_list

Топ процессов по памяти/CPU

ssh_uptime

Время работы сервера

ssh_nginx_test

Проверка синтаксиса конфигурации Nginx

ssh_nginx_reload

Перезагрузка Nginx (сначала проверяет конфиг)

ssh_nginx_sites_list

Список включенных сайтов

ssh_nginx_site_config

Просмотр конфигурации сайта Nginx

ssh_logs_nginx_error

Просмотр лога ошибок Nginx

ssh_logs_nginx_access

Просмотр лога доступа Nginx

ssh_logs_syslog

Просмотр системного лога

ssh_logs_journal

Просмотр журнала systemd

ssh_logs_supervisor

Просмотр логов supervisor

ssh_mysql_databases

Список баз данных MySQL

ssh_mysql_processlist

Показать процессы MySQL

ssh_mysql_query

SQL-запрос (только чтение)

ssh_cron_list

Список задач crontab

ssh_supervisor_status

Статусы программ supervisor

ssh_supervisor_restart

Перезапуск программы supervisor

ssh_ufw_status

Проверка брандмауэра UFW

ssh_exec

Выполнение команды (опасные команды заблокированы)


Аутентификация

Выберите режим, подходящий для вашего развертывания:

Режим

Конфигурация

Лучше всего для

Без аутентификации

MCP_API_KEY= (пусто), нет OAUTH_*

За VPN/брандмауэром, локальная разработка

API-ключ

MCP_API_KEY=your-key

Self-hosted, один пользователь/команда

API-ключ + OAuth

Установить MCP_API_KEY + переменные OAUTH_*

Многопользовательский режим, каталог коннекторов

API-ключ (рекомендуется для self-hosting)

Сгенерируйте ключ и установите его в .env:

openssl rand -hex 32

Клиенты передают ключ как ?key=XXX или Authorization: Bearer XXX.

OAuth 2.1 (опционально)

Для продвинутых развертываний или отправки в Anthropic Connectors Directory вы можете добавить интроспекцию токенов OAuth 2.1 вместе со статическим API-ключом. Это требует внешнего сервера авторизации OAuth с эндпоинтом интроспекции (RFC 7662). См. .env.example для переменных OAUTH_*.


Безопасность

  • Аутентификация: API-ключ через параметр запроса или заголовок Authorization: Bearer. Опциональная интроспекция OAuth 2.1. Валидация с защитой от атак по времени.

  • Защита от деструктивных действий: Все опасные операции требуют confirm=true.

  • Аннотации инструментов: Все инструменты включают readOnlyHint и destructiveHint согласно спецификации MCP.

  • Безопасность SSH: 29 заблокированных шаблонов команд (rm -rf, dd, mkfs, curl|sh, passwd, fdisk и т.д.).

  • SQL только для чтения: Разрешены только SELECT, SHOW, DESCRIBE, EXPLAIN.

  • Ограничение частоты запросов (Rate limiting): По IP с использованием атомарного flock().


Конфигурация

Определите любое количество серверов в .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 и DNS опциональны — инструменты автоматически отключаются, если они не настроены.

См. .env.example для полной справки.


Конфигурация клиента

Клиент

Подключение

Claude.ai

Settings > Connectors > Добавить кастомный коннектор с SSE URL

Claude Desktop

Добавить в claude_desktop_config.json

Claude Code

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

VS Code / Cursor

Расширение VS Code — скоро появится


Развертывание

Работает с VitoDeploy или ручной настройкой Nginx + PHP-FPM. Требует fastcgi_buffering off для SSE-стриминга. См. полное руководство по развертыванию в разделе Быстрый старт.


Участие в разработке

См. CONTRIBUTING.md. Уязвимости безопасности: labs@wbf.solutions.

Ссылки

Лицензия

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