domain-search-mcp

Domain Search MCP es un servidor MCP de código abierto que permite a los asistentes de IA verificar la disponibilidad de dominios en tiempo real.

Documentación

Domain Search MCP

npm downloads license node MCP Registry Glama Context7

Motor de nombres con inteligencia de disponibilidad — un servidor MCP que puntúa los nombres que genera tu modelo y realiza comprobaciones de disponibilidad en dominios, redes sociales y registros de paquetes. Funciona con configuración cero usando RDAP/WHOIS públicos y, opcionalmente, enriquece los resultados con precios de registradores mediante un backend que tú controlas.

🆕 v1.12.0: name_project — un motor de nombres en dos fases. Llámalo una vez para obtener instrucciones de generación para tu modelo, llámalo de nuevo con candidates[] para obtener puntuación anti-relleno, clasificación y comprobaciones de disponibilidad en vivo en dominios, redes sociales y npm. Consulta name_project a continuación.

🆕 v1.10.0: ¡Integración con el endpoint público de GoDaddy! Cadena de respaldo mejorada (RDAP → GoDaddy → WHOIS) con detección de dominios premium/subasta. El patrón de interruptor de circuito garantiza la resiliencia.

🤖 v1.9.0+: Las sugerencias de dominios impulsadas por IA funcionan de inmediato. No se necesitan claves API: suggest_domains_smart utiliza nuestro modelo público ajustado Qwen 7B-DPO. Además: caché distribuida con Redis y endpoint /metrics para observabilidad.

Construido sobre el Protocolo de Contexto de Modelo para Claude, Codex, VS Code, Cursor, Cline y otros clientes compatibles con MCP.

Características

CaracterísticaDescripción
🔍 Búsqueda Multi-TLDComprueba un nombre en .com, .io, .dev, .ai y más de 500 TLD
📦 Verificación MasivaValida hasta 100 nombres de dominio en una sola llamada
💎 Detección PremiumIdentifica dominios premium y de subasta vía GoDaddy
🤖 Sugerencias IAGenera nombres de marca con Qwen 7B-DPO ajustado
💰 Comparación de PreciosCompara precios entre Porkbun, Namecheap
🌐 Verificación de Redes SocialesComprueba disponibilidad de usuario en GitHub, Twitter, etc.
🔌 Transporte DualFunciona vía stdio (Claude) o HTTP/SSE (Acciones de ChatGPT)
Configuración CeroFunciona al instante: no se requieren claves API para disponibilidad

Qué Hace

  • Comprueba un solo nombre en múltiples TLD.
  • Verificación masiva de hasta 100 nombres para un TLD.
  • Compara precios de registradores (usa backend cuando está configurado).
  • Sugiere nombres y valida identificadores de redes sociales.
  • Detecta señales premium/subasta para search_domain.

Cómo Funciona

La disponibilidad y los precios están intencionalmente separados:

Availability Chain (zero-config):
┌─────────┐     ┌─────────┐     ┌─────────┐
│  RDAP   │ ──► │ GoDaddy │ ──► │  WHOIS  │
│ (fast)  │     │(premium)│     │(fallback│
└─────────┘     └─────────┘     └─────────┘
  • Disponibilidad (predeterminado, sin claves necesarias):
    • RDAP: Fuente principal: datos públicos de registro rápidos, ilimitados
    • GoDaddy: Secundaria: añade detección premium/subasta (30 req/min, protegido por interruptor de circuito)
    • WHOIS: Último recurso para casos límite
  • Precios (opcional):
    • Recomendado: PRICING_API_BASE_URL (backend con claves de Porkbun)
    • BYOK opcional: Porkbun/Namecheap solo cuando el backend no está configurado

Esto mantiene el servidor con configuración cero mientras permite a los usuarios avanzados habilitar precios.

Verificación de Precios

Las respuestas incluyen price_check_url (enlace de pago/búsqueda del registrador) y pueden incluir price_note cuando se estima un precio. Siempre verifica el precio final en la página de pago del registrador antes de comprar.

Si se detecta una señal de subasta/premium, los resultados incluyen un bloque aftermarket con enlaces a páginas de mercado cuando estén disponibles. Los dominios tomados pueden incluir pistas de subasta de Sedo (fuente pública) y pistas de mercado basadas en servidores de nombres (Sedo/Dan/Afternic).

Inicio Rápido

Opción 1: npx (Recomendado)

No se necesita instalación: ejecuta directamente:

npx -y domain-search-mcp@latest

Opción 2: Desde el Código Fuente

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

Opciones de Transporte

stdio (Predeterminado)

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 Acciones de ChatGPT, aplicaciones web y 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 mensajes, GET para flujo SSE)
  • /api/tools/* - API REST para cada herramienta (compatible con Acciones de ChatGPT)
  • /openapi.json - Especificación OpenAPI 3.1
  • /health - Verificación de estado
  • /metrics - Métricas compatibles con Prometheus (estadísticas de caché, recuentos de solicitudes, estado de inferencia IA)

Integración con GPT Personalizado de ChatGPT

  1. Inicia el servidor HTTP (ver arriba)
  2. Expón vía ngrok: ngrok http 3000
  3. En ChatGPT, crea un GPT personalizado y añade una Acción
  4. Importa la especificación OpenAPI desde https://your-ngrok-url.ngrok-free.dev/openapi.json
  5. ¡Prueba las herramientas!

Para despliegue en producción, usa un dominio permanente con SSL en lugar de ngrok.

Ejemplo de API REST:

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

Configuración del Cliente MCP

Claude Code (.mcp.json en la raíz del proyecto):

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

💡 Consejo: Usa siempre @latest para asegurarte de que ejecutas la versión más reciente con todas las funciones.

Herramientas

Las 12 herramientas listadas a continuación están expuestas a los clientes MCP por defecto. El perfil reducido de 6 herramientas (name_project, search_domain, bulk_search, check_socials, tld_info, ai_health) es opcional: establece SLIM_TOOLS=true si quieres una superficie de selección de herramientas más precisa para integraciones de cliente más simples (consulta Variables de Entorno). Una futura versión 2.0 podría cambiar el valor predeterminado a reducido.

ADVANCED_TOOLS=true es un alias obsoleto que fuerza la superficie completa y anula SLIM_TOOLS; es un no-op inofensivo hoy ya que completo es el predeterminado.

name_project

Motor de nombres insignia en dos fases. Llámalo una vez para obtener instrucciones de generación carril por carril para tu modelo; llámalo de nuevo con candidates[] para obtener puntuación anti-relleno, clasificación y comprobaciones de disponibilidad en vivo en dominios, redes sociales y npm.

  • Modos: brief (describe lo que estás nombrando), auto (analiza el espacio de trabajo actual), from_name (encuentra dominios/variantes para un nombre que ya te gusta), from_domain (ajusta un proyecto/marca a un dominio que encontraste).
  • Fase 1 (sin candidates): devuelve instrucciones de generación + indicaciones de carril.
  • Fase 2 (candidates presente): puntúa y clasifica candidatos, luego comprueba disponibilidad para los 12 principales contra targets.tlds / targets.platforms — omite targets para solo nombrar sin llamadas de disponibilidad.

Las puntuaciones son clasificaciones heurísticas para comparar candidatos entre sí — no son verdad objetiva y universal de capacidad de marca. Los resultados de disponibilidad reflejan una única fuente comprobada en un momento dado; vuelve a verificar antes de registrar o confiar en cualquier cosa.

Fase 1 — llama sin 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 — reenvía los mismos argumentos más 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.

Insignias: tld✓ libre para registrar, tld$ en venta (mercado secundario/premium - registrado o con precio, no libre para registrar), tld✗ tomado, tld? desconocido. Las comprobaciones de ccTLD (.ai / .io / .sh / .ac) se contrastan con la verdad de terreno nativa WHOIS/DNS, no se toman solo por la palabra de RDAP.

Consulta docs/API.md para el esquema completo de parámetros/respuestas.

Búsqueda Principal

  • search_domain: Comprueba un nombre en múltiples TLD, añade señales premium/subasta.
  • bulk_search: Comprueba hasta 100 nombres para un solo TLD.
  • compare_registrars: Compara precios entre registradores (backend cuando está configurado).

Sugerencias Impulsadas por IA

  • suggest_domains: Genera variaciones (prefijo/sufijo/guion).
  • suggest_domains_smart: 🤖 Impulsado por IA generación de nombres de marca usando Qwen 7B-DPO ajustado. ¡Configuración cero: funciona al instante!
  • analyze_project: Escanea un proyecto local o repositorio de GitHub para extraer contexto y sugerir nombres de dominio coincidentes.

Inversión en Dominios

  • hunt_domains: Encuentra dominios valiosos para inversión: escanea subastas de Sedo, genera patrones, calcula puntuaciones de inversión.
  • expiring_domains: Monitorea dominios que se acercan a la expiración (requiere caché negativa federada).

Utilidades

  • tld_info: Metadatos y restricciones de TLD.
  • check_socials: Disponibilidad de nombre de usuario en múltiples plataformas.
  • ai_health: Comprueba el estado de los servicios de inferencia IA (VPS Qwen, interruptores de circuito, concurrencia adaptativa).

Configuración

Backend de Precios (Recomendado)

Establece una URL de backend que posea las claves del registrador (Porkbun). El MCP llamará a /api/quote y /api/compare en ese backend para los precios.

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

BYOK Opcional (Local)

Se usa solo si PRICING_API_BASE_URL no está establecido.

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

Caché Distribuida Redis (Opcional)

Para escalado horizontal en múltiples instancias MCP, configura Redis:

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

Sin Redis, el servidor usa caché en memoria (funciona bien para instancias únicas). Redis permite:

  • Caché compartida entre múltiples instancias del servidor
  • Caché persistente que sobrevive reinicios
  • Mejores tasas de acierto de caché en despliegues con balanceo de carga

Inferencia IA (trae tu propio endpoint)

Las sugerencias impulsadas por IA (suggest_domains_smart) usan tu propio endpoint de inferencia cuando está configurado. Apunta QWEN_INFERENCE_ENDPOINT a un servidor llama.cpp/Qwen que controles. Si no está establecido, las sugerencias recurren al motor semántico offline integrado (sin llamadas externas, sin claves API necesarias).

# 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

Variables de Entorno

VariablePredeterminadoDescripción
MCP_TRANSPORTstdioModo de transporte: stdio o http
MCP_PORT3000Puerto del servidor HTTP (cuando se usa transporte HTTP)
MCP_HOST0.0.0.0Dirección de enlace del servidor HTTP
CORS_ORIGINS*Orígenes CORS permitidos (separados por comas)
PRICING_API_BASE_URL-URL base del backend de precios
PRICING_API_TOKEN-Token bearer opcional
PRICING_API_TIMEOUT_MS2500Tiempo de espera de solicitudes al backend
PRICING_API_MAX_QUOTES_SEARCH0Máximo de llamadas de precios por búsqueda (0 = ilimitado; se aplican límites de tasa del backend)
PRICING_API_MAX_QUOTES_BULK0Máximo de llamadas de precios por búsqueda masiva (0 = ilimitado; se aplican límites de tasa del backend)
PRICING_API_CONCURRENCY4Concurrencia de solicitudes de precios
PORKBUN_API_KEY-Clave API de Porkbun
PORKBUN_API_SECRET-Secreto API de Porkbun
NAMECHEAP_API_KEY-Clave API de Namecheap
NAMECHEAP_API_USER-Nombre de usuario de Namecheap
NAMECHEAP_CLIENT_IP-Lista blanca de IP de Namecheap
OUTPUT_FORMATtabletable, json, o both para formato de salida de herramientas
LOG_LEVELinfoNivel de registro
CACHE_TTL_AVAILABILITY60TTL de caché de disponibilidad (segundos)
CACHE_TTL_PRICING3600TTL de caché de precios (segundos)
CACHE_TTL_SEDO3600TTL de caché de fuente de subastas Sedo (segundos)
CACHE_TTL_AFTERMARKET_NS300TTL de caché de búsqueda de servidores de nombres (segundos)
SEDO_FEED_ENABLEDtrueHabilita la búsqueda de fuente Sedo para pistas de mercado secundario
SEDO_FEED_URLhttps://sedo.com/txt/auctions_us.txtURL de fuente pública de Sedo
AFTERMARKET_NS_ENABLEDtrueHabilita pistas de mercado secundario basadas en servidores de nombres
AFTERMARKET_NS_TIMEOUT_MS1500Tiempo de espera de búsqueda de servidores de nombres (ms)
REDIS_URL-URL de conexión Redis para caché distribuida (p. ej., redis://:password@host:6379)
QWEN_INFERENCE_ENDPOINT(ninguno)Tu propio endpoint de inferencia IA para suggest_domains_smart (respaldo semántico offline si no está establecido)
QWEN_TIMEOUT_MS15000Tiempo de espera de solicitudes de inferencia IA
QWEN_MAX_RETRIES2Número de reintentos para fallos de inferencia IA
SLIM_TOOLSfalseEstablece true para optar por la superficie reducida de 6 herramientas en lugar del predeterminado completo de 12
ADVANCED_TOOLSfalseAlias obsoleto para la bandera pre-SLIM_TOOLS. Establece true para forzar la superficie completa de 12 herramientas y anular SLIM_TOOLS; no-op ya que completo es el predeterminado

Formato de Salida

Las respuestas de las herramientas se devuelven como tablas Markdown por defecto. Si necesitas JSON crudo para uso programático, establece:

OUTPUT_FORMAT=json

Fuentes de Datos

FuentePosición en la cadenaUsoClaves API
RDAP1.º (Principal)Verificación rápida de disponibilidadNo necesarias
GoDaddy2.º (Respaldo)Detección de premium/subastasNo necesarias
WHOIS3.º (Último recurso)Disponibilidad heredadaNo necesarias
API de preciosParaleloPrecios en vivo mediante backendToken de backend
API de PorkbunParalelo (BYOK)Disponibilidad + preciosClave API + secreto
API de NamecheapParalelo (BYOK)Disponibilidad + preciosClave API + lista blanca de IP
Feed de SedoEnriquecimientoSugerencias de subastas de mercado secundarioNo necesarias

Comportamiento de precios

  • El precio en vivo se intenta primero para cada dominio disponible.
  • Si las cotizaciones en vivo fallan o están limitadas por tasa, el resultado recurre a la estimación del catálogo e incluye price_note.
  • Siempre verifica los precios mediante price_check_url antes de comprar.

Ejemplos

Búsqueda básica (sin claves API)

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

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

Sugerencias impulsadas por IA

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

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

Verificación masiva

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

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

Desarrollo

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

Lanzamiento

Consulta docs/RELEASE.md para el flujo de lanzamiento activado por etiquetas. Las etiquetas de versión activan el lanzamiento de GitHub Release, la publicación npm de confianza con procedencia, y la publicación en el Registro MCP mediante GitHub Actions.

Registro de cambios

Consulta CHANGELOG.md para el historial de lanzamientos.

Notas de seguridad

  • No confirmes claves API ni archivos .mcpregistry_*.
  • Sin PRICING_API_BASE_URL (o claves BYOK), los precios no están disponibles (la disponibilidad sigue funcionando).

Actualización

Para usuarios de npx

Si usas npx domain-search-mcp (sin @latest), npx puede almacenar en caché una versión antigua.

Solución: Actualiza tu configuración de MCP para usar @latest:

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

O limpia la caché de npx manualmente:

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

Para usuarios de fuente/Git

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

Mantente actualizado

  • Observa el repositorio: Haz clic en "Watch" → "Releases only" en GitHub para recibir notificaciones de nuevas versiones.
  • Consulta los lanzamientos: Mira GitHub Releases para el registro de cambios y notas de actualización.
  • Página de npm: npmjs.com/package/domain-search-mcp muestra la última versión.

Arquitectura

Para diagramas detallados de la arquitectura del sistema, consulta docs/ARCHITECTURE.md:

  • Capa de transporte (stdio vs HTTP/SSE)
  • Flujo de ejecución de herramientas
  • Cascada de fuentes de datos (RDAP → API de precios → WHOIS)
  • Arquitectura de despliegue en VPS
  • Flujo de sugerencias de IA
  • Ciclo de vida de sesión de MCP

Por qué esta herramienta

ProblemaSolución
Las API de dominios requieren registro/clavesRDAP + GoDaddy = disponibilidad sin configuración
Los dominios premium aparecen como "disponibles"GoDaddy detecta el estado premium/subasta
Difícil verificar múltiples TLDUna sola llamada verifica .com, .io, .dev, etc.
Sin integración de IA para nombresQwen 7B integrado para sugerencias de marcas
Solo funciona con ClaudeEl transporte HTTP admite ChatGPT, LM Studio

Preguntas frecuentes

P: ¿Funciona sin ninguna clave API? R: ¡Sí! La verificación de disponibilidad usa endpoints públicos de RDAP y GoDaddy. Solo los precios requieren claves API.

P: ¿Qué clientes de MCP son compatibles? R: Claude Desktop, Claude Code, VS Code, Cursor, Cline (stdio), y ChatGPT, LM Studio (HTTP/SSE).

P: ¿Qué tan precisa es la detección de dominios premium? R: El endpoint público de GoDaddy detecta la mayoría de los dominios premium y de subasta. Siempre verifica en el registro al finalizar la compra.

P: ¿Puedo alojar las sugerencias de IA por mi cuenta? R: ¡Sí! Configura QWEN_INFERENCE_ENDPOINT a tu servidor llama.cpp que ejecute el modelo ajustado.

Enlaces

Documentación