{"_id":"@appouse/godaddy-dns-mcp","name":"@appouse/godaddy-dns-mcp","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@appouse/godaddy-dns-mcp","version":"0.1.0","description":"Model Context Protocol (MCP) server for managing GoDaddy DNS records — list, add, replace and delete records from Claude and other AI assistants.","license":"MIT","homepage":"https://github.com/appouse/godaddy-dns-mcp#readme","repository":{"type":"git","url":"git+https://github.com/appouse/godaddy-dns-mcp.git"},"bugs":{"url":"https://github.com/appouse/godaddy-dns-mcp/issues"},"publishConfig":{"access":"public"},"type":"module","bin":{"godaddy-dns-mcp":"dist/cli.js"},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"engines":{"node":">=18.17.0"},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","dev":"tsx src/cli.ts","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck && npm test"},"keywords":["mcp","model-context-protocol","modelcontextprotocol","godaddy","dns","dns-records","claude","claude-code","ai","llm"],"dependencies":{"@modelcontextprotocol/sdk":"^1.30.0","zod":"^4.4.3"},"devDependencies":{"@types/node":"^24.10.1","tsx":"^4.23.1","typescript":"^5.9.3","vitest":"^4.1.10"},"_id":"@appouse/godaddy-dns-mcp@0.1.0","gitHead":"b107d3c3e7ed12217a51f0cc8530b54584328390","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-h2zHR/ZG6CxsDSb7diLisTral6UWAQ2QNWn5jPtmNOwIuXqdRzBW2d1ttPTXU/7tK4rMus08SBvBUu47U5xwLA==","shasum":"cbc434a32e51518fc3353f618c073655db4d60be","tarball":"https://registry.npmjs.org/@appouse/godaddy-dns-mcp/-/godaddy-dns-mcp-0.1.0.tgz","fileCount":31,"unpackedSize":63767,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@appouse%2fgodaddy-dns-mcp@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDJS+qmcUUBhBGWYio1AS2FRQI/pYlUdPto9SlaudegrQIhAPjyrRTFsmFV3g1XDGrLnB4abVchF8lttLrOo4QCSV+y"}]},"_npmUser":{"name":"mustafaulukaya","email":"mustafa.ulukaya@appouse.com"},"directories":{},"maintainers":[{"name":"mustafaulukaya","email":"mustafa.ulukaya@appouse.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/godaddy-dns-mcp_0.1.0_1785613362581_0.7102628692484929"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-01T19:42:42.417Z","0.1.0":"2026-08-01T19:42:42.725Z","modified":"2026-08-01T19:42:43.186Z"},"maintainers":[{"name":"mustafaulukaya","email":"mustafa.ulukaya@appouse.com"}],"description":"Model Context Protocol (MCP) server for managing GoDaddy DNS records — list, add, replace and delete records from Claude and other AI assistants.","homepage":"https://github.com/appouse/godaddy-dns-mcp#readme","keywords":["mcp","model-context-protocol","modelcontextprotocol","godaddy","dns","dns-records","claude","claude-code","ai","llm"],"repository":{"type":"git","url":"git+https://github.com/appouse/godaddy-dns-mcp.git"},"bugs":{"url":"https://github.com/appouse/godaddy-dns-mcp/issues"},"license":"MIT","readme":"# @appouse/godaddy-dns-mcp\n\n![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)\n![Node](https://img.shields.io/badge/node-%E2%89%A518.17-brightgreen)\n![MCP](https://img.shields.io/badge/MCP-compatible-green)\n\nA [Model Context Protocol (MCP)](https://modelcontextprotocol.io) 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.\n\nWritten in TypeScript and published to npm, so it runs with a single `npx` command — nothing to clone, install or build.\n\n## Table of Contents\n\n- [Quick start](#quick-start)\n- [Configuration](#configuration)\n- [Tools](#tools)\n- [Usage](#usage)\n- [Programmatic use](#programmatic-use)\n- [Security](#security)\n- [Development](#development)\n- [License](#license)\n\n## Quick start\n\nRequires **Node.js 18.17 or newer**.\n\n```bash\nnpx -y @appouse/godaddy-dns-mcp --help\n```\n\nThere is nothing to clone or build — `npx` fetches the package on demand. To install it permanently:\n\n```bash\nnpm install -g @appouse/godaddy-dns-mcp\ngodaddy-dns-mcp --version\n```\n\n## Configuration\n\n### 1. Get GoDaddy API credentials\n\nGenerate a **Production** API key at [developer.godaddy.com/keys](https://developer.godaddy.com/keys) — select *Production*, not OTE. OTE keys point at GoDaddy's test environment and will not see your real domains.\n\nThe 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.\n\n### 2. Register the server with your MCP client\n\n**Claude Code** — `claude mcp add`, or add this to the `mcpServers` section of `~/.claude.json`:\n\n```json\n\"godaddy-dns\": {\n  \"command\": \"npx\",\n  \"args\": [\"-y\", \"@appouse/godaddy-dns-mcp\"],\n  \"env\": {\n    \"GODADDY_API_KEY\": \"your_api_key\",\n    \"GODADDY_API_SECRET\": \"your_api_secret\"\n  }\n}\n```\n\n**Claude Desktop** — same block, in `claude_desktop_config.json`:\n\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"godaddy-dns\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@appouse/godaddy-dns-mcp\"],\n      \"env\": {\n        \"GODADDY_API_KEY\": \"your_api_key\",\n        \"GODADDY_API_SECRET\": \"your_api_secret\"\n      }\n    }\n  }\n}\n```\n\nRestart the client to pick up the change.\n\n### 3. Any other MCP client\n\nThe server speaks MCP over **stdio**. Run it directly:\n\n```bash\nGODADDY_API_KEY=your_key GODADDY_API_SECRET=your_secret npx -y @appouse/godaddy-dns-mcp\n```\n\n### Environment variables\n\n| Variable | Required | Description |\n|---|---|---|\n| `GODADDY_API_KEY` | yes | Production API key |\n| `GODADDY_API_SECRET` | yes | Matching API secret |\n\nCredentials 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.\n\n## Tools\n\n| Tool | Description |\n|---|---|\n| `list_dns_records` | List all records for a domain, optionally filtered by type and/or name |\n| `add_dns_record` | Add a record without overwriting existing ones of the same type (`PATCH`) |\n| `replace_dns_records` | Overwrite **all** records of a given type + name — use when exactly one record should exist (`PUT`). Supports `dry_run` |\n| `delete_dns_record` | Delete **all** records matching a given type and name. Supports `dry_run` |\n| `check_domain_availability` | Check whether a domain is available to register, with price and currency |\n\n**Supported record types:** A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, and anything else the GoDaddy API accepts.\n\n### Parameters\n\n| Parameter | Tools | Default | Notes |\n|---|---|---|---|\n| `domain` | all | — | Root domain, e.g. `example.com` |\n| `record_type` | all except availability | — | Case-insensitive; sent upper-cased |\n| `name` | all except availability | — | Subdomain; `@` for the apex, `*` for a wildcard |\n| `data` | add, replace | — | Record value (IP, hostname, text …) |\n| `ttl` | add, replace | `3600` | Seconds |\n| `priority` | add, replace | `0` | Only sent for `MX` and `SRV` |\n| `dry_run` | replace, delete | `false` | Preview only — makes no API call |\n| `check_type` | availability | `FAST` | `FAST` (cached) or `FULL` (authoritative) |\n\n> **Safety:** the two destructive tools accept `dry_run`. With `dry_run=true` they describe exactly what *would* change and make **no** call to the GoDaddy API — useful for confirming a change before committing to it.\n\n`list_dns_records` and `check_domain_availability` also return [structured content](https://modelcontextprotocol.io/specification/2025-06-18/server/tools#structured-content), so clients that support it get typed results instead of a JSON blob in text.\n\n## Usage\n\nOnce registered, ask your assistant in plain language:\n\n> \"Add a CNAME record for `app.example.com` pointing to `cname.vercel-dns.com`\"\n\n> \"List all A records for `example.com`\"\n\n> \"Show me what deleting the TXT record `_vercel` from `example.com` would do, but don't do it yet\"\n\n> \"Is `myneatidea.dev` still available?\"\n\n## Programmatic use\n\nThe package also ships as a library if you want to embed the tools in your own MCP server or script:\n\n```ts\nimport { createServer, GoDaddyClient, listDnsRecords } from \"@appouse/godaddy-dns-mcp\";\n\n// A ready-to-connect MCP server\nconst server = createServer();\n\n// Or just the API layer\nconst client = new GoDaddyClient({ apiKey: \"…\", apiSecret: \"…\" });\nconst records = await listDnsRecords(client, { domain: \"example.com\", record_type: \"A\" });\n```\n\n## Security\n\n- **Credentials never leave your machine.** They are read from the environment and sent only to `api.godaddy.com` over HTTPS, and are never included in tool output or error messages.\n- **Inputs are validated before a URL is built.** `domain`, `record_type` and `name` all 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.\n- **Requests time out** after 30 seconds instead of hanging a client session.\n- **`replace_dns_records` and `delete_dns_record` are destructive** — they affect *every* record matching the type and name. Prefer `dry_run=true` first, and remember that most MCP clients let you require approval per tool.\n- **Never commit API credentials.** Put them in your MCP client config or a local `.env` that is git-ignored.\n\n## Development\n\n```bash\ngit clone https://github.com/appouse/godaddy-dns-mcp\ncd godaddy-dns-mcp\nnpm install\n\nnpm run typecheck   # tsc --noEmit\nnpm test            # vitest — all HTTP traffic is stubbed\nnpm run build       # emit dist/\nnpm run dev         # run from source with tsx\n```\n\nTests 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.\n\nInspect the server interactively:\n\n```bash\nnpm run build\nnpx @modelcontextprotocol/inspector node dist/cli.js\n```\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","readmeFilename":"README.md","_rev":"1-82aa66e109cf2f45f86b8fbd10a62f8e"}