A Domain MCP server that brings natural language domain management to Claude, Cursor, and other AI assistants. Manage Dynadot domains, DNS, contacts, and transfers through conversational commands powered by the Model Context Protocol (MCP).
🚀 AI-powered domain operations - Just ask: "List my domains", "Register example.com", or "Set up DNS"
- Features
- Examples in Action
- Common Use Cases
- Quick Installation
- Configuration Options
- Usage
- MCP Tools
- Development
- Testing
- API Quirks & Known Issues
- Architecture
- Documentation
- FAQ
- Support
- License
- 🤖 Natural Language Domain Management: Use AI assistants like Claude and Cursor to manage domains conversationally - no API knowledge needed
- 📦 Complete Domain MCP Server: 106 Dynadot API actions across 10 composite MCP tools for domains, DNS, transfers, and more
- ⚡ Production-Ready AI Integration: Built for Claude Code, Cursor, Claude Desktop, and any MCP-compatible client
- 🔒 Type-Safe & Reliable: TypeScript, Zod validation, comprehensive test suite with 100% tool coverage
- ✅ MCP Protocol Compliant: Full Model Context Protocol specification compliance with real CRUD operation tests
Check domain availability and get intelligent suggestions:
Manage DNS records with natural language - the AI understands your Dynadot account structure:
Search for available domains and get pricing information instantly:
Use this Domain MCP server to manage your Dynadot domains through natural language with AI assistants:
Domain Operations
- "Check if example.com is available and show me similar domains"
- "Register example.com and enable WHOIS privacy"
- "Show me all domains expiring in the next 30 days"
DNS Management
- "Set up DNS for mysite.com with A record pointing to my server"
- "Add www subdomain and configure MX records for email"
- "Update DNS to point to Cloudflare nameservers"
Bulk Operations
- "Enable auto-renewal for all my .com domains"
- "Lock all domains to prevent unauthorized transfers"
- "Search pricing for .com, .net, .io, and .ai domains"
Advanced Automation
- "Create a contact and use it to register multiple domains"
- "Transfer example.com from another registrar with auth code"
- "Set up domain forwarding from old-site.com to new-site.com"
Why Use an MCP Domain Server?
Traditional domain management requires:
- Memorizing API documentation
- Writing custom scripts
- Manual navigation through control panels
With this Domain MCP integration:
- ✅ Natural language: Just describe what you want
- ✅ AI assistance: Claude/Cursor understand domain concepts
- ✅ Context aware: AI remembers your account structure
- ✅ Faster workflow: No context switching to web UI
You'll need a Dynadot account and an API key to use this MCP server.
No installation needed! NPX runs the package directly from npm.
Step 1: Get your API key from Dynadot Account Settings
Step 2: Add to your MCP client config:
Claude Code - Click to expand
Edit ~/.claude/mcp.json:
{
"mcpServers": {
"domain-mcp": {
"command": "npx",
"args": ["-y", "domain-mcp"],
"env": {
"DYNADOT_API_KEY": "your-api-key-here"
}
}
}
}Or use the CLI:
claude mcp add domain-mcpCursor - Click to expand
Edit ~/.cursor/mcp.json (macOS/Linux) or %APPDATA%\Cursor\mcp.json (Windows):
{
"mcpServers": {
"domain-mcp": {
"command": "npx",
"args": ["-y", "domain-mcp"],
"env": {
"DYNADOT_API_KEY": "your-api-key-here"
}
}
}
}Restart Cursor after editing.
Claude Desktop - Click to expand
Edit the config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"domain-mcp": {
"command": "npx",
"args": ["-y", "domain-mcp"],
"env": {
"DYNADOT_API_KEY": "your-api-key-here"
}
}
}
}Restart Claude Desktop after editing.
Step 3: Restart your AI assistant and start using domain commands!
Install globally with npm:
npm install -g domain-mcpThen use domain-mcp instead of npx -y domain-mcp in your config:
{
"mcpServers": {
"domain-mcp": {
"command": "domain-mcp",
"env": {
"DYNADOT_API_KEY": "your-api-key-here"
}
}
}
}For contributing or customization:
git clone https://github.com/joachimBrindeau/domain-mcp.git
cd domain-mcp
npm install
npm run buildThen configure with absolute path:
{
"mcpServers": {
"domain-mcp": {
"command": "node",
"args": ["/absolute/path/to/domain-mcp/dist/index.js"],
"env": {
"DYNADOT_API_KEY": "your-api-key-here"
}
}
}
}DYNADOT_API_KEY- Your Dynadot API key (Get it here)
DYNADOT_SANDBOX- Set to"true"for sandbox testing (default:"false")
📖 Full Documentation:
- Setup Guide - Detailed setup with troubleshooting
- Environment Variables - Complete environment variable reference
- Sandbox Limitations - Known sandbox API limitations
Once configured, you have access to 10 powerful tools
import { getClient } from './src/client.js';
const client = getClient();
// Search domains
const result = await client.execute('search', {
domains: ['example.com', 'example.net'],
showPrice: true,
currency: 'USD'
});
// Get domain info
const info = await client.execute('domain_info', {
domain: 'example.com'
});
// Manage DNS
await client.execute('set_dns2', {
domain: 'example.com',
mainRecords: [
{ type: 'A', value: '192.0.2.1', ttl: 3600 }
]
});This Domain MCP server provides 10 comprehensive tools for AI-powered domain operations:
List, search, register, renew, delete, info, lock, and pricing operations for your domains.
Common AI commands: "List my domains", "Search for example.com", "Register domain", "Check .com pricing"
Configure domain settings: nameservers, privacy, renewal, forwarding, parking, WHOIS.
Common AI commands: "Enable WHOIS privacy", "Set nameservers", "Configure domain forwarding", "Enable auto-renewal"
DNS management: get/set DNS records, DNSSEC configuration.
Common AI commands: "Show DNS records", "Add A record", "Configure MX records", "Enable DNSSEC"
Manage registered nameservers (glue records): register, update IP, delete, list.
Common AI commands: "Register nameserver", "Update nameserver IP", "List my nameservers"
Domain transfers: initiate, check status, manage auth codes, push requests.
Common AI commands: "Transfer domain to Dynadot", "Get auth code", "Check transfer status", "Push domain to another account"
WHOIS contact management: create, edit, delete, list, regional settings.
Common AI commands: "Create new contact", "List contacts", "Update contact info", "Delete contact"
Folder management: create, delete, list, configure folder-level settings.
Common AI commands: "Create domain folder", "List folders", "Move domain to folder", "Configure folder settings"
Account info, balance, and default settings for new domains.
Common AI commands: "Check account balance", "Show account info", "Set default nameservers", "Configure default WHOIS"
Aftermarket: auctions, backorders, expired domains, marketplace listings.
Common AI commands: "List domain auctions", "Place bid on auction", "Backorder expired domain", "List my marketplace domains"
Orders, coupons, processing status, reseller operations.
Common AI commands: "Check order status", "List available coupons", "View order history"
npm run build# Default test run (integration tests are skipped unless explicitly enabled)
npm test
# Integration tests (requires network access + Dynadot credentials)
RUN_INTEGRATION_TESTS=true DYNADOT_API_KEY=your-api-key TEST_DOMAIN=your-domain.com npm test
# E2E tests (validates all 106 API endpoints)
RUN_INTEGRATION_TESTS=true TEST_DOMAIN=your-domain.com npm test -- test/e2e.test.ts
# Functional tests (real CRUD operations)
RUN_INTEGRATION_TESTS=true TEST_DOMAIN=your-domain.com npm test -- test/functional.test.ts
# Watch mode
npm run test:watchnpm run devValidates that all 106 API actions are properly mapped and return valid responses.
Tests real CRUD operations:
- Folder CRUD (create, list, rename, delete, verify)
- Contact CRUD (create, list, get, edit, delete, verify)
- Domain Note (set, verify, clear)
- Domain Lock/Unlock
- Renewal Options
Test Coverage: 26/26 functional tests passing
Dynadot API requires ALL contact fields to be provided when editing, not just the fields you want to change. Partial updates will fail with "missing email" or similar errors.
Solution: Always provide complete contact data:
await client.execute('edit_contact', {
contact_id: '12345',
name: 'Updated Name',
email: 'email@example.com',
phonecc: '1',
phonenum: '5551234567',
address1: '123 Street',
city: 'City',
state: 'CA',
zip: '94102',
country: 'US'
});The lock_domain unlock command may return a misleading error "this domain has been locked already" when attempting to unlock. This appears to be either:
- Domain protection preventing API unlock
- A bug in the Dynadot API error messaging
Unlocking domains may need to be done through the Dynadot control panel.
src/
├── index.ts # MCP server entry point
├── client.ts # Dynadot API client
├── schema.ts # Tool and action definitions (10 tools, 106 actions)
└── register.ts # Tool registration with MCP server
test/
├── e2e.test.ts # Endpoint validation tests
└── functional.test.ts # Real CRUD operation tests
@modelcontextprotocol/sdk- MCP protocol implementationky- HTTP client for API requestszod- Schema validationvitest- Testing frameworktypescript- Type safety
- Quick Start - Get up and running in 5 minutes
- Setup Guide - Detailed setup for Claude Code, Cursor, Claude Desktop
- Deployment - Local, Docker, remote, and serverless options
- Environment - Complete environment variable reference
- Testing - Automated testing with Claude Haiku
- Reference - Common commands and usage patterns
- Examples - Code examples for common operations
- Contributing - How to contribute, API quirks, testing
- Changelog - Version history and updates
- Roadmap - Implementation status and roadmap
- License - MIT License
MIT
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
A Domain MCP server is a Model Context Protocol server that enables AI assistants like Claude and Cursor to manage domains through natural language. Instead of using a web interface or writing API code, you simply ask your AI assistant to perform domain operations.
The Domain MCP server brings domain management into your AI assistant's context:
- Natural language: "Register example.com" vs clicking through multiple pages
- AI understanding: The assistant knows your account structure and suggests related actions
- Workflow integration: Manage domains while coding, writing, or working without leaving your editor
- Automation ready: Chain multiple domain operations in one conversation
This MCP server works with any MCP-compatible AI assistant:
- Claude Code - Anthropic's official CLI
- Cursor - AI-powered code editor
- Claude Desktop - Anthropic's desktop app
- Any other client supporting the Model Context Protocol
No! That's the power of the Domain MCP approach. Your AI assistant handles the API complexity. Just describe what you want in natural language.
Yes, with proper precautions:
- Sandbox mode: Test with
DYNADOT_SANDBOX=truefirst - Review actions: The AI shows you what it will do before executing
- API limits: Dynadot's API rate limits prevent runaway operations
- Audit trail: All operations are logged in your Dynadot account
The Domain MCP server itself is free and open source (MIT license). You only pay for Dynadot domain services and your AI assistant subscription.
- Issues & Questions: GitHub Issues
- Feature Requests: GitHub Discussions
- Contributing: See CONTRIBUTING.md
Dynadot API:
- API Commands - Complete API reference
- API Help - Community support
Model Context Protocol:
- MCP Specification - Official MCP documentation
- MCP Servers - Example MCP implementations


