Labsco
dorukardahan logo

domain-search-mcp

β˜… 25

from dorukardahan

Domain Search MCP is an open-source MCP server that gives AI assistants the ability to check domain availability in real-time.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedPaid serviceAdvanced setup

Domain Search MCP

npm downloads license node MCP Registry Glama Context7

Fast, local-first domain availability checks for MCP clients. Works with zero configuration using public RDAP/WHOIS, and optionally enriches results with registrar pricing via a backend you control.

πŸ†• v1.10.0: GoDaddy public endpoint integration! Enhanced fallback chain (RDAP β†’ GoDaddy β†’ WHOIS) with premium/auction domain detection. Circuit breaker pattern ensures resilience.

πŸ€– v1.9.0+: AI-powered domain suggestions work out of the box! No API keys needed - suggest_domains_smart uses our public fine-tuned Qwen 7B-DPO model. Plus: Redis distributed caching and /metrics endpoint for observability.

Built on the Model Context Protocol for Claude, Codex, VS Code, Cursor, Cline, and other MCP-compatible clients.

Features

FeatureDescription
πŸ” Multi-TLD SearchCheck one name across .com, .io, .dev, .ai and 500+ TLDs
πŸ“¦ Bulk CheckValidate up to 100 domain names in a single call
πŸ’Ž Premium DetectionIdentify premium and auction domains via GoDaddy
πŸ€– AI SuggestionsGenerate brandable names with fine-tuned Qwen 7B-DPO
πŸ’° Price ComparisonCompare pricing across Porkbun, Namecheap
🌐 Social Handle CheckVerify username availability on GitHub, Twitter, etc.
πŸ”Œ Dual TransportWorks via stdio (Claude) or HTTP/SSE (ChatGPT Actions)
⚑ Zero ConfigWorks instantly - no API keys required for availability

What It Does

  • Check a single name across multiple TLDs.
  • Bulk-check up to 100 names for one TLD.
  • Compare registrar pricing (uses backend when configured).
  • Suggest names and validate social handles.
  • Detect premium/auction signals for search_domain.

How It Works

Availability and pricing are intentionally separated:

