dynu-mcp
dynu-mcp
用于 Dynu 的 MCP 服务器——Dynu 是一家提供动态 DNS、域名注册、电子邮件托管和云计算(VPS)服务的提供商。它将完整的公共 Dynu REST API v2 暴露为 MCP 工具。
概述
无状态 HTTP 服务。绝不持久化任何凭据——每个请求通过请求头提供自己的 API 密钥,该密钥仅在该单个请求的生命周期内使用。
支持并发请求;每个请求的凭据隔离通过 Python
contextvars实现,而不是使用全局/共享客户端实例。入口点:
POST /mcp(MCP 协议)和GET /health(健康检查)。默认端口:
8080(可通过MCP_HTTP_PORT配置)。
Related MCP server: dynadot-mcp
范围
30 个工具,从最初覆盖 Dynu 完整 OpenAPI 3.0 规范的 117 个工具构建中精简而来。此 MCP 运行所在平台会将每个已启用的供应商 MCP 的工具聚合到一次 Gemini/Vertex 模型调用中,该调用最多支持 512 个函数声明——在注册了 50 多个供应商 MCP 的情况下,每个 MCP 都需要保持精简。保留的工具涵盖相同的 6 个类别:dns(8 个——MSPbots 实际的 GET /dns 端点以及核心记录/服务 CRUD)、email(7 个——服务列表/详情、账户创建/读取/更新/删除)、compute(4 个——实例列表/详情/启动/停止)、domain(2 个——列表/详情)、monitor(7 个,完整类别)、ping(2 个,完整类别)。完全移除:域名注册管理(粘合记录、名称服务器、自动续费、锁定/解锁)、电子邮件的黑名单/白名单/别名/分发列表/DKIM 管理,以及计算服务的备份/快照/VNC/重装操作——请参阅 已知缺口。MSPbots 本身只调用 1 个端点(GET /dns),该端点已保留。
身份验证
Dynu 使用单个静态 API 密钥进行身份验证(可在 Dynu 控制面板的 API 凭据区域找到)。MSPbots 自身的集成约定将该密钥作为 API-Key 请求头的原始值发送,此服务器会原样转发。
HEADER 授权参数说明
Header | 类型 | 是否必填 | 默认值 | 枚举值 | 字段描述 | Example |
| string | 是 | 无 | 无 | Dynu 静态 API Key,原样转发为上游 |
|
缺少该请求头将返回 401:
{
"error": "Missing credentials",
"message": "This server requires the X-Dynu-Api-Key header",
"required_headers": ["X-Dynu-Api-Key"],
"optional_headers": []
}环境变量
Variable | 类型 | 是否必填 | 默认值 | 说明 |
| int | 否 |
| HTTP 监听端口 |
| string | 否 |
| HTTP 监听地址 |
| string | 否 |
| Dynu API 基础 URL |
MCP 端点
POST /mcp— MCP 协议(可流式 HTTP 传输)GET /health— 健康检查,返回{"status": "ok"}(纯本地存活探针,不依赖 Dynu API)
工具列表
工具名称源自供应商 OpenAPI 规范中每个操作自身的摘要(例如“Get a list of domains for DNS service” → dynu_get_list_domains_dns_service);唯一的重名冲突(GET /ping 和 POST /ping 共享相同的摘要)通过 _get/_post 后缀来消除歧义。POST 操作的 body 参数作为通用 dict 接受——有关每个资源的确切字段名称/类型,请参阅供应商 OpenAPI 规范的 Models 部分(链接如下)。
Category | Tool | 功能 | 方法+路径 | 参数 |
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 |
| Ping API 服务器以获取 pong 响应。 | GET /ping | message(必填) |
ping |
| 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 的情况下,每个都必须保持精简。保留:MSPbots 真实的
GET /dns端点、核心 DNS 记录/服务 CRUD(8 个)、核心邮件服务/账户 CRUD(7 个)、基础计算实例列表/详情/启动/停止(4 个)、域名列表/详情(2 个),以及完整的 Monitor/Ping(9 个)。完全移除:域名注册商管理(glue 记录、nameservers、自动续费、锁定/解锁/取消)、邮件的黑名单/白名单/别名/通讯组列表/DKIM 管理,以及计算的备份/快照/VNC/重装/密码修改操作。如有真实用例需要,这些均可按请求重新添加。即使经过精简,计算和 DNS 写入操作的风险仍然较高——
dynu_start_instance/dynu_stop_suspend_instance作用于真实的 VPS 实例。请将这些操作视为破坏性/不可逆操作,并在调用前与人工确认。body参数是未类型化的(dict),而非完整建模——OpenAPI 规范的 Models 部分定义了每个资源的确切 schema(例如DNS.dnsRecordA),但将所有这些都重现为类型化的 Python 参数超出了范围。调用方应根据所链接的规范来构造body字典。只有
dynu_get_list_domains_dns_service(MSPbots 自己的端点)使用真实账户数据进行了在线验证。其余 29 个工具在结构上是正确的(schema 已验证、MCP 协议tools/list已确认、精简后工具数量已重新核实),但未逐一进行冒烟测试——其中几个是写入/破坏性操作,会创建、修改或删除真实的 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-