dynu-mcp
dynu-mcp
MCP-сервер для Dynu — провайдера динамического DNS, регистрации доменов, почтового хостинга и облачных вычислений (VPS). Предоставляет полный публичный REST API v2 Dynu в виде инструментов MCP.
Обзор
Статистический HTTP-сервис. Учётные данные никогда не сохраняются — каждый запрос передаёт собственный API-ключ через заголовок, который используется только в течение этого одного запроса.
Поддерживает параллельные запросы; изоляция учётных данных для каждого запроса выполняется через
contextvarsPython, а не через глобальный/общий экземпляр клиента.Точки входа:
POST /mcp(протокол MCP) иGET /health(проверка работоспособности).Порт по умолчанию:
8080(настраивается черезMCP_HTTP_PORT).
Related MCP server: dynadot-mcp
Область применения
30 инструментов, сокращённых из первоначальной сборки из 117 инструментов, покрывающих полную спецификацию OpenAPI 3.0 Dynu. Платформа, за которой работает этот MCP, агрегирует инструменты всех включённых MCP-серверов в один вызов модели Gemini/Vertex, который ограничен 512 объявлениями функций — при 50+ зарегистрированных MCP-серверах каждый должен оставаться компактным. Сохранены те же 6 категорий: dns (8 — реальная конечная точка GET /dns от MSPbots плюс основные операции CRUD для записей/сервисов), email (7 — список/детали сервиса, создание/чтение/обновление/удаление учётных записей), compute (4 — список/детали/запуск/остановка экземпляров), domain (2 — список/детали), monitor (7, полная категория), ping (2, полная категория). Полностью исключены: администрирование регистрации доменов (glue-записи, серверы имён, автопродление, блокировка/разблокировка), управление чёрными/белыми списками, алиасами, списками рассылки и DKIM в почте, а также операции резервного копирования, снимков, VNC и переустановки в compute — см. Известные пробелы. Сам MSPbots вызывает только одну конечную точку (GET /dns), которая сохранена.
Аутентификация
Dynu аутентифицируется с помощью одного статического API-ключа (находится в разделе API Credentials панели управления Dynu). Соглашение об интеграции MSPbots отправляет этот ключ как исходное значение заголовка API-Key, и этот сервер пересылает его точно так же.
Описание параметров заголовка
Заголовок | Тип | Обязательность | Значение по умолчанию | Допустимые значения | Описание поля | Пример |
| string | да | нет | нет | Статический API-ключ Dynu, передаётся как есть в заголовок |
|
Отсутствие заголовка возвращает 401:
{
"error": "Missing credentials",
"message": "This server requires the X-Dynu-Api-Key header",
"required_headers": ["X-Dynu-Api-Key"],
"optional_headers": []
}Переменные окружения
Переменная | Тип | Обязательность | Значение по умолчанию | Описание |
| int | нет |
| Порт HTTP-прослушивания |
| string | нет |
| Адрес HTTP-прослушивания |
| string | нет |
| Базовый URL API Dynu |
Конечная точка MCP
POST /mcp— протокол MCP (потоковый HTTP-транспорт)GET /health— проверка работоспособности, возвращает{"status": "ok"}(чисто локальный зонд, не зависит от API Dynu)
Список инструментов
Имена инструментов выводятся из собственного описания каждой операции в спецификации OpenAPI поставщика (например, "Get a list of domains for DNS service" → dynu_get_list_domains_dns_service); единственное совпадение имён (оба GET /ping и POST /ping имеют одинаковое описание) разрешается суффиксом _get/_post. Параметры body для операций POST принимаются как универсальный dict — точные имена и типы полей каждого ресурса см. в разделе Models спецификации OpenAPI поставщика (ссылка ниже).
Категория | Инструмент | Функция | Метод+путь | Параметры |
dns |
| Добавить новую DNS-запись для DNS-сервиса. | POST /dns/{id}/record | id (обязательно), body (обязательно, dict) |
dns |
| Добавить новый DNS-сервис. | POST /dns | body (обязательно, dict) |
dns |
| Получить детали DNS-записи для DNS-сервиса. | GET /dns/{id}/record/{dnsRecordId} | id (обязательно), dns_record_id (обязательно) |
dns |
| Получить детали домена для DNS-сервиса. | GET /dns/{id} | id (обязательно) |
dns |
| Получить список DNS-записей для DNS-сервиса. | GET /dns/{id}/record | id (обязательно) |
dns |
| Получить список доменов для DNS-сервиса. | GET /dns | |
dns |
| Удалить DNS-запись из DNS-сервиса. | DELETE /dns/{id}/record/{dnsRecordId} | id (обязательно), dns_record_id (обязательно) |
dns |
| Обновить существующую DNS-запись для DNS-сервиса. | POST /dns/{id}/record/{dnsRecordId} | id (обязательно), dns_record_id (обязательно), body (обязательно, dict) |
domain |
| Получить детали домена регистрации домена. | GET /domain/{id} | id (обязательно) |
domain |
| Получить список доменов для сервиса регистрации доменов. | GET /domain | |
| Добавить новую учётную запись электронной почты для почтового сервиса. | POST /email/{id}/account | id (обязательно), body (обязательно, dict) | |
| Получить детали учётной записи электронной почты. | GET /email/{id}/account/{accountId} | id (обязательно), account_id (обязательно) | |
| Получить детали почтового сервиса. | GET /email/{id} | id (обязательно) | |
| Получить список учётных записей электронной почты для почтового сервиса. | GET /email/{id}/account | id (обязательно) | |
| Получить список почтовых сервисов. | GET /email | ||
| Удалить учётную запись электронной почты из почтового сервиса. | DELETE /email/{id}/account/{accountId} | id (обязательно), account_id (обязательно) | |
| Обновить существующую учётную запись электронной почты для почтового сервиса. | POST /email/{id}/account/{accountId} | id (обязательно), account_id (обязательно), body (обязательно, dict) | |
compute |
| Получить экземпляр. | GET /compute/instance/{id} | id (обязательно) |
compute |
| Получить список экземпляров. | GET /compute/instance | |
compute |
| Запустить экземпляр. | GET /compute/instance/{id}/start | id (обязательно) |
compute |
| Остановить (приостановить) экземпляр. | GET /compute/instance/{id}/stop | id (обязательно) |
monitor |
| Добавить новый монитор. | POST /monitor | body (обязательно, dict) |
monitor |
| Удалить монитор. | DELETE /monitor/{id} | id (обязательно) |
monitor |
| Получить детали монитора. | GET /monitor/{id} | id (обязательно) |
monitor |
| Получить список мониторов. | GET /monitor | |
monitor |
| Лимиты, связанные с мониторингом. | GET /monitor/limit | |
monitor |
| Приостановить монитор. | GET /monitor/{id}/pause | id (обязательно) |
monitor |
| Возобновить монитор. | GET /monitor/{id}/unpause | id (обязательно) |
ping |
| Пинговать API-сервер для получения ответа pong. | GET /ping | message (обязательно) |
ping |
| Пинговать API-сервер для получения ответа pong. | POST /ping | body (обязательно, dict) |
Пример тестирования
# Health check
curl -s http://localhost:8080/health
# Call a tool via the MCP protocol (streamable HTTP) — requires an
# initialize handshake first per the MCP spec; abbreviated example below
# shows the tool-call request body only:
curl -s -X POST http://localhost:8080/mcp -H "X-Dynu-Api-Key: <your-dynu-api-key>" -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -H "mcp-session-id: <session-id-from-initialize>" -d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dynu_get_list_domains_dns_service",
"arguments": {}
}
}'Проверено вживую (2026-07-29): dynu_get_list_domains_dns_service (та же конечная точка, которую вызывает сам MSPbots, без параметров) была вызвана сквозным образом через этот работающий сервер с реальным API-ключом и вернула реальные записи DNS-доменов для учётной записи.
Справочник по API
Официальная спецификация OpenAPI 3.0 (Swagger): https://www.dynu.com/files/dynu.api/Dynu.API.OAS.zip
Известные пробелы
Сокращено со 117 до 30 инструментов по явному решению пользователя: платформа, на которой работает этот MCP, агрегирует инструменты всех включённых вендорских MCP в один вызов модели Gemini/Vertex, который ограничен 512 объявлениями функций — при 50+ зарегистрированных вендорских MCP каждый должен оставаться компактным. Сохранены: реальный эндпоинт
GET /dnsот MSPbots, базовые операции CRUD для DNS-записей/сервисов (8), базовые операции CRUD для почтовых сервисов/аккаунтов (7), базовые операции со списком/детализацией/запуском/остановкой вычислительных инстансов (4), список/детализация доменов (2) и Monitor/Ping в полном объёме (9). Полностью удалены: администрирование регистратора доменов (glue-записи, nameservers, автопродление, блокировка/разблокировка/отмена), управление чёрным/белым списками, алиасами, списками рассылки и DKIM для почты, а также операции резервного копирования/снапшотов/VNC/переустановки/смены пароля для вычислительных ресурсов. Любые из них могут быть добавлены обратно по запросу, если для них появится реальный сценарий использования.Операции записи для вычислительных ресурсов и доменов остаются более рискованными даже после сокращения —
dynu_start_instance/dynu_stop_suspend_instanceвоздействуют на реальные VPS-инстансы. Относитесь к ним как к разрушительным/необратимым и подтверждайте с человеком перед вызовом.Параметры
bodyне типизированы (dict), а не полностью смоделированы — раздел Models в спецификации OpenAPI определяет точную схему для каждого ресурса (например,DNS.dnsRecordA), но воспроизведение всех их в виде типизированных параметров Python выходило за рамки задачи. Вызывающим следует формировать словарьbodyв соответствии с указанной спецификацией.Только
dynu_get_list_domains_dns_service(собственный эндпоинт MSPbots) был проверен вживую с реальными данными аккаунта. Остальные 29 инструментов структурно корректны (схема проверена,tools/listпо протоколу MCP подтверждён, количество инструментов перепроверено после сокращения), но не были индивидуально протестированы дымовым тестированием — несколько из них являются операциями записи/разрушения, которые создали бы, изменили или удалили реальные DNS-записи, почтовые аккаунты или VPS-инстансы, поэтому они не выполнялись на живом тестовом аккаунте.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for DNSimple — domains, DNS zone records, availability, pricing and contacts.
Remote MCP for 1,500+ APIs. Vault-managed credentials; OAuth or API key. Search, load, and execute.
135 MCP tools: geo, email, phone, company, DNS, FX, equities, weather, tax, econ, intel — one key.
49 developer tools via MCP: DNS, WHOIS, IP lookup, JWT, hashing, QR, and more.
Related MCP Servers
- AlicenseBqualityAmaintenanceMCP server for Dynadot domain registrar API3 — manage domains, DNS, contacts, transfers & more6736 npm1MIT
- FlicenseCqualityCmaintenanceMCP server for Dynadot API to manage domains, DNS, contacts, nameservers, folders, and aftermarket.1001-
- AlicenseNot gradedqualityDmaintenanceEnables DNS record CRUD operations (list, get, create, update, delete) through MCP tools, provider-agnostic and secure.MIT
- FlicenseNot gradedqualityDmaintenanceEnables managing Cloudflare domains, DNS records, SSL certificates, zone operations, analytics, and cache purging via MCP or CLI.5 npm-