Availability Chain (zero-config):
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  RDAP   β”‚ ──► β”‚ GoDaddy β”‚ ──► β”‚  WHOIS  β”‚
β”‚ (fast)  β”‚     β”‚(premium)β”‚     β”‚(fallbackβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • Availability (default, no keys needed):
    • RDAP: Primary source - fast, unlimited, public registry data
    • GoDaddy: Secondary - adds premium/auction detection (30 req/min, circuit breaker protected)
    • WHOIS: Last resort fallback for edge cases
  • Pricing (optional):
    • Recommended: PRICING_API_BASE_URL (backend with Porkbun keys)
    • Optional BYOK: Porkbun/Namecheap only when backend is not configured

This keeps the server zero-config while letting power users enable pricing.

Pricing Verification

Responses include price_check_url (registrar checkout/search link) and may include price_note when a price is estimated. Always verify the final price on the registrar checkout page before purchase.

If an auction/premium signal is detected, results include an aftermarket block with links to marketplace pages when available. Taken domains may include Sedo auction hints (public feed) and nameserver-based marketplace hints (Sedo/Dan/Afternic).

Transport Options

stdio (Default)

For MCP clients like Claude Desktop, Cursor, VS Code - uses stdin/stdout:

npx -y domain-search-mcp@latest

HTTP/SSE (ChatGPT, Web Clients, LM Studio)

For ChatGPT Actions, web apps, and REST API clients:

# Start HTTP server on port 3000
npx -y domain-search-mcp@latest --http

# Or with custom port
MCP_PORT=8080 npx -y domain-search-mcp@latest --http

Endpoints:

  • /mcp - MCP protocol (POST for messages, GET for SSE stream)
  • /api/tools/* - REST API for each tool (ChatGPT Actions compatible)
  • /openapi.json - OpenAPI 3.1 specification
  • /health - Health check
  • /metrics - Prometheus-compatible metrics (cache stats, request counts, AI inference health)

ChatGPT Custom GPT Integration

  1. Start the HTTP server (see above)
  2. Expose via ngrok: ngrok http 3000
  3. In ChatGPT, create a Custom GPT and add an Action
  4. Import the OpenAPI spec from https://your-ngrok-url.ngrok-free.dev/openapi.json
  5. Test the tools!

For production deployment, use a permanent domain with SSL instead of ngrok.

REST API Example:

curl -X POST https://your-domain/api/tools/search_domain \
  -H "Content-Type: application/json" \
  -d '{"domain_name":"vibecoding"}'

MCP Client Config

Claude Code (.mcp.json in project root):

{
  "mcpServers": {
    "domain-search": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "domain-search-mcp@latest"]
    }
  }
}

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "domain-search": {
      "command": "npx",
      "args": ["-y", "domain-search-mcp@latest"]
    }
  }
}

πŸ’‘ Tip: Always use @latest to ensure you're running the newest version with all features.

Tools

  • search_domain: Check a name across multiple TLDs, adds premium/auction signals.
  • bulk_search: Check up to 100 names for a single TLD.
  • compare_registrars: Compare pricing across registrars (backend when configured).

AI-Powered Suggestions

  • suggest_domains: Generate variations (prefix/suffix/hyphen).
  • suggest_domains_smart: πŸ€– AI-powered brandable name generation using fine-tuned Qwen 7B-DPO. Zero-config - works instantly!
  • analyze_project: Scan local project or GitHub repo to extract context and suggest matching domain names.

Domain Investment

  • hunt_domains: Find valuable domains for investment - scans Sedo auctions, generates patterns, calculates investment scores.
  • expiring_domains: Monitor domains approaching expiration (requires federated negative cache).

Utilities

  • tld_info: TLD metadata and restrictions.
  • check_socials: Username availability across platforms.
  • ai_health: Check status of AI inference services (VPS Qwen, circuit breakers, adaptive concurrency).

Data Sources

SourcePosition in ChainUsageAPI Keys
RDAP1st (Primary)Fast availability checkNot needed
GoDaddy2nd (Fallback)Premium/auction detectionNot needed
WHOIS3rd (Last resort)Legacy availabilityNot needed
Pricing APIParallelLive pricing via backendBackend token
Porkbun APIParallel (BYOK)Availability + pricingAPI key + secret
Namecheap APIParallel (BYOK)Availability + pricingAPI key + IP whitelist
Sedo FeedEnrichmentAftermarket auction hintsNot needed

Pricing Behavior

  • Live price is attempted first for every available domain.
  • If live quotes fail or are rate-limited, the result falls back to the catalog estimate and includes price_note.
  • Always verify pricing via price_check_url before purchase.

Examples

Basic Search (No API Keys)

search_domain("myproject", ["com", "io", "dev"])

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Domain          β”‚ Available β”‚ Premium β”‚ Source β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ myproject.com   β”‚ βœ…        β”‚ No      β”‚ rdap   β”‚
β”‚ myproject.io    β”‚ ❌        β”‚ -       β”‚ rdap   β”‚
β”‚ myproject.dev   β”‚ βœ…        β”‚ Yes     β”‚ godaddyβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜

AI-Powered Suggestions

suggest_domains_smart("coffee shop in seattle", { style: "brandable" })

β†’ seattlebrew.com, pugetperk.io, raincitycoffee.co, cascadiacafe.com

Bulk Check

bulk_search(["startup", "launch", "begin", "init"], "io")

β†’ Checks startup.io, launch.io, begin.io, init.io in parallel

Development

npm run dev       # watch mode
npm test          # run Jest
npm run build     # compile to dist/

Release

See docs/RELEASE.md for the canary -> latest publish flow. Tags like v1.2.24 trigger GitHub Releases + npm publish via CI.

Changelog

See CHANGELOG.md for release history.

Security Notes

  • Do not commit API keys or .mcpregistry_* files.
  • Without PRICING_API_BASE_URL (or BYOK keys), pricing is not available (availability still works).

Upgrading

For npx Users

If you use npx domain-search-mcp (without @latest), npx may cache an old version.

Fix: Update your MCP config to use @latest:

"args": ["-y", "domain-search-mcp@latest"]

Or clear the npx cache manually:

npx clear-npx-cache  # then restart your MCP client

For Source/Git Users

cd domain-search-mcp
git pull origin main
npm install
npm run build

Staying Updated

Architecture

For detailed system architecture diagrams, see docs/ARCHITECTURE.md:

  • Transport layer (stdio vs HTTP/SSE)
  • Tool execution flow
  • Data source waterfall (RDAP β†’ Pricing API β†’ WHOIS)
  • VPS deployment architecture
  • AI suggestion flow
  • MCP session lifecycle

Why This Tool?

ProblemSolution
Domain APIs require signup/keysRDAP + GoDaddy = zero-config availability
Premium domains show as "available"GoDaddy detects premium/auction status
Hard to check multiple TLDsSingle call checks .com, .io, .dev, etc.
No AI integration for namingBuilt-in Qwen 7B for brandable suggestions
Only works with ClaudeHTTP transport supports ChatGPT, LM Studio

Documentation