@appouse/godaddy-dns-mcp
Allows managing GoDaddy DNS records, including listing, adding, replacing, and deleting records, as well as checking domain availability for domains in a GoDaddy account.
Click on "Deploy 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., "@@appouse/godaddy-dns-mcp List all A records for example.com"
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.
@appouse/godaddy-dns-mcp
A Model Context Protocol (MCP) server for managing GoDaddy DNS records. It lets Claude and other AI assistants list, add, replace and delete DNS records on any domain in your GoDaddy account — and check whether a domain is still available to register.
Written in TypeScript and published to npm, so it runs with a single npx command — nothing to clone, install or build.
Table of Contents
Related MCP server: MCP Namecheap Server
Quick start
Requires Node.js 18.17 or newer.
npx -y @appouse/godaddy-dns-mcp --helpThere is nothing to clone or build — npx fetches the package on demand. To install it permanently:
npm install -g @appouse/godaddy-dns-mcp
godaddy-dns-mcp --versionConfiguration
1. Get GoDaddy API credentials
Generate a Production API key at developer.godaddy.com/keys — select Production, not OTE. OTE keys point at GoDaddy's test environment and will not see your real domains.
The API returns ACCESS_DENIED for keys on accounts with fewer than 10 domains or without an eligible plan; that is a GoDaddy account restriction, not a problem with this server.
2. Register the server with your MCP client
Claude Code — claude mcp add, or add this to the mcpServers section of ~/.claude.json:
"godaddy-dns": {
"command": "npx",
"args": ["-y", "@appouse/godaddy-dns-mcp"],
"env": {
"GODADDY_API_KEY": "your_api_key",
"GODADDY_API_SECRET": "your_api_secret"
}
}Claude Desktop — same block, in claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"godaddy-dns": {
"command": "npx",
"args": ["-y", "@appouse/godaddy-dns-mcp"],
"env": {
"GODADDY_API_KEY": "your_api_key",
"GODADDY_API_SECRET": "your_api_secret"
}
}
}
}Restart the client to pick up the change.
3. Any other MCP client
The server speaks MCP over stdio. Run it directly:
GODADDY_API_KEY=your_key GODADDY_API_SECRET=your_secret npx -y @appouse/godaddy-dns-mcpEnvironment variables
Variable | Required | Description |
| yes | Production API key |
| yes | Matching API secret |
Credentials are read at request time, so the server starts even when they are missing — it logs a warning to stderr and every tool call reports the problem instead of failing silently.
Tools
Tool | Description |
| List all records for a domain, optionally filtered by type and/or name |
| Add a record without overwriting existing ones of the same type ( |
| Overwrite all records of a given type + name — use when exactly one record should exist ( |
| Delete all records matching a given type and name. Supports |
| Check whether a domain is available to register, with price and currency |
Supported record types: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, and anything else the GoDaddy API accepts.
Parameters
Parameter | Tools | Default | Notes |
| all | — | Root domain, e.g. |
| all except availability | — | Case-insensitive; sent upper-cased |
| all except availability | — | Subdomain; |
| add, replace | — | Record value (IP, hostname, text …) |
| add, replace |
| Seconds |
| add, replace |
| Only sent for |
| replace, delete |
| Preview only — makes no API call |
| availability |
|
|
Safety: the two destructive tools accept
dry_run. Withdry_run=truethey describe exactly what would change and make no call to the GoDaddy API — useful for confirming a change before committing to it.
list_dns_records and check_domain_availability also return structured content, so clients that support it get typed results instead of a JSON blob in text.
Usage
Once registered, ask your assistant in plain language:
"Add a CNAME record for
app.example.compointing tocname.vercel-dns.com"
"List all A records for
example.com"
"Show me what deleting the TXT record
_vercelfromexample.comwould do, but don't do it yet"
"Is
myneatidea.devstill available?"
Programmatic use
The package also ships as a library if you want to embed the tools in your own MCP server or script:
import { createServer, GoDaddyClient, listDnsRecords } from "@appouse/godaddy-dns-mcp";
// A ready-to-connect MCP server
const server = createServer();
// Or just the API layer
const client = new GoDaddyClient({ apiKey: "…", apiSecret: "…" });
const records = await listDnsRecords(client, { domain: "example.com", record_type: "A" });Security
Credentials never leave your machine. They are read from the environment and sent only to
api.godaddy.comover HTTPS, and are never included in tool output or error messages.Inputs are validated before a URL is built.
domain,record_typeandnameall end up in the request path, so each is checked against a DNS-shaped pattern; slashes, query strings, percent escapes and..traversal are rejected before any request is made.Requests time out after 30 seconds instead of hanging a client session.
replace_dns_recordsanddelete_dns_recordare destructive — they affect every record matching the type and name. Preferdry_run=truefirst, and remember that most MCP clients let you require approval per tool.Never commit API credentials. Put them in your MCP client config or a local
.envthat is git-ignored.
Development
git clone https://github.com/appouse/godaddy-dns-mcp
cd godaddy-dns-mcp
npm install
npm run typecheck # tsc --noEmit
npm test # vitest — all HTTP traffic is stubbed
npm run build # emit dist/
npm run dev # run from source with tsxTests cover the API layer, the input validation, the MCP protocol surface (via an in-memory transport) and the built CLI as a real subprocess over stdio. No test ever contacts GoDaddy.
Inspect the server interactively:
npm run build
npx @modelcontextprotocol/inspector node dist/cli.jsLicense
MIT — see LICENSE.
Available Tools
5 toolsadd_dns_recordAdd DNS recordA
Add a DNS record without overwriting existing records of the same type (PATCH). Use replace_dns_records instead when exactly one record should exist.
Inputs: data (required), name (required), domain (required), record_type (required), +2 more.
check_domain_availabilityCheck domain availabilityARead-only
Check whether a domain is available to register. Returns availability, price (in micro-units of the returned currency) and whether the answer is definitive.
Inputs: domain (required), check_type. Returns: availability
delete_dns_recordDelete DNS recordsADestructiveIdempotent
Delete ALL DNS records of a given type and name for a domain. Pass dry_run=true to preview the deletion without applying it.
Inputs: name (required), domain (required), record_type (required), dry_run.
list_dns_recordsList DNS recordsARead-only
List DNS records for a domain. Optionally filter by record type, and by name as well (filtering by name requires a record type).
Inputs: domain (required), name, record_type. Returns: records
replace_dns_recordsReplace DNS recordsADestructiveIdempotent
Replace ALL DNS records of a given type+name (PUT) — this overwrites any existing records that match. Use it when exactly one record should exist and duplicates must be removed. Pass dry_run=true to preview the change.
Inputs: data (required), name (required), domain (required), record_type (required), +3 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each DNS tool targets a distinct operation: list, add, replace, delete, and domain availability. No two tools overlap in purpose; add vs. replace are clearly differentiated by overwrite semantics and dry-run options.
All tool names follow a consistent verb_noun pattern in snake_case: list_dns_records, add_dns_record, replace_dns_records, delete_dns_record, check_domain_availability. There is no mixing of styles or vague verbs.
Five tools is well-scoped for a DNS management server. The count covers the essential record operations plus a useful domain availability check without unnecessary bloat.
The tool set provides full CRUD coverage for DNS records: list (read), add (create), replace (update/overwrite), and delete. The dry-run options and record-type filters round out the surface, and the availability check addresses a common adjacent need.
Maintenance
Related MCP Connectors
MCP server for DNSimple — domains, DNS zone records, availability, pricing and contacts.
Official Porkbun MCP server: domains, DNS, SSL, hosting and Cloudflare via the Porkbun API.
Custom domains for SaaS and AI agents: search, register, connect DNS, and issue HTTPS over MCP.
Domains MCP — domain registration lookup + availability search over live RDAP (ICANN standard…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAuto-generated MCP server that enables interaction with Google's Cloud DNS API for managing DNS zones and records through natural language.-
- AlicenseBqualityDmaintenanceProvides integration with the Namecheap API for domain management operations, including domain listing, availability checks, and nameserver configuration. It allows users to interact with their Namecheap account through natural language commands in MCP-compatible clients.332 npm20MIT
- AlicenseBqualityCmaintenanceMCP server for Openprovider.com that enables domain management actions such as checking availability, registering domains, listing domains, and managing contacts through natural language.1016 npmMIT
- AlicenseAqualityDmaintenanceComprehensive MCP server for the Namecheap API, enabling domain management, DNS record control, nameserver settings, and domain registration from any MCP client.1032 npmMIT