domain-search-mcp

Domain Search MCP é um servidor MCP de código aberto que permite que assistentes de IA verifiquem a disponibilidade de domínios em tempo real.

Documentação

Domain Search MCP

npm downloads license node MCP Registry Glama Context7

Mecanismo de nomenclatura com inteligência de disponibilidade — um servidor MCP que pontua os nomes que seu modelo gera e executa verificações de disponibilidade em domínios, redes sociais e registros de pacotes. Funciona com zero configuração usando RDAP/WHOIS públicos e, opcionalmente, enriquece os resultados com preços de registradores por meio de um backend que você controla.

🆕 v1.12.0: name_project — um mecanismo de nomenclatura em duas fases. Chame uma vez para obter instruções de geração para seu modelo, chame novamente com candidates[] para obter pontuação anti-slop, classificação e verificações de disponibilidade em tempo real em domínios, redes sociais e npm. Veja name_project abaixo.

🆕 v1.10.0: Integração com endpoint público da GoDaddy! Cadeia de fallback aprimorada (RDAP → GoDaddy → WHOIS) com detecção de domínios premium/leilão. Padrão de circuit breaker garante resiliência.

🤖 v1.9.0+: Sugestões de domínios com IA funcionam imediatamente! Nenhuma chave de API necessária — suggest_domains_smart usa nosso modelo público fine-tuned Qwen 7B-DPO. Além disso: cache distribuído com Redis e endpoint /metrics para observabilidade.

Construído sobre o Model Context Protocol para Claude, Codex, VS Code, Cursor, Cline e outros clientes compatíveis com MCP.

Recursos

RecursoDescrição
🔍 Busca Multi-TLDVerifique um nome em .com, .io, .dev, .ai e mais de 500 TLDs
📦 Verificação em LoteValide até 100 nomes de domínio em uma única chamada
💎 Detecção PremiumIdentifique domínios premium e de leilão via GoDaddy
🤖 Sugestões com IAGere nomes de marca com Qwen 7B-DPO fine-tuned
💰 Comparação de PreçosCompare preços entre Porkbun, Namecheap
🌐 Verificação de Handles SociaisVerifique disponibilidade de nome de usuário no GitHub, Twitter, etc.
🔌 Transporte DuploFunciona via stdio (Claude) ou HTTP/SSE (ChatGPT Actions)
Zero ConfiguraçãoFunciona instantaneamente — nenhuma chave de API necessária para disponibilidade

O Que Ele Faz

  • Verifica um único nome em vários TLDs.
  • Verificação em lote de até 100 nomes para um TLD.
  • Compara preços de registradores (usa backend quando configurado).
  • Sugere nomes e valida handles sociais.
  • Detecta sinais de premium/leilão para search_domain.

Como Funciona

Disponibilidade e preços são intencionalmente separados:

