Domain Search MCP

Domain Search MCP

Fast domain availability checker that searches across multiple registrars (Porkbun, Namecheap) and protocols (RDAP, WHOIS) to find available domains, compare pricing, get suggestions, and check social media username availability.

Category
Visit Server

README

Domain Search MCP

<a href="https://glama.ai/mcp/servers/@dorukardahan/domain-search-mcp"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@dorukardahan/domain-search-mcp/badge" alt="Domain Search MCP on Glama" /> </a>

Fast domain availability aggregator for AI assistants. Check domain availability across Porkbun, Namecheap, RDAP, and WHOIS. Compare pricing. Get suggestions.

Built with the Model Context Protocol (MCP) for seamless integration with Claude Desktop, Cursor, Cline, and other AI tools.

Get Started in 60 Seconds

1. Install

# Clone the repository
git clone https://github.com/dorukardahan/domain-search-mcp.git
cd domain-search-mcp

# Install dependencies
npm install

# Build
npm run build

2. Configure Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on Mac):

{
  "mcpServers": {
    "domain-search": {
      "command": "node",
      "args": ["/path/to/domain-search-mcp/dist/server.js"]
    }
  }
}

3. Start Searching

Open Claude Desktop and ask:

"Check if vibecoding is available as a domain"

Claude will use the MCP server to search .com, .io, and .dev by default:

vibecoding.com - Available - $8.95/year (Porkbun)
vibecoding.io  - Available - $29.88/year (Porkbun)
vibecoding.dev - Available - $10.18/year (Porkbun)

āœ… 3 domains available! Best price: vibecoding.com at $8.95/year
šŸ’” .com is the classic, universal choice — trusted worldwide
šŸ’” .io is popular with tech startups and SaaS products

Features

6 Powerful Tools

Tool What it does
search_domain Check availability across multiple TLDs with pricing
bulk_search Check up to 100 domains at once
compare_registrars Find the best price across registrars
suggest_domains Get available variations when your name is taken
tld_info Learn about TLDs, restrictions, and typical pricing
check_socials Verify if usernames are available on GitHub, Twitter, Instagram

Works Without API Keys

The server uses RDAP and WHOIS as fallbacks, so you can start using it immediately without any API keys. However, for pricing information and faster results, we recommend configuring at least Porkbun:

# Copy the example environment file
cp .env.example .env

# Edit and add your keys
nano .env

Supported Registrars

Registrar API Type Pricing Notes
Porkbun JSON Free Fast, includes WHOIS privacy
Namecheap XML Free Requires IP whitelist

Fallback Protocols

Protocol Speed Pricing Authentication
RDAP Fast No None required
WHOIS Slow No None required

Tool Examples

search_domain

Check if a domain is available across multiple TLDs:

// Input
{
  "domain_name": "vibecoding",
  "tlds": ["com", "io", "dev"]
}

// Output
{
  "results": [
    {
      "domain": "vibecoding.com",
      "available": true,
      "price_first_year": 8.95,
      "price_renewal": 8.95,
      "privacy_included": true,
      "registrar": "porkbun",
      "source": "porkbun_api"
    },
    // ... more results
  ],
  "insights": [
    "āœ… 3 domains available! Best price: vibecoding.com at $8.95/year",
    "šŸ’” .com is the classic, universal choice — trusted worldwide"
  ],
  "next_steps": [
    "Check social handle availability (GitHub, X, Instagram)",
    "Register vibecoding.com at porkbun to secure it"
  ]
}

bulk_search

Check many domains at once:

// Input
{
  "domains": ["vibecoding", "coolstartup", "myawesomeapp"],
  "tld": "io"
}

// Output
{
  "results": [/* array of domain results */],
  "summary": {
    "total": 3,
    "available": 2,
    "taken": 1,
    "errors": 0
  },
  "insights": [
    "āœ… 2 of 3 domains available",
    "šŸ’° Best price: vibecoding.io at $29.88/year"
  ]
}

compare_registrars

Find the best deal:

// Input
{
  "domain": "vibecoding",
  "tld": "com",
  "registrars": ["porkbun", "namecheap"]
}

// Output
{
  "domain": "vibecoding.com",
  "what_happened": "Compared pricing across 2 registrars",
  "best_first_year": { "registrar": "namecheap", "price": 8.88 },
  "best_renewal": { "registrar": "porkbun", "price": 8.95 },
  "recommendation": "Namecheap for first year ($0.07 savings), Porkbun for renewal stability"
}

suggest_domains

Get variations when your preferred name is taken:

// Input
{
  "base_name": "vibecoding",
  "tld": "com",
  "max_suggestions": 5
}

// Output
{
  "suggestions": [
    { "domain": "getvibecoding.com", "price_first_year": 8.95 },
    { "domain": "vibecodingapp.com", "price_first_year": 8.95 },
    { "domain": "tryvibecoding.com", "price_first_year": 8.95 }
  ],
  "insights": [
    "āœ… Found 5 available variations",
    "⭐ Top suggestion: getvibecoding.com ($8.95/year)"
  ]
}

tld_info

