dynu-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dynu-mcplist my DNS domains"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
dynu-mcp
MCP server for Dynu — a Dynamic DNS, domain registration, email hosting, and cloud compute (VPS) provider. Exposes the full public Dynu REST API v2 as MCP tools.
Overview
Stateless HTTP service. No credentials are ever persisted — each request supplies its own API key via a header, used only for the lifetime of that single request.
Supports concurrent requests; per-request credential isolation is done via Python
contextvars, not a global/shared client instance.Entry points:
POST /mcp(MCP protocol) andGET /health(health check).Default port:
8080(configurable viaMCP_HTTP_PORT).
Related MCP server: dynadot-mcp
Scope
30 tools, trimmed down from an initial 117-tool build covering Dynu's
full OpenAPI 3.0 spec. The platform this MCP runs behind aggregates every
enabled vendor MCP's tools into a single Gemini/Vertex model call, which
caps out at 512 total function declarations — with 50+ vendor MCPs
registered, each one needs to stay lean. Kept, across the same 6
categories: dns (8 — MSPbots' real GET /dns endpoint plus core
record/service CRUD), email (7 — service list/detail, account
create/read/update/delete), compute (4 — instance list/detail/start/stop),
domain (2 — list/detail), monitor (7, full category), ping (2, full
category). Cut entirely: domain registration administration (glue
records, name servers, auto-renewal, lock/unlock), email's
blacklist/whitelist/alias/distribution-list/DKIM management, and compute's
backup/snapshot/VNC/reinstall operations — see Known Gaps. MSPbots
itself only calls 1 endpoint (GET /dns), which is kept.
Authentication
Dynu authenticates with a single static API key (found in the API
Credentials area of the Dynu control panel). MSPbots' own integration
convention sends this key as the raw value of the API-Key header, and
this server forwards it exactly that way.
HEADER 授权参数说明
Header | 类型 | 是否必填 | 默认值 | 枚举值 | 字段描述 | Example |
| string | 是 | 无 | 无 | Dynu 静态 API Key,原样转发为上游 |
|
Missing the header returns 401:
{
"error": "Missing credentials",
"message": "This server requires the X-Dynu-Api-Key header",
"required_headers": ["X-Dynu-Api-Key"],
"optional_headers": []
}Environment Variables
Variable | 类型 | 是否必填 | 默认值 | 说明 |
| int | 否 |
| HTTP 监听端口 |
| string | 否 |
| HTTP 监听地址 |
| string | 否 |
| Dynu API 基础 URL |
MCP Endpoint
POST /mcp— MCP protocol (streamable HTTP transport)GET /health— health check, returns{"status": "ok", "service": "dynu-mcp", "transport": "http"}
Tool List
Tool names are derived from each operation's own summary in the vendor's
OpenAPI spec (e.g. "Get a list of domains for DNS service" →
dynu_get_list_domains_dns_service); the one naming collision (both
GET /ping and POST /ping share an identical summary) is disambiguated
with a _get/_post suffix. body parameters for POST operations are
accepted as a generic dict — see the vendor's OpenAPI spec's Models
section (linked below) for the exact field names/types of each resource.
Category | Tool | 功能 | 方法+路径 | 参数 |
dns |
| Add a new DNS record for DNS service. | POST /dns/{id}/record | id(必填), body(必填,dict) |
dns |
| Add a new DNS service. | POST /dns | body(必填,dict) |
dns |
| Get details of a DNS record for DNS service. | GET /dns/{id}/record/{dnsRecordId} | id(必填), dns_record_id(必填) |
dns |
| Get details of a domain for DNS service. | GET /dns/{id} | id(必填) |
dns |
| Get a list of DNS records for DNS service. | GET /dns/{id}/record | id(必填) |
dns |
| Get a list of domains for DNS service. | GET /dns | |
dns |
| Remove a DNS record from DNS service. | DELETE /dns/{id}/record/{dnsRecordId} | id(必填), dns_record_id(必填) |
dns |
| Update an existing DNS record for DNS service. | POST /dns/{id}/record/{dnsRecordId} | id(必填), dns_record_id(必填), body(必填,dict) |
domain |
| Get details of a domain registration domain. | GET /domain/{id} | id(必填) |
domain |
| Get a list of domains for domain registration service. | GET /domain | |
| Add a new email account for email service. | POST /email/{id}/account | id(必填), body(必填,dict) | |
| Get details of the email account. | GET /email/{id}/account/{accountId} | id(必填), account_id(必填) | |
| Get details of an email service. | GET /email/{id} | id(必填) | |
| Get a list of email accounts for email service. | GET /email/{id}/account | id(必填) | |
| Get a list of email services. | GET /email | ||
| Remove an email account from email service. | DELETE /email/{id}/account/{accountId} | id(必填), account_id(必填) | |
| Update an existing email account for email service. | POST /email/{id}/account/{accountId} | id(必填), account_id(必填), body(必填,dict) | |
compute |
| Get an instance. | GET /compute/instance/{id} | id(必填) |
compute |
| Get a list of instances. | GET /compute/instance | |
compute |
| Start an instance. | GET /compute/instance/{id}/start | id(必填) |
compute |
| Stop (suspend) an instance. | GET /compute/instance/{id}/stop | id(必填) |
monitor |
| Add a new monitor. | POST /monitor | body(必填,dict) |
monitor |
| Delete a monitor. | DELETE /monitor/{id} | id(必填) |
monitor |
| Get details of a monitor. | GET /monitor/{id} | id(必填) |
monitor |
| Get a list of monitors. | GET /monitor | |
monitor |
| Limits associated with monitoring. | GET /monitor/limit | |
monitor |
| Pause a monitor. | GET /monitor/{id}/pause | id(必填) |
monitor |
| Unpause a monitor. | GET /monitor/{id}/unpause | id(必填) |
ping |
| Ping the API server to obtain the pong response. | GET /ping | message(必填) |
ping |
| Ping the API server to obtain the pong response. | 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": {}
}
}'Live-verified (2026-07-29): dynu_get_list_domains_dns_service (the
same endpoint MSPbots itself calls, zero parameters) was called end-to-end
through this running server with a real API key and returned real DNS
domain records for the account.
API Reference
Overview: https://www.dynu.com/Support/API
Official OpenAPI 3.0 spec (Swagger): https://www.dynu.com/files/dynu.api/Dynu.API.OAS.zip
Known Gaps
Trimmed from 117 to 30 tools, by explicit user decision: the platform this MCP runs behind aggregates every enabled vendor MCP's tools into a single Gemini/Vertex model call, which caps at 512 total function declarations — with 50+ vendor MCPs registered, each needs to stay lean. Kept: MSPbots' real
GET /dnsendpoint, core DNS record/service CRUD (8), core email service/account CRUD (7), basic compute instance list/detail/start/stop (4), domain list/detail (2), and Monitor/Ping in full (9). Cut entirely: domain registrar administration (glue records, nameservers, auto-renewal, lock/unlock/cancel), email's blacklist/whitelist/alias/distribution-list/DKIM management, and compute's backup/snapshot/VNC/reinstall/password-change operations. Any of these can be re-added on request if a real use case needs them.Compute and domain write operations remain higher-stakes even after trimming —
dynu_start_instance/dynu_stop_suspend_instanceact on real VPS instances. Treat these as destructive/irreversible and confirm with a human before invoking.bodyparameters are untyped (dict) rather than fully modeled — the OpenAPI spec's Models section defines the exact schema per resource (e.g.DNS.dnsRecordA), but reproducing all of them as typed Python parameters was out of scope. Callers should shape thebodydict per the linked spec.Only
dynu_get_list_domains_dns_service(MSPbots' own endpoint) was live-verified with real account data. The remaining 29 tools are structurally correct (schema validated, MCP-protocoltools/listconfirmed, tool count re-verified after trimming) but not individually smoke-tested — several are write/destructive operations that would create, modify, or delete real DNS records, email accounts, or VPS instances, so they weren't exercised against the live test account.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityAmaintenanceMCP server for Dynadot domain registrar API3 — manage domains, DNS, contacts, transfers & more672411MIT
- FlicenseCqualityCmaintenanceMCP server for Dynadot API to manage domains, DNS, contacts, nameservers, folders, and aftermarket.1001
- Alicense-qualityCmaintenanceEnables DNS record CRUD operations (list, get, create, update, delete) through MCP tools, provider-agnostic and secure.MIT
- Flicense-qualityDmaintenanceEnables managing Cloudflare domains, DNS records, SSL certificates, zone operations, analytics, and cache purging via MCP or CLI.12
Related MCP Connectors
ClickUp MCP — wraps the ClickUp REST API v2 (BYO API key)
Official Sevalla MCP — full PaaS API access through just 2 tools.
34 production API tools over one hosted MCP endpoint.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/MSPbotsAI/dynu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server