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
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
| Recurso | Descrição |
|---|---|
| 🔍 Busca Multi-TLD | Verifique um nome em .com, .io, .dev, .ai e mais de 500 TLDs |
| 📦 Verificação em Lote | Valide até 100 nomes de domínio em uma única chamada |
| 💎 Detecção Premium | Identifique domínios premium e de leilão via GoDaddy |
| 🤖 Sugestões com IA | Gere nomes de marca com Qwen 7B-DPO fine-tuned |
| 💰 Comparação de Preços | Compare preços entre Porkbun, Namecheap |
| 🌐 Verificação de Handles Sociais | Verifique disponibilidade de nome de usuário no GitHub, Twitter, etc. |
| 🔌 Transporte Duplo | Funciona via stdio (Claude) ou HTTP/SSE (ChatGPT Actions) |
| ⚡ Zero Configuração | Funciona 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
- Recomendado:
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
- Inicie o servidor HTTP (veja acima)
- Exponha via ngrok:
ngrok http 3000 - No ChatGPT, crie um Custom GPT e adicione uma Action
- Importe a especificação OpenAPI de
https://your-ngrok-url.ngrok-free.dev/openapi.json - 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
@latestpara 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 (
candidatespresente): pontua + classifica candidatos e depois verifica disponibilidade dos 12 melhores emtargets.tlds/targets.platforms— omitatargetspara 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.
- Chaves Porkbun:
- Chaves Namecheap (whitelist de IP necessária):
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ável | Padrão | Descrição |
|---|---|---|
MCP_TRANSPORT | stdio | Modo de transporte: stdio ou http |
MCP_PORT | 3000 | Porta do servidor HTTP (ao usar transporte HTTP) |
MCP_HOST | 0.0.0.0 | Endereç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_MS | 2500 | Timeout de requisição do backend |
PRICING_API_MAX_QUOTES_SEARCH | 0 | Máximo de chamadas de preço por busca (0 = ilimitado; limites de taxa do backend se aplicam) |
PRICING_API_MAX_QUOTES_BULK | 0 | Máximo de chamadas de preço por busca em lote (0 = ilimitado; limites de taxa do backend se aplicam) |
PRICING_API_CONCURRENCY | 4 | Concorrê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_FORMAT | table | table, json, ou both para formatação de saída das ferramentas |
LOG_LEVEL | info | Nível de logging |
CACHE_TTL_AVAILABILITY | 60 | TTL do cache de disponibilidade (segundos) |
CACHE_TTL_PRICING | 3600 | TTL do cache de preços (segundos) |
CACHE_TTL_SEDO | 3600 | TTL do cache do feed de leilões Sedo (segundos) |
CACHE_TTL_AFTERMARKET_NS | 300 | TTL do cache de consulta de nameserver (segundos) |
SEDO_FEED_ENABLED | true | Habilita consulta ao feed Sedo para dicas de aftermarket |
SEDO_FEED_URL | https://sedo.com/txt/auctions_us.txt | URL do feed público Sedo |
AFTERMARKET_NS_ENABLED | true | Habilita dicas de aftermarket baseadas em nameserver |
AFTERMARKET_NS_TIMEOUT_MS | 1500 | Timeout 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_MS | 15000 | Timeout de requisição de inferência de IA |
QWEN_MAX_RETRIES | 2 | Contagem de tentativas para falhas de inferência de IA |
SLIM_TOOLS | false | Defina true para optar pela superfície enxuta de 6 ferramentas em vez do padrão completo de 12 ferramentas |
ADVANCED_TOOLS | false | Alias 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
| Fonte | Posição na Cadeia | Uso | Chaves de API |
|---|---|---|---|
| RDAP | 1ª (Primária) | Verificação rápida de disponibilidade | Não necessária |
| GoDaddy | 2ª (Fallback) | Detecção de premium/leilão | Não necessária |
| WHOIS | 3ª (Último recurso) | Disponibilidade legada | Não necessária |
| Pricing API | Paralela | Preços em tempo real via backend | Token do backend |
| Porkbun API | Paralela (BYOK) | Disponibilidade + preços | Chave de API + segredo |
| Namecheap API | Paralela (BYOK) | Disponibilidade + preços | Chave de API + whitelist de IP |
| Sedo Feed | Enriquecimento | Sugestões de leilão de mercado secundário | Nã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_urlantes 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?
| Problema | Solução |
|---|---|
| APIs de domínio exigem cadastro/chaves | RDAP + GoDaddy = disponibilidade sem configuração |
| Domínios premium aparecem como "disponíveis" | GoDaddy detecta status premium/leilão |
| Difícil verificar múltiplos TLDs | Uma única chamada verifica .com, .io, .dev, etc. |
| Sem integração de IA para nomes | Qwen 7B integrado para sugestões de marcas |
| Funciona apenas com Claude | Transporte 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
- npm: npmjs.com/package/domain-search-mcp
- MCP Registry: registry.modelcontextprotocol.io
- Glama: glama.ai/mcp/servers/@dorukardahan/domain-search-mcp
- Context7: context7.com/dorukardahan/domain-search-mcp
Documentação
- Arquitetura - Design do sistema e fluxo de dados
- Referência da API - Esquemas de ferramentas e respostas
- Configuração - Variáveis de ambiente
- Fluxos de Trabalho - Padrões de uso comuns