@appouse/godaddy-dns-mcp
@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
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.