Инструменты (tools)
MCP сервер предоставляет AI-модели набор инструментов (tools) для управления платформой Dockhost. Ниже tools сгруппированы по сущностям. Для работы большинства tools требуется projectId или ID соответствующей сущности — узнать ID проекта можно через project_list.
Ограничить набор доступных tools можно через scope — см. Ограничение доступа (scope). Колонка «Категория» соответствует категориям scope: Чтение = read, Изменение = write, Удаление = delete.
Проекты
| Tool | Описание | Категория |
|---|---|---|
| project_list | Список всех проектов пользователя | Чтение |
| project_get | Получить проект по ID (projectId) |
Чтение |
| project_create | Создать проект (name, опционально dnsNameservers, timezone) |
Изменение |
| project_delete | Удалить проект и все его ресурсы (projectId) |
Удаление |
| project_pause | Поставить проект на паузу (enabled: true) или возобновить (enabled: false) |
Изменение |
Проекты / DNS
| Tool | Описание | Категория |
|---|---|---|
| project_dns_get | Получить DNS-конфигурацию проекта: nameservers, TTL кэша, балансировка (projectId) |
Чтение |
| project_dns_update | Обновить DNS-настройки проекта (nameservers, cache, loadBalance, опционально hosts) |
Изменение |
| project_dns_hosts | Список DNS host-записей проекта (projectId) |
Чтение |
| project_dns_hosts_update | Полная замена DNS host-записей проекта (projectId, hosts) |
Изменение |
Обновление host-записей — всегда полная замена: записи, не включённые в запрос, удаляются. Перед вызовом project_dns_update или project_dns_hosts_update получите текущие записи через project_dns_hosts.
Контейнеры
| Tool | Описание | Категория |
|---|---|---|
| container_list | Список контейнеров проекта (projectId) |
Чтение |
| container_get | Получить контейнер по ID (containerId) |
Чтение |
| container_create | Создать контейнер из Docker-образа (projectId, name, image, cpu, memory и др.) |
Изменение |
| container_delete | Удалить контейнер и его реплики (containerId) |
Удаление |
| container_reload | Перезапустить контейнер, переприменив текущую конфигурацию (containerId) |
Изменение |
| container_update | Изменить контейнер: конфигурацию, образ, количество реплик (containerId, image, cpu, memory и др.) |
Изменение |
| container_pause | Поставить контейнер на паузу (enabled: true) или возобновить (enabled: false) |
Изменение |
| container_rescue_mode | Включить rescue mode для отладки падающего контейнера (enabled: true) или выключить (enabled: false) |
Изменение |
| container_stats | Текущее потребление ресурсов: CPU, память, сеть, рестарты (containerId) |
Чтение |
| container_replicas | Список реплик контейнера со статусом, ресурсами, IP и ошибками (containerId) |
Чтение |
| container_logs | Логи контейнера (containerId; опционально replicaId, tail, init, previous) |
Чтение |
| container_exec | Выполнить команду внутри контейнера (containerId, cmd; опционально replicaId) |
Изменение |
container_update имеет семантику полной замены конфигурации: image, cpu, memory обязательны, а пропущенные опциональные поля сбрасываются в значения по умолчанию (например, replicas → 1, variables/volumes/ports/configs → пустые массивы). Перед вызовом обязательно прочитайте текущую конфигурацию через container_get и передайте её полностью с применённым изменением.
Выполнение команды через container_exec ограничено 60 секундами. Избегайте длительных и блокирующих команд (sleep, tail -f, интерактивные оболочки) — используйте tool для диагностики (ls, cat, env, ps) и разовых проверок.
Сетевые домены и сертификаты
| Tool | Описание | Категория |
|---|---|---|
| network_domain_list | Список доменов проекта (projectId) |
Чтение |
| network_domain_get | Получить домен по ID (domainId) |
Чтение |
| network_domain_create | Создать домен (projectId, name, опционально внешний host) |
Изменение |
| network_domain_delete | Удалить домен (domainId; маршруты и TLS-сертификаты перестают работать) |
Удаление |
| network_domain_certificate_list | Список TLS-сертификатов домена: статус, срок действия (domainId) |
Чтение |
| network_domain_certificate_get | Получить TLS-сертификат по ID (certificateId) |
Чтение |
TLS-сертификаты выпускаются и продлеваются Dockhost автоматически — ручное создание не требуется.
Сетевые порты
| Tool | Описание | Категория |
|---|---|---|
| network_port_list | Список портов проекта (projectId) |
Чтение |
| network_port_get | Получить порт по ID (portId) |
Чтение |
| network_port_create | Создать порт — проброс внешнего трафика на сервис (projectId, name, serviceId, servicePort) |
Изменение |
| network_port_update | Обновить порт: целевой сервис и порт (portId, serviceId, servicePort) |
Изменение |
| network_port_delete | Удалить порт (portId; сервис становится недоступен снаружи через него) |
Удаление |
| network_port_reload | Переприменить конфигурацию порта (portId) |
Изменение |
| network_port_waf_get | Получить WAF-конфигурацию порта (portId) |
Чтение |
| network_port_waf_update | Обновить WAF-конфигурацию порта: IP-правила (portId, ipRules) |
Изменение |
Сетевые маршруты
| Tool | Описание | Категория |
|---|---|---|
| network_route_list | Список маршрутов проекта (projectId) |
Чтение |
| network_route_list_by_domain | Список маршрутов конкретного домена (domainId) |
Чтение |
| network_route_get | Получить маршрут по ID (routeId) |
Чтение |
| network_route_create | Создать маршрут: префикс пути домена на сервис или внешний upstream (projectId, name, domainId, path, опционально serviceId, port, type, upstream, rewrites) |
Изменение |
| network_route_update | Обновить маршрут: путь, целевой сервис, upstream (routeId, domainId, path, опционально serviceId, port, type, upstream, rewrites) |
Изменение |
| network_route_delete | Удалить маршрут (routeId; путь перестаёт обслуживаться) |
Удаление |
| network_route_reload | Переприменить конфигурацию маршрута (routeId) |
Изменение |
| network_route_waf_get | Получить WAF-конфигурацию маршрута (routeId) |
Чтение |
| network_route_waf_update | Обновить WAF-конфигурацию маршрута: ModSecurity, rate limiting, IP-правила, basic auth (routeId, ipRules и др.) |
Изменение |
В network_port_waf_update и network_route_waf_update набор IP-правил (ipRules) заменяется полностью: сначала получите существующие правила через network_port_waf_get или network_route_waf_get и включите те, что нужно сохранить.
Сетевые сервисы
| Tool | Описание | Категория |
|---|---|---|
| network_service_list | Список сервисов проекта (projectId) |
Чтение |
| network_service_list_by_container | Список сервисов, ведущих к контейнеру (containerId) |
Чтение |
| network_service_get | Получить сервис по ID (serviceId) |
Чтение |
| network_service_create | Создать сервис (projectId, containerIds, name, ports) |
Изменение |
| network_service_update | Обновить сервис: состав контейнеров, порты (serviceId) |
Изменение |
| network_service_delete | Удалить сервис (serviceId; порты и маршруты, ссылающиеся на него, перестают работать) |
Удаление |
| network_service_reload | Переприменить конфигурацию сервиса (serviceId) |
Изменение |
Репозитории Git и пайплайны
| Tool | Описание | Категория |
|---|---|---|
| repository_list_by_project | Список репозиториев проекта (projectId) |
Чтение |
| repository_get | Получить репозиторий по ID (repositoryId) |
Чтение |
| repository_create | Подключить Git-репозиторий к проекту (projectId, name, url, cpu, memory и др.) |
Изменение |
| repository_update | Обновить конфигурацию репозитория (repositoryId, url и др.) |
Изменение |
| repository_delete | Удалить привязку репозитория (repositoryId) |
Удаление |
| repository_build | Запустить новую сборку с последнего коммита отслеживаемой ветки (repositoryId) |
Изменение |
| repository_last_pipeline | Получить последний пайплайн репозитория (repositoryId) |
Чтение |
| repository_auto_update | Включить (enabled: true) или выключить (enabled: false) отслеживание изменений ветки |
Изменение |
| repository_pipeline_list | Список пайплайнов репозитория с пагинацией (repositoryId; опционально pageIndex, pageSize) |
Чтение |
| repository_pipeline_get | Получить пайплайн по ID (repositoryId, pipelineId) |
Чтение |
| repository_pipeline_build | Перезапустить существующий пайплайн (repositoryId, pipelineId) |
Изменение |
| repository_pipeline_cancel | Отменить выполняющийся пайплайн (repositoryId, pipelineId) |
Изменение |
| repository_pipeline_output | Полные логи сборки пайплайна (repositoryId, pipelineId) |
Чтение |
| repository_pipeline_errors | Только ошибки пайплайна — для диагностики упавшей сборки (repositoryId, pipelineId) |
Чтение |
Переменные окружения
| Tool | Описание | Категория |
|---|---|---|
| environment_variable_list | Список переменных окружения проекта (projectId) |
Чтение |
| environment_variable_get | Получить переменную по ID (variableId) |
Чтение |
| environment_variable_create | Создать проектную переменную (projectId, name, опционально value, global) |
Изменение |
| environment_variable_update | Обновить переменную (variableId, опционально value, global) |
Изменение |
| environment_variable_delete | Удалить переменную (variableId) |
Удаление |
Создание проектной переменной через environment_variable_create не добавляет её в контейнеры автоматически. Чтобы переменная попала в контейнер, либо пометьте её глобальной (global: true), либо задайте переменную контейнера со ссылкой на неё (MY_VAR=$NAME) через container_update.
Файлы конфигурации
| Tool | Описание | Категория |
|---|---|---|
| environment_config_list | Список конфигурационных файлов проекта (projectId) |
Чтение |
| environment_config_get | Получить конфигурационный файл по ID (configId) |
Чтение |
| environment_config_create | Создать конфигурационный файл (projectId, name, опционально data) |
Изменение |
| environment_config_update | Обновить содержимое конфигурационного файла (configId, data) |
Изменение |
| environment_config_delete | Удалить конфигурационный файл (configId) |
Удаление |
Создание конфига не монтирует его ни в один контейнер: чтобы смонтировать конфиг, укажите его имя в массиве configs при вызове container_create или container_update.
Сетевые диски и снапшоты
| Tool | Описание | Категория |
|---|---|---|
| volume_list | Список дисков проекта (projectId) |
Чтение |
| volume_get | Получить диск по ID (volumeId) |
Чтение |
| volume_create | Создать диск (projectId, name, type, size, mode) |
Изменение |
| volume_update | Обновить диск: увеличить размер или изменить режим доступа (volumeId, опционально size, mode) |
Изменение |
| volume_delete | Удалить диск (volumeId) |
Удаление |
| volume_copy | Создать копию диска с новым именем (volumeId, name, type, mode) |
Изменение |
| volume_pause | Поставить диск на паузу, остановив I/O (enabled: true), или возобновить (enabled: false) |
Изменение |
| volume_ftp | Включить или выключить FTP-доступ к диску (volumeId, enabled; опционально ssl, uid, gid; только для режима rwm) |
Изменение |
| volume_ftp_get | Получить FTP-конфигурацию диска: хост, порт, учётные данные, пассивные порты, SSL (volumeId) |
Чтение |
| volume_sftp | Включить или выключить SFTP-доступ к диску (volumeId, enabled; опционально uid, gid; только для режима rwm) |
Изменение |
| volume_sftp_get | Получить SFTP-конфигурацию диска: хост, порт, учётные данные (volumeId) |
Чтение |
| volume_snapshot_list | Список снапшотов диска (volumeId) |
Чтение |
| volume_snapshot_create | Создать ручной снапшот диска (volumeId) |
Изменение |
| volume_snapshot_delete | Удалить снапшот (volumeId, snapshotId) |
Удаление |
| volume_snapshot_prune | Удалить все снапшоты диска (volumeId) |
Удаление |
| volume_snapshot_rollback | Откатить диск к снапшоту (volumeId, snapshotId) |
Удаление |
| volume_snapshot_config_get | Получить конфигурацию снапшотов: расписание, лимит (volumeId) |
Чтение |
| volume_snapshot_config_update | Обновить конфигурацию снапшотов (volumeId, scheduleEnable, scheduleCron, maxSnapshots) |
Изменение |
volume_snapshot_rollback необратимо перезаписывает текущие данные диска состоянием снапшота, при этом диск должен быть на паузе (volume_pause с enabled: true).
volume_snapshot_config_update требует все поля сразу (полная замена конфигурации): сначала получите текущие значения через volume_snapshot_config_get и передайте их вместе с изменениями.