beget-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BEGET_API_LOGIN | Yes | Beget login | |
| BEGET_API_PASSWORD | Yes | Beget password |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| account_infoB | Сведения об аккаунте: баланс, тариф, ресурсы, сервер. |
| toggle_sshA | Переключить SSH-доступ для основного или FTP-аккаунта. Args: status: 1 = включить, 0 = выключить ftplogin: Логин FTP-аккаунта (если пусто — применяется к основному аккаунту) |
| stat_site_list_loadB | Средняя нагрузка по всем сайтам за месяц. |
| stat_db_list_loadA | Средняя нагрузка по всем базам данных за месяц. |
| stat_site_loadB | Детальная статистика нагрузки сайта (почасовая и посуточная за месяц). Args: site_id: ID сайта |
| stat_db_loadC | Детальная статистика нагрузки БД: CPU, размер, почасовая и посуточная. Args: db_name: Имя базы данных |
| backup_files_listC | Доступные файловые резервные копии. |
| backup_mysql_listC | Доступные резервные копии баз MySQL. |
| backup_restore_fileB | Откатить файлы из резервной копии. Args: backup_id: ID бэкапа (получить через backup_files_list) paths: Список путей для восстановления |
| backup_restore_mysqlA | Откатить базу MySQL из резервной копии. Args: backup_id: ID бэкапа (получить через backup_mysql_list) databases: Список имён баз для восстановления |
| backup_file_listA | Содержимое файлового бэкапа (файлы и каталоги). Args: backup_id: ID бэкапа (не указан = текущая копия) path: Путь от корня директории (пусто = корень) |
| backup_mysql_db_listB | Базы данных внутри резервной копии. Args: backup_id: ID бэкапа (не указан = текущая копия) |
| backup_download_fileA | Выгрузить файлы из бэкапа в корневую директорию аккаунта. Args: paths: Список путей для скачивания backup_id: ID бэкапа (не указан = текущая копия) |
| backup_download_mysqlB | Выгрузить дамп MySQL из бэкапа в корневую директорию аккаунта. Args: bases: Список имён баз данных backup_id: ID бэкапа (не указан = текущая копия) |
| backup_logB | Журнал операций восстановления и скачивания бэкапов. |
| cron_listC | Все cron-задачи аккаунта. |
| cron_addB | Зарегистрировать новую cron-задачу. Args: minutes: Минуты (0-59, * или */N) hours: Часы (0-23, * или */N) days: Дни месяца (1-31, * или */N) months: Месяцы (1-12, * или */N) weekdays: Дни недели (0-7, 0 и 7 = воскресенье) command: Команда для выполнения |
| cron_deleteB | Убрать cron-задачу. Args: task_id: ID задачи |
| cron_editA | Изменить параметры cron-задачи. Указывайте только обновляемые поля. Args: task_id: ID задачи minutes: Минуты (0-59, * или */N) hours: Часы (0-23, * или */N) days: Дни месяца (1-31, * или */N) months: Месяцы (1-12, * или */N) weekdays: Дни недели (0-7) command: Команда для выполнения |
| cron_toggleA | Переключить активность cron-задачи. Args: task_id: ID задачи (полученный из cron_list) is_hidden: 1 = выключить (скрыть), 0 = включить |
| cron_get_emailB | Адрес уведомлений о выполнении cron-задач. |
| cron_set_emailA | Назначить email для отчётов cron. Пустая строка отключает уведомления. Args: email: Email-адрес или пустая строка для отключения |
| dns_getA | DNS-записи FQDN плюс фактический ответ авторитативного NS. В Beget поддомен — отдельная сущность со своим getData. Если прямой запрос вернул METHOD_FAILED, функция пробует родительскую зону и возвращает её records с пометкой (актуально для DKIM типа mail._domainkey.site.ru, которые иногда хранятся на уровне родителя). ВАЖНО: отсутствие записи в зоне НЕ означает, что имя не резолвится. У зоны
бывает catch-all на shared-хостинг Beget, невидимый для dns/getData: имя
отвечает чужим адресом, хотя в выдаче API его нет. Поле Args: fqdn: Имя домена (site.ru или sub.site.ru) check_effective: Спросить авторитативный NS (по умолчанию да) |
| dns_verifyA | Подтвердить факт у авторитативного NS зоны: отдаётся ли значение миру. success от dns_set_* означает «принято панелью», а dns_get подтверждает ровно это — он читает тот же источник, куда писал. Авторитативный NS может отдавать старое значение ещё несколько минут. Запуск certbot в этом окне сжигает попытку и приближает лимит Let's Encrypt на домен. Тул опрашивает авторитативные NS зоны напрямую по UDP (мимо кеша любого
резолвера) до совпадения с Вручную сверять надо Args: fqdn: Имя, которое проверяем expect: Ожидаемое значение (IP для A, имя для CNAME/MX). Пусто — просто вернуть текущий ответ NS одним запросом, без ожидания type: Тип записи (A, AAAA, CNAME, MX, TXT, NS) timeout: Сколько секунд ждать совпадения (по умолчанию 120) |
| dns_set_aA | Задать A-запись (IPv4) для FQDN. Безопасно: делает getData → merge → changeRecords. Прочие записи (MX, TXT, CNAME, NS) в зоне сохраняются. Прежние A-записи заменяются на переданную. TTL: Beget управляет TTL на уровне зоны (типичный минимум 600 сек) и может игнорировать значение в запросе. Параметр оставлен для совместимости. Если в зоне есть CAA/SRV — вернёт ошибку (changeRecords их затирает). Передайте force=True, чтобы продолжить и потерять их. Args: fqdn: Имя домена address: IPv4-адрес (203.0.113.1) ttl: TTL в секундах (может быть проигнорирован; по умолчанию 600) force: Продолжить при наличии CAA/SRV (они будут удалены) |
| dns_set_cnameA | Задать CNAME-запись для поддомена. Безопасно мерджится с существующими записями. ВАЖНО: у Beget set_type у зоны при CNAME становится эксклюзивным (A/MX/TXT при этом не работают). Используйте CNAME только на поддоменах, где у вас нет других записей. Args: fqdn: Имя поддомена (www.site.ru) cname: Каноническое имя (site.ru — автоматически без trailing dot) ttl: TTL в секундах (см. dns_set_a) force: Продолжить при наличии CAA/SRV |
| dns_set_txtA | Задать TXT-запись (SPF, верификация, DKIM и пр.). Заменяет все TXT-записи одной. Если нужно добавить к существующим (верификация
Прочие записи (A/MX/CNAME/NS) сохраняются. Args: fqdn: Имя домена txtdata: Содержимое TXT-записи (v=spf1 redirect=_spf.yandex.net) ttl: TTL в секундах (см. dns_set_a) force: Продолжить при наличии CAA/SRV |
| dns_set_mxA | Задать MX-запись (почтовый сервер) домена. Заменяет все MX-записи одной. Прочие типы записей в зоне сохраняются. Для нескольких MX за один вызов — используйте dns_set_records. Args: fqdn: Имя домена exchange: Имя сервера (mx.yandex.net — trailing dot снимается автоматически) preference: Приоритет (меньше = выше) ttl: TTL в секундах (см. dns_set_a) force: Продолжить при наличии CAA/SRV |
| dns_set_recordsA | Задать несколько типов DNS-записей одним вызовом. По умолчанию — безопасный merge: типы, отсутствующие в records, сохраняются. replace_all=True — полная замена зоны (как делает голый dns/changeRecords): ВСЕ записи, кроме переданных, будут удалены. Args: fqdn: Имя домена records: JSON с записями, например: {"A": [{"address": "1.2.3.4"}], "MX": [{"exchange": "mx.yandex.net", "preference": 10}]} replace_all: True — полная замена зоны; по умолчанию False (merge) force: Продолжить при наличии CAA/SRV (будут удалены) |
| dns_patch_recordA | Частично изменить записи одного типа (add/remove/replace). Внутри: getData → merge → changeRecords. Прочие типы в зоне не затрагиваются. Удобно для многозначных TXT (SPF + DKIM + verification) и нескольких MX.
Примеры: type="TXT", add='[{"txtdata":"google-site-verification=abc"}]' — добавить к существующим TXT-записям type="TXT", remove='[{"txtdata":"v=spf1 include:old.example"}]' — снять старую SPF type="MX", replace='[{"exchange":"mx.yandex.net","preference":10}]' — заменить весь массив MX одной записью Args: fqdn: Имя домена type: Тип записи (A, AAAA, MX, TXT, CNAME, NS) add: JSON-массив для добавления remove: JSON-массив для удаления replace: JSON-массив для полной замены этого типа force: Продолжить при наличии CAA/SRV |
| domain_listB | Все домены, привязанные к аккаунту. |
| domain_addA | Зарегистрировать виртуальный домен (без покупки). Args: hostname: Имя домена (например: example.com) zone_id: ID доменной зоны (1 = .ru). Получить список: domain_zones |
| domain_deleteC | Убрать домен из аккаунта. Args: domain_id: ID домена |
| domain_zonesB | Доступные доменные зоны (.ru, .com и пр.). |
| domain_subdomainsA | Все поддомены аккаунта. Beget не отдаёт здесь www-алиасы, которые сам создаёт к поддомену (www.sub.site.ru к sub.site.ru): их нет ни в этом списке, ни в dns/getData. Записи такого имени смотреть через dns_get — он уходит на фолбэк к родительской зоне. |
| domain_php_versionB | Текущая версия PHP на домене. Args: full_fqdn: Полное имя домена (например: site.ru) |
| domain_change_phpB | Переключить версию PHP для домена. Args: full_fqdn: Полное имя домена (например: site.ru) php_version: Версия PHP (например: 8.1, 8.2, 8.3) |
| domain_add_subdomainA | Создать поддомен на базе существующего домена.
ВНИМАНИЕ: Beget не создаёт пустую сущность. Сразу после создания у поддомена
появляются собственные записи — A на shared-хостинг Beget плюс MX и TXT(SPF)
на beget.com. Имя начинает резолвиться на shared-хостинг ДО вашей A-записи,
а MX и SPF переживают dns_set_a (тот мерджит зону) и остаются молча. Ответ
тула показывает фактически созданные записи в поле Args: subdomain: Имя поддомена (например: blog) domain_id: ID родительского домена |
| domain_delete_subdomainC | Убрать поддомен. Args: subdomain_id: ID поддомена |
| domain_check_to_registerB | Проверка доступности домена для покупки. Args: hostname: Имя домена (например: example) zone_id: ID доменной зоны period: Период регистрации в годах (по умолчанию 1) |
| domain_get_directivesC | Пользовательские PHP-директивы домена. Args: full_fqdn: Полное имя домена (например: site.ru) |
| domain_add_directivesB | Задать PHP-директивы для домена. Args: full_fqdn: Полное имя домена directives: JSON-массив директив, например: [{"name": "max_execution_time", "value": "60"}] |
| domain_remove_directivesB | Снять PHP-директивы с домена. Args: full_fqdn: Полное имя домена directives: JSON-массив директив, например: [{"name": "max_execution_time", "value": "60"}] |
| ftp_listC | Все FTP-аккаунты на хостинге. |
| ftp_addB | Добавить FTP-аккаунт. Итоговый логин: login_suffix. Args: suffix: Суффикс логина homedir: Домашняя директория (например: site.ru/public_html) password: Пароль FTP |
| ftp_deleteC | Убрать FTP-аккаунт. Args: suffix: Суффикс логина FTP |
| ftp_change_passwordC | Сменить пароль FTP-аккаунта. Args: suffix: Суффикс логина FTP password: Новый пароль |
| mail_listB | Почтовые ящики на указанном домене. Args: domain: Домен (например: site.ru) |
| mail_createC | Добавить почтовый ящик. Args: domain: Домен (например: site.ru) mailbox: Имя ящика (часть до @) password: Пароль |
| mail_change_passwordB | Сменить пароль почтового ящика. Args: domain: Домен (например: site.ru) mailbox: Имя ящика (часть до @) password: Новый пароль |
| mail_deleteC | Убрать почтовый ящик. Args: domain: Домен mailbox: Имя ящика (часть до @) |
| mail_change_settingsB | Настройки почтового ящика: спам-фильтр и пересылка. Args: domain: Домен mailbox: Имя ящика spam_filter_status: 1 = включить спам-фильтр, 0 = выключить (-1 = не менять) spam_filter: Уровень фильтрации (-1 = не менять) forward_mail_status: no_forward / forward / forward_and_delete (пусто = не менять) |
| mail_forward_addB | Включить пересылку на указанный адрес. Args: domain: Домен mailbox: Имя ящика forward_mailbox: Email для пересылки |
| mail_forward_deleteB | Снять пересылку на указанный адрес. Args: domain: Домен mailbox: Имя ящика forward_mailbox: Email для удаления из пересылки |
| mail_forward_listC | Адреса пересылки для ящика. Args: domain: Домен mailbox: Имя ящика |
| mail_set_domain_mailC | Назначить catch-all ящик для домена. Args: domain: Домен domain_mailbox: Имя ящика, на который будет приходить вся почта домена |
| mail_clear_domain_mailC | Отключить catch-all для домена. Args: domain: Домен |
| mail_setup_yandexA | Прописать MX и SPF для Яндекс 360 одним вызовом. Ставит:
DKIM Яндекс настраивается отдельно (Я.Почта для домена → DKIM), там выдаётся ключ для mail._domainkey.<домен>. После получения ключа — dns_set_txt на соответствующий поддомен (либо сначала domain_add_subdomain). Не трогает A-записи, NS и прочие TXT. Если в зоне есть CAA/SRV — потребует force=True (они будут удалены). Args: fqdn: Имя домена (site.ru) force: Продолжить при наличии CAA/SRV |
| mail_setup_mailruA | Прописать MX и SPF для Mail.ru для бизнеса одним вызовом. Ставит:
DKIM настраивается в панели Mail.ru для бизнеса — ключ кладётся на mailru._domainkey.<домен>. Не трогает A-записи, NS и прочие TXT. Если в зоне есть CAA/SRV — потребует force=True. Args: fqdn: Имя домена force: Продолжить при наличии CAA/SRV |
| mysql_listC | Все базы данных MySQL на аккаунте. |
| mysql_addC | Добавить базу MySQL. Итоговое имя: login_suffix. Args: suffix: Суффикс имени БД password: Пароль для доступа к БД |
| mysql_deleteC | Убрать базу данных MySQL. Args: suffix: Суффикс имени БД |
| mysql_change_passwordB | Сменить пароль к базе MySQL. Args: suffix: Суффикс имени БД password: Новый пароль access: Хост доступа (по умолчанию localhost) |
| mysql_add_accessB | Открыть доступ к базе MySQL с указанного хоста. Args: suffix: Суффикс имени БД access: Откуда разрешить доступ (IP, домен, localhost или * для всех) password: Пароль (минимум 6 символов) |
| mysql_drop_accessB | Отозвать доступ к базе MySQL с указанного хоста. Args: suffix: Суффикс имени БД access: Хост доступа для удаления (IP, домен, localhost или *) |
| site_listA | Все сайты аккаунта и связанные с ними домены. |
| site_addA | Зарегистрировать сайт. В файловой системе появится каталог name/public_html. Args: name: Имя сайта (латиницей) |
| site_deleteB | Убрать сайт из аккаунта. Args: site_id: ID сайта (получить через site_list) |
| site_link_domainC | Назначить домен для сайта. Args: site_id: ID сайта domain_id: ID домена |
| site_unlink_domainC | Снять привязку домена от сайта. Args: domain_id: ID домена |
| site_freezeB | Блокировка изменений файлов сайта. Активируется в течение 5-10 минут. Args: site_id: ID сайта excluded_paths: Пути-исключения, где изменения останутся разрешены |
| site_unfreezeB | Снять блокировку изменений файлов сайта. Активируется в течение 5-10 минут. Args: site_id: ID сайта |
| site_is_frozenC | Статус блокировки файлов сайта. Args: site_id: ID сайта |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 73 tools
Most resource areas are distinct, but backup tools have confusingly similar names (backup_files_list vs backup_file_list, backup_mysql_list vs backup_mysql_db_list) and DNS offers many overlapping set/patch variants. Descriptions help clarify boundaries, but an agent could still misselect among near-duplicates.
All names use snake_case, but the pattern mixes resource_action (domain_delete), verb_resource (toggle_ssh), noun-only (account_info), and inconsistent verbs (add/create/set/change/remove/drop). It remains readable but not predictably uniform.
73 tools far exceeds the typical 3-15 range and the 50+ threshold for extreme mismatch. While the hosting domain is broad, many granular operations could be consolidated without losing functionality.
Coverage spans domains, DNS, mail, FTP, MySQL, sites, cron, backups, stats, and account management, giving strong lifecycle support. Gaps include SSL certificate management and direct file-manager operations, but most core hosting workflows are present.