Availability Chain (zero-config):
┌─────────┐     ┌─────────┐     ┌─────────┐
│  RDAP   │ ──► │ GoDaddy │ ──► │  WHOIS  │
│ (fast)  │     │(premium)│     │(fallback│
└─────────┘     └─────────┘     └─────────┘
  • Disponibilidade (padrão, sem chaves necessárias):
    • RDAP: Fonte primária — dados públicos de registro rápidos e ilimitados
    • GoDaddy: Secundária — adiciona detecção de premium/leilão (30 req/min, protegido por circuit breaker)
    • WHOIS: Último recurso para casos extremos
  • Preços (opcional):
    • Recomendado: PRICING_API_BASE_URL (backend com chaves Porkbun)
    • BYOK opcional: Porkbun/Namecheap somente quando o backend não está configurado

Isso mantém o servidor com zero configuração enquanto permite que usuários avançados ativem preços.

Verificação de Preços

As respostas incluem price_check_url (link de checkout/busca do registrador) e podem incluir price_note quando um preço é estimado. Sempre verifique o preço final na página de checkout do registrador antes da compra.

Se um sinal de leilão/premium for detectado, os resultados incluem um bloco aftermarket com links para páginas de marketplace quando disponíveis. Domínios registrados podem incluir dicas de leilão Sedo (feed público) e dicas de marketplace baseadas em nameserver (Sedo/Dan/Afternic).

Início Rápido

Opção 1: npx (Recomendado)

Nenhuma instalação necessária — execute diretamente:

npx -y domain-search-mcp@latest

Opção 2: A partir do Código-Fonte

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

Opções de Transporte

stdio (Padrão)

Para clientes MCP como Claude Desktop, Cursor, VS Code — usa stdin/stdout:

npx -y domain-search-mcp@latest

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

Para ChatGPT Actions, aplicativos web e clientes de API REST:

# 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 — Protocolo MCP (POST para mensagens, GET para stream SSE)
  • /api/tools/* — API REST para cada ferramenta (compatível com ChatGPT Actions)
  • /openapi.json — Especificação OpenAPI 3.1
  • /health — Verificação de saúde
  • /metrics — Métricas compatíveis com Prometheus (estatísticas de cache, contagens de requisições, saúde da inferência de IA)

Integração com ChatGPT Custom GPT

  1. Inicie o servidor HTTP (veja acima)
  2. Exponha via ngrok: ngrok http 3000
  3. No ChatGPT, crie um Custom GPT e adicione uma Action
  4. Importe a especificação OpenAPI de https://your-ngrok-url.ngrok-free.dev/openapi.json
  5. Teste as ferramentas!

Para implantação em produção, use um domínio permanente com SSL em vez de ngrok.

Exemplo de API REST:

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

Configuração do Cliente MCP

Claude Code (.mcp.json na raiz do projeto):

{
  "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"]
    }
  }
}

💡 Dica: Sempre use @latest para garantir que você está executando a versão mais recente com todos os recursos.

Ferramentas

Todas as 12 ferramentas listadas abaixo são expostas aos clientes MCP por padrão. O perfil enxuto de 6 ferramentas (name_project, search_domain, bulk_search, check_socials, tld_info, ai_health) é opcional — defina SLIM_TOOLS=true se você quiser uma superfície de seleção de ferramentas mais precisa para integrações de clientes mais simples (veja Variáveis de Ambiente). Uma futura versão 2.0 pode inverter o padrão para o perfil enxuto.

ADVANCED_TOOLS=true é um alias obsoleto que força a superfície completa e substitui SLIM_TOOLS; é um no-op inofensivo hoje, já que o completo já é o padrão.

name_project

Mecanismo de nomenclatura flagship em duas fases. Chame uma vez para obter instruções de geração por categoria para seu modelo; chame novamente com candidates[] para obter pontuação anti-slop, classificação e verificações de disponibilidade em tempo real em domínios, redes sociais e npm.

  • Modos: brief (descreva o que você está nomeando), auto (analise o workspace atual), from_name (encontre domínios/variantes para um nome que você já gosta), from_domain (ajuste um projeto/marca a um domínio que você encontrou).
  • Fase 1 (sem candidates): retorna instruções de geração + prompts por categoria.
  • Fase 2 (candidates presente): pontua + classifica candidatos e depois verifica disponibilidade dos 12 melhores em targets.tlds / targets.platforms — omita targets para nomenclatura pura sem chamadas de disponibilidade.

As pontuações são classificações heurísticas para comparar candidatos entre si — não são verdade objetiva e universal de capacidade de marca. Os resultados de disponibilidade refletem uma única fonte verificada em um momento no tempo; reverifique antes de registrar ou confiar em qualquer coisa.

Fase 1 — chame sem candidates:

{"mode": "brief", "brief": "an MCP naming engine"}
Brief: an MCP naming engine

Now generate between 30 and 50 name candidates spread across these lanes:
- [evocative] Real words borrowed for their feeling, not their meaning (like Slack, Notion, Bolt). Single dictionary words preferred.
- [invented] Coined words that do not exist but sound like they could (like Zapier, Klarna). Must be pronounceable on first read.
- [compound] Two short real words fused (like Facebook, Snapchat). Both halves must stay readable; no glue letters.
- [premium] Short, expensive-feeling names: 4-7 letters, strong single or double syllable (like Stripe, Vercel, Arc).

Rules: single words or tight compounds, no taglines, no explanations yet. Then call name_project again with the SAME arguments plus candidates:[...] to get scoring and availability.

Fase 2 — reenvie os mesmos argumentos mais candidates:

{"mode": "brief", "brief": "an MCP naming engine", "candidates": ["Nexify", "Corda"]}
| Name | Score | Verdict | Badges | Why |
| --- | --- | --- | --- | --- |
| Corda | 97 strong | - | - | no AI-slop patterns; clean pronunciation and typing |
| Nexify | 60 middling | - | - | slop: overused prefix "nex-"; slop: overused suffix "-ify" |
2 candidates received, 2 passed constraints, top 2 returned.
No availability-check targets - pure naming mode.

Badges: tld✓ livre para registrar, tld$ à venda (aftermarket/premium — registrado ou precificado, não livre para registrar), tld✗ registrado, tld? desconhecido. Verificações de ccTLD (.ai / .io / .sh / .ac) são cruzadas com a verdade de base nativa WHOIS/DNS, não confiando apenas na palavra do RDAP.

Veja docs/API.md para o esquema completo de parâmetros/respostas.

Busca Principal

  • search_domain: Verifica um nome em vários TLDs, adiciona sinais de premium/leilão.
  • bulk_search: Verifica até 100 nomes para um único TLD.
  • compare_registrars: Compara preços entre registradores (backend quando configurado).

Sugestões com IA

  • suggest_domains: Gera variações (prefixo/sufixo/hífen).
  • suggest_domains_smart: 🤖 Geração de nomes de marca com IA usando Qwen 7B-DPO fine-tuned. Zero configuração — funciona instantaneamente!
  • analyze_project: Escaneia projeto local ou repositório GitHub para extrair contexto e sugerir nomes de domínio correspondentes.

Investimento em Domínios

  • hunt_domains: Encontre domínios valiosos para investimento — escaneia leilões Sedo, gera padrões, calcula pontuações de investimento.
  • expiring_domains: Monitore domínios próximos da expiração (requer cache negativo federado).

Utilitários

  • tld_info: Metadados e restrições de TLD.
  • check_socials: Disponibilidade de nome de usuário em várias plataformas.
  • ai_health: Verifica status dos serviços de inferência de IA (VPS Qwen, circuit breakers, concorrência adaptativa).

Configuração

Backend de Preços (Recomendado)

Defina uma URL de backend que possua as chaves do registrador (Porkbun). O MCP chamará /api/quote e /api/compare nesse backend para preços.

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

BYOK Opcional (Local)

Usado somente se PRICING_API_BASE_URL não estiver definido.

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

Cache Distribuído Redis (Opcional)

Para escalonamento horizontal em várias instâncias MCP, configure Redis:

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

Sem Redis, o servidor usa cache em memória (funciona bem para instâncias únicas). Redis permite:

  • Cache compartilhado entre várias instâncias do servidor
  • Cache persistente que sobrevive a reinicializações
  • Melhores taxas de acerto de cache em implantações com balanceamento de carga

Inferência de IA (traga seu próprio endpoint)

Sugestões com IA (suggest_domains_smart) usam seu próprio endpoint de inferência quando configurado. Aponte QWEN_INFERENCE_ENDPOINT para um servidor llama.cpp/Qwen que você controla. Se não estiver definido, as sugestões recorrem ao mecanismo semântico offline integrado (sem chamadas externas, sem chaves de API necessárias).

# Public hosts must use HTTPS; loopback/private hosts may use HTTP.
QWEN_INFERENCE_ENDPOINT=http://127.0.0.1:8070
QWEN_API_KEY=optional_if_secured

Variáveis de Ambiente

VariávelPadrãoDescrição
MCP_TRANSPORTstdioModo de transporte: stdio ou http
MCP_PORT3000Porta do servidor HTTP (ao usar transporte HTTP)
MCP_HOST0.0.0.0Endereço de bind do servidor HTTP
CORS_ORIGINS*Origens CORS permitidas (separadas por vírgula)
PRICING_API_BASE_URL-URL base do backend de preços
PRICING_API_TOKEN-Token bearer opcional
PRICING_API_TIMEOUT_MS2500Timeout de requisição do backend
PRICING_API_MAX_QUOTES_SEARCH0Máximo de chamadas de preço por busca (0 = ilimitado; limites de taxa do backend se aplicam)
PRICING_API_MAX_QUOTES_BULK0Máximo de chamadas de preço por busca em lote (0 = ilimitado; limites de taxa do backend se aplicam)
PRICING_API_CONCURRENCY4Concorrência de requisições de preço
PORKBUN_API_KEY-Chave de API Porkbun
PORKBUN_API_SECRET-Segredo de API Porkbun
NAMECHEAP_API_KEY-Chave de API Namecheap
NAMECHEAP_API_USER-Nome de usuário Namecheap
NAMECHEAP_CLIENT_IP-Whitelist de IP Namecheap
OUTPUT_FORMATtabletable, json, ou both para formatação de saída das ferramentas
LOG_LEVELinfoNível de logging
CACHE_TTL_AVAILABILITY60TTL do cache de disponibilidade (segundos)
CACHE_TTL_PRICING3600TTL do cache de preços (segundos)
CACHE_TTL_SEDO3600TTL do cache do feed de leilões Sedo (segundos)
CACHE_TTL_AFTERMARKET_NS300TTL do cache de consulta de nameserver (segundos)
SEDO_FEED_ENABLEDtrueHabilita consulta ao feed Sedo para dicas de aftermarket
SEDO_FEED_URLhttps://sedo.com/txt/auctions_us.txtURL do feed público Sedo
AFTERMARKET_NS_ENABLEDtrueHabilita dicas de aftermarket baseadas em nameserver
AFTERMARKET_NS_TIMEOUT_MS1500Timeout de consulta de nameserver (ms)
REDIS_URL-URL de conexão Redis para cache distribuído (ex.: redis://:password@host:6379)
QWEN_INFERENCE_ENDPOINT(nenhum)Seu próprio endpoint de inferência de IA para suggest_domains_smart (fallback semântico offline se não definido)
QWEN_TIMEOUT_MS15000Timeout de requisição de inferência de IA
QWEN_MAX_RETRIES2Contagem de tentativas para falhas de inferência de IA
SLIM_TOOLSfalseDefina true para optar pela superfície enxuta de 6 ferramentas em vez do padrão completo de 12 ferramentas
ADVANCED_TOOLSfalseAlias obsoleto para o flag pré-SLIM_TOOLS. Defina true para forçar a superfície completa de 12 ferramentas e substituir SLIM_TOOLS; no-op já que o completo é o padrão

Formato de Saída

As respostas das ferramentas são retornadas como tabelas Markdown por padrão. Se você precisar de JSON bruto para uso programático, defina:

OUTPUT_FORMAT=json

Fontes de Dados

FontePosição na CadeiaUsoChaves de API
RDAP1ª (Primária)Verificação rápida de disponibilidadeNão necessária
GoDaddy2ª (Fallback)Detecção de premium/leilãoNão necessária
WHOIS3ª (Último recurso)Disponibilidade legadaNão necessária
Pricing APIParalelaPreços em tempo real via backendToken do backend
Porkbun APIParalela (BYOK)Disponibilidade + preçosChave de API + segredo
Namecheap APIParalela (BYOK)Disponibilidade + preçosChave de API + whitelist de IP
Sedo FeedEnriquecimentoSugestões de leilão de mercado secundárioNão necessária

Comportamento de Preços

  • O preço em tempo real é tentado primeiro para cada domínio disponível.
  • Se as cotações em tempo real falharem ou forem limitadas por taxa, o resultado recai para a estimativa do catálogo e inclui price_note.
  • Sempre verifique os preços via price_check_url antes da compra.

Exemplos

Busca Básica (Sem Chaves de API)

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

┌─────────────────┬───────────┬─────────┬────────┐
│ Domain          │ Available │ Premium │ Source │
├─────────────────┼───────────┼─────────┼────────┤
│ myproject.com   │ ✅        │ No      │ rdap   │
│ myproject.io    │ ❌        │ -       │ rdap   │
│ myproject.dev   │ ✅        │ Yes     │ godaddy│
└─────────────────┴───────────┴─────────┴────────┘

Sugestões com IA

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

→ seattlebrew.com, pugetperk.io, raincitycoffee.co, cascadiacafe.com

Verificação em Lote

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

→ Checks startup.io, launch.io, begin.io, init.io in parallel

Desenvolvimento

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

Lançamento

Consulte docs/RELEASE.md para o fluxo de lançamento acionado por tag. Tags de versão acionam o GitHub Release, publicação confiável no npm com proveniência e publicação no MCP Registry através do GitHub Actions.

Changelog

Consulte CHANGELOG.md para o histórico de versões.

Notas de Segurança

  • Não faça commit de chaves de API ou arquivos .mcpregistry_*.
  • Sem PRICING_API_BASE_URL (ou chaves BYOK), os preços não estão disponíveis (a disponibilidade ainda funciona).

Atualização

Para Usuários do npx

Se você usa npx domain-search-mcp (sem @latest), o npx pode armazenar em cache uma versão antiga.

Correção: Atualize sua configuração do MCP para usar @latest:

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

Ou limpe o cache do npx manualmente:

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

Para Usuários de Fonte/Git

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

Mantendo-se Atualizado

  • Acompanhe o repositório: Clique em "Watch" → "Releases only" no GitHub para ser notificado sobre novas versões.
  • Verifique os lançamentos: Consulte GitHub Releases para changelog e notas de atualização.
  • Página npm: npmjs.com/package/domain-search-mcp mostra a versão mais recente.

Arquitetura

Para diagramas detalhados da arquitetura do sistema, consulte docs/ARCHITECTURE.md:

  • Camada de transporte (stdio vs HTTP/SSE)
  • Fluxo de execução de ferramentas
  • Cascata de fontes de dados (RDAP → Pricing API → WHOIS)
  • Arquitetura de implantação VPS
  • Fluxo de sugestões com IA
  • Ciclo de vida da sessão MCP

Por Que Esta Ferramenta?

ProblemaSolução
APIs de domínio exigem cadastro/chavesRDAP + GoDaddy = disponibilidade sem configuração
Domínios premium aparecem como "disponíveis"GoDaddy detecta status premium/leilão
Difícil verificar múltiplos TLDsUma única chamada verifica .com, .io, .dev, etc.
Sem integração de IA para nomesQwen 7B integrado para sugestões de marcas
Funciona apenas com ClaudeTransporte HTTP suporta ChatGPT, LM Studio

FAQ

P: Funciona sem nenhuma chave de API? R: Sim! A verificação de disponibilidade usa endpoints públicos RDAP e GoDaddy. Apenas preços exigem chaves de API.

P: Quais clientes MCP são suportados? R: Claude Desktop, Claude Code, VS Code, Cursor, Cline (stdio) e ChatGPT, LM Studio (HTTP/SSE).

P: Quão precisa é a detecção de domínios premium? R: O endpoint público do GoDaddy detecta a maioria dos domínios premium e de leilão. Sempre verifique no checkout do registrador.

P: Posso hospedar as sugestões de IA? R: Sim! Defina QWEN_INFERENCE_ENDPOINT para o seu servidor llama.cpp executando o modelo ajustado.

Links

Documentação