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
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ística | Descripción |
|---|---|
| 🔍 Búsqueda Multi-TLD | Comprueba un nombre en .com, .io, .dev, .ai y más de 500 TLD |
| 📦 Verificación Masiva | Valida hasta 100 nombres de dominio en una sola llamada |
| 💎 Detección Premium | Identifica dominios premium y de subasta vía GoDaddy |
| 🤖 Sugerencias IA | Genera nombres de marca con Qwen 7B-DPO ajustado |
| 💰 Comparación de Precios | Compara precios entre Porkbun, Namecheap |
| 🌐 Verificación de Redes Sociales | Comprueba disponibilidad de usuario en GitHub, Twitter, etc. |
| 🔌 Transporte Dual | Funciona vía stdio (Claude) o HTTP/SSE (Acciones de ChatGPT) |
| ⚡ Configuración Cero | Funciona 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
- Recomendado:
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
- Inicia el servidor HTTP (ver arriba)
- Expón vía ngrok:
ngrok http 3000 - En ChatGPT, crea un GPT personalizado y añade una Acción
- Importa la especificación OpenAPI desde
https://your-ngrok-url.ngrok-free.dev/openapi.json - ¡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
@latestpara 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 (
candidatespresente): puntúa y clasifica candidatos, luego comprueba disponibilidad para los 12 principales contratargets.tlds/targets.platforms— omitetargetspara 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.
- Claves de Porkbun:
- Claves de Namecheap (se requiere lista blanca de IP):
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
| Variable | Predeterminado | Descripción |
|---|---|---|
MCP_TRANSPORT | stdio | Modo de transporte: stdio o http |
MCP_PORT | 3000 | Puerto del servidor HTTP (cuando se usa transporte HTTP) |
MCP_HOST | 0.0.0.0 | Direcció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_MS | 2500 | Tiempo de espera de solicitudes al backend |
PRICING_API_MAX_QUOTES_SEARCH | 0 | Máximo de llamadas de precios por búsqueda (0 = ilimitado; se aplican límites de tasa del backend) |
PRICING_API_MAX_QUOTES_BULK | 0 | Máximo de llamadas de precios por búsqueda masiva (0 = ilimitado; se aplican límites de tasa del backend) |
PRICING_API_CONCURRENCY | 4 | Concurrencia 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_FORMAT | table | table, json, o both para formato de salida de herramientas |
LOG_LEVEL | info | Nivel de registro |
CACHE_TTL_AVAILABILITY | 60 | TTL de caché de disponibilidad (segundos) |
CACHE_TTL_PRICING | 3600 | TTL de caché de precios (segundos) |
CACHE_TTL_SEDO | 3600 | TTL de caché de fuente de subastas Sedo (segundos) |
CACHE_TTL_AFTERMARKET_NS | 300 | TTL de caché de búsqueda de servidores de nombres (segundos) |
SEDO_FEED_ENABLED | true | Habilita la búsqueda de fuente Sedo para pistas de mercado secundario |
SEDO_FEED_URL | https://sedo.com/txt/auctions_us.txt | URL de fuente pública de Sedo |
AFTERMARKET_NS_ENABLED | true | Habilita pistas de mercado secundario basadas en servidores de nombres |
AFTERMARKET_NS_TIMEOUT_MS | 1500 | Tiempo 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_MS | 15000 | Tiempo de espera de solicitudes de inferencia IA |
QWEN_MAX_RETRIES | 2 | Número de reintentos para fallos de inferencia IA |
SLIM_TOOLS | false | Establece true para optar por la superficie reducida de 6 herramientas en lugar del predeterminado completo de 12 |
ADVANCED_TOOLS | false | Alias 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
| Fuente | Posición en la cadena | Uso | Claves API |
|---|---|---|---|
| RDAP | 1.º (Principal) | Verificación rápida de disponibilidad | No necesarias |
| GoDaddy | 2.º (Respaldo) | Detección de premium/subastas | No necesarias |
| WHOIS | 3.º (Último recurso) | Disponibilidad heredada | No necesarias |
| API de precios | Paralelo | Precios en vivo mediante backend | Token de backend |
| API de Porkbun | Paralelo (BYOK) | Disponibilidad + precios | Clave API + secreto |
| API de Namecheap | Paralelo (BYOK) | Disponibilidad + precios | Clave API + lista blanca de IP |
| Feed de Sedo | Enriquecimiento | Sugerencias de subastas de mercado secundario | No 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_urlantes 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
| Problema | Solución |
|---|---|
| Las API de dominios requieren registro/claves | RDAP + GoDaddy = disponibilidad sin configuración |
| Los dominios premium aparecen como "disponibles" | GoDaddy detecta el estado premium/subasta |
| Difícil verificar múltiples TLD | Una sola llamada verifica .com, .io, .dev, etc. |
| Sin integración de IA para nombres | Qwen 7B integrado para sugerencias de marcas |
| Solo funciona con Claude | El 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
- npm: npmjs.com/package/domain-search-mcp
- Registro MCP: registry.modelcontextprotocol.io
- Glama: glama.ai/mcp/servers/@dorukardahan/domain-search-mcp
- Context7: context7.com/dorukardahan/domain-search-mcp
Documentación
- Arquitectura - Diseño del sistema y flujo de datos
- Referencia de API - Esquemas de herramientas y respuestas
- Configuración - Variables de entorno
- Flujos de trabajo - Patrones de uso comunes