Learn about a TLD:

// Input
{
  "tld": "dev"
}

// Output
{
  "tld": "dev",
  "description": "Developer - for software developers and their projects",
  "typical_use": "Developer portfolios, tools, documentation sites",
  "price_range": { "min": 10.18, "max": 19.99, "currency": "USD" },
  "restrictions": ["Requires HTTPS (HSTS preloaded)"],
  "popularity": "medium",
  "recommendation": "Ideal for developers and tech portfolios (requires HTTPS)"
}

check_socials

Verify username availability:

// Input
{
  "name": "vibecoding",
  "platforms": ["github", "twitter", "instagram"]
}

// Output
{
  "name": "vibecoding",
  "results": [
    { "platform": "github", "available": true, "confidence": "high" },
    { "platform": "twitter", "available": false, "confidence": "medium" },
    { "platform": "instagram", "available": true, "confidence": "low" }
  ],
  "insights": [
    "āœ… vibecoding is available on: github",
    "āŒ vibecoding is taken on: twitter",
    "āš ļø Could not reliably check: instagram (check manually)"
  ]
}

Configuration

Environment Variables

Create a .env file based on .env.example:

# Porkbun API (optional, but recommended for pricing)
# Get your free key at: https://porkbun.com/account/api
PORKBUN_API_KEY=your_api_key_here
PORKBUN_API_SECRET=your_api_secret_here

# Namecheap API (optional, requires IP whitelist)
NAMECHEAP_API_KEY=your_api_key_here
NAMECHEAP_API_USER=your_username_here

# Logging
LOG_LEVEL=info  # debug | info | warn | error

# Cache TTLs (in seconds)
CACHE_TTL_AVAILABILITY=300   # 5 minutes
CACHE_TTL_PRICING=3600       # 1 hour

# Rate limiting
RATE_LIMIT_PER_MINUTE=60

# TLD restrictions (comma-separated)
ALLOWED_TLDS=com,io,dev,app,co,net,org,xyz,ai,sh,me,cc
DENY_TLDS=localhost,internal,test,local

IDE Integration

Cursor

Add to .cursor/mcp.json:

{
  "servers": {
    "domain-search": {
      "command": "node",
      "args": ["/path/to/domain-search-mcp/dist/server.js"]
    }
  }
}

Cline

Add to your Cline settings to enable MCP servers.

Development

Setup

# Install dependencies
npm install

# Run in development mode (hot reload)
npm run dev

# Build for production
npm run build

# Run tests
npm test

# Run tests with coverage
npm run coverage

Project Structure

domain-search-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ server.ts           # MCP server entry point
│   ā”œā”€ā”€ config.ts           # Environment configuration
│   ā”œā”€ā”€ types.ts            # TypeScript interfaces
│   ā”œā”€ā”€ tools/              # MCP tool implementations
│   │   ā”œā”€ā”€ search_domain.ts
│   │   ā”œā”€ā”€ bulk_search.ts
│   │   ā”œā”€ā”€ compare_registrars.ts
│   │   ā”œā”€ā”€ suggest_domains.ts
│   │   ā”œā”€ā”€ tld_info.ts
│   │   └── check_socials.ts
│   ā”œā”€ā”€ registrars/         # Registrar adapters
│   │   ā”œā”€ā”€ base.ts
│   │   ā”œā”€ā”€ porkbun.ts
│   │   └── namecheap.ts
│   ā”œā”€ā”€ fallbacks/          # RDAP and WHOIS fallbacks
│   │   ā”œā”€ā”€ rdap.ts
│   │   └── whois.ts
│   ā”œā”€ā”€ services/           # Business logic
│   │   └── domain-search.ts
│   └── utils/              # Utilities
│       ā”œā”€ā”€ logger.ts
│       ā”œā”€ā”€ cache.ts
│       ā”œā”€ā”€ errors.ts
│       └── validators.ts
ā”œā”€ā”€ tests/
│   ā”œā”€ā”€ unit/
│   └── integration/
ā”œā”€ā”€ examples/
ā”œā”€ā”€ package.json
ā”œā”€ā”€ tsconfig.json
└── README.md

Error Handling

The server provides user-friendly error messages with suggested actions:

{
  "error": true,
  "code": "RATE_LIMIT",
  "message": "Too many requests to porkbun. Please slow down.",
  "retryable": true,
  "suggestedAction": "Wait 30 seconds before trying again."
}

Error Codes

Code Description Retryable
INVALID_DOMAIN Domain name format is invalid No
UNSUPPORTED_TLD TLD is not supported No
RATE_LIMIT Too many requests Yes
AUTH_ERROR API credentials invalid No
REGISTRAR_API_ERROR Registrar API failed Depends
NO_SOURCE_AVAILABLE All sources failed Yes
TIMEOUT Request timed out Yes

Security

  • API keys are never logged (automatic secret masking)
  • Structured JSON logging for audit trails
  • No PII stored or logged
  • Rate limiting to prevent abuse

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

License

MIT License - see LICENSE for details.

Links


Built with care for the vibecoding community. Magic in under 60 seconds.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured