domain-search-mcp

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

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).

Quick Start

Option 1: npx (Recommended)

No installation needed - run directly:

npx -y domain-search-mcp@latest

Option 2: From Source

git clone https://github.com/dorukardahan/domain-search-mcp.git
cd domain-search-mcp
npm install
npm run build
npm start

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

Core Search

  • 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).

Configuration

Pricing Backend (Recommended)

Set a backend URL that owns registrar keys (Porkbun). The MCP will call /api/quote and /api/compare on that backend for pricing.

PRICING_API_BASE_URL=https://your-backend.example.com
PRICING_API_TOKEN=optional_bearer_token

Optional BYOK (Local)

Used only if PRICING_API_BASE_URL is not set.

PORKBUN_API_KEY=pk1_your_api_key
PORKBUN_API_SECRET=sk1_your_secret
NAMECHEAP_API_KEY=your_api_key
NAMECHEAP_API_USER=your_username
NAMECHEAP_CLIENT_IP=your_whitelisted_ip

Redis Distributed Cache (Optional)

For horizontal scaling across multiple MCP instances, configure Redis:

REDIS_URL=redis://:password@host:6379

Without Redis, the server uses in-memory caching (works fine for single instances). Redis enables:

  • Shared cache across multiple server instances
  • Persistent cache surviving restarts
  • Better cache hit rates in load-balanced deployments

AI Inference (Zero-Config)

AI-powered suggestions (suggest_domains_smart) work out of the box using our public VPS running fine-tuned Qwen 7B-DPO. No API keys needed!

For self-hosted setups, override the endpoint:

QWEN_INFERENCE_ENDPOINT=http://your-server:8000
QWEN_API_KEY=optional_if_secured

Environment Variables

VariableDefaultDescription
MCP_TRANSPORTstdioTransport mode: stdio or http
MCP_PORT3000HTTP server port (when using HTTP transport)
MCP_HOST0.0.0.0HTTP server bind address
CORS_ORIGINS*Allowed CORS origins (comma-separated)
PRICING_API_BASE_URL-Pricing backend base URL
PRICING_API_TOKEN-Optional bearer token
PRICING_API_TIMEOUT_MS2500Backend request timeout
PRICING_API_MAX_QUOTES_SEARCH0Max pricing calls per search (0 = unlimited; backend rate limits apply)
PRICING_API_MAX_QUOTES_BULK0Max pricing calls per bulk search (0 = unlimited; backend rate limits apply)
PRICING_API_CONCURRENCY4Pricing request concurrency
PORKBUN_API_KEY-Porkbun API key
PORKBUN_API_SECRET-Porkbun API secret
NAMECHEAP_API_KEY-Namecheap API key
NAMECHEAP_API_USER-Namecheap username
NAMECHEAP_CLIENT_IP-Namecheap IP whitelist
OUTPUT_FORMATtabletable, json, or both for tool output formatting
LOG_LEVELinfoLogging level
CACHE_TTL_AVAILABILITY60Availability cache TTL (seconds)
CACHE_TTL_PRICING3600Pricing cache TTL (seconds)
CACHE_TTL_SEDO3600Sedo auctions feed cache TTL (seconds)
CACHE_TTL_AFTERMARKET_NS300Nameserver lookup cache TTL (seconds)
SEDO_FEED_ENABLEDtrueEnable Sedo feed lookup for aftermarket hints
SEDO_FEED_URLhttps://sedo.com/txt/auctions_us.txtSedo public feed URL
AFTERMARKET_NS_ENABLEDtrueEnable nameserver-based aftermarket hints
AFTERMARKET_NS_TIMEOUT_MS1500Nameserver lookup timeout (ms)
REDIS_URL-Redis connection URL for distributed caching (e.g., redis://:password@host:6379)
QWEN_INFERENCE_ENDPOINT(public VPS)Override AI inference endpoint for self-hosted setups
QWEN_TIMEOUT_MS15000AI inference request timeout
QWEN_MAX_RETRIES2Retry count for AI inference failures

Output Format

Tool responses are returned as Markdown tables by default. If you need raw JSON for programmatic use, set:

OUTPUT_FORMAT=json

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

FAQ

Q: Does this work without any API keys? A: Yes! Availability checking uses public RDAP and GoDaddy endpoints. Only pricing requires API keys.

Q: Which MCP clients are supported? A: Claude Desktop, Claude Code, VS Code, Cursor, Cline (stdio), and ChatGPT, LM Studio (HTTP/SSE).

Q: How accurate is premium domain detection? A: GoDaddy's public endpoint detects most premium and auction domains. Always verify on registrar checkout.

Q: Can I self-host the AI suggestions? A: Yes! Set QWEN_INFERENCE_ENDPOINT to your llama.cpp server running the fine-tuned model.

Links

Documentation

Máy chủ liên quan

NotebookLM Web Importer

Nhập trang web và video YouTube vào NotebookLM chỉ với một cú nhấp. Được tin dùng bởi hơn 200.000 người dùng.

Cài đặt tiện ích Chrome