Internet-Names-MCP
Verificar disponibilidad de nombres de dominio, identificadores de redes sociales y subreddits
Documentación
Internet Names MCP Server
Un servidor MCP para comprobar la disponibilidad de nombres de dominio, nombres de usuario en redes sociales y subreddits. Devuelve respuestas JSON limpias adecuadas para uso programático.
Características
- Nombres de dominio - Comprueba la disponibilidad mediante RDAP (gratuito) o la API de NameSilo (gratuita, pero requiere clave de API; las respuestas también incluyen precios de dominios)
- Nombres de usuario en redes sociales - Instagram, Twitter/X, Reddit, YouTube, TikTok, Twitch, Threads
- Subreddits - Comprueba si los nombres de subreddit están disponibles en Reddit
- Búsqueda exhaustiva - Genera combinaciones de nombres y comprueba todo a la vez
Inicio rápido
1. Añadir a Claude Code (Recomendado)
claude mcp add --scope user internet-names-mcp uvx internet-names-mcp
¡Eso es todo! El servidor funciona inmediatamente usando RDAP para las consultas de dominios.
2. Opcional: Configurar la API de NameSilo (para precios de dominios)
La comprobación de disponibilidad de nombres de dominio funciona mejor si configuras una clave de API de NameSilo. Es gratuita y solo requiere un registro básico. De lo contrario, recurrimos a RDAP, que tiene algunas limitaciones significativas (ver más abajo).
Configura tu clave de API de NameSilo
- Crea una cuenta en namesilo.com (o inicia sesión)
- Ve al Administrador de API
- Haz clic en Generar nueva clave de API
- Copia la clave y ejecuta:
uvx internet-names-mcp --setup
Se te pedirá que pegues tu clave de API.
En macOS, tu clave de API se almacena de forma segura en tu llavero de iCloud o de inicio de sesión como internet-names-mcp.namesilo. En otras plataformas, se almacena en ~/.config/internet-names-mcp/config.json.
Usar --setup es el método preferido, ya que almacena la clave de forma segura. Alternativamente, puedes configurarla mediante una variable de entorno (consulta Configuración manual más abajo).
Configuración manual
Si no usas Claude Code, o prefieres configurar los servidores MCP manualmente, añade esto al archivo de configuración de tu cliente MCP (por ejemplo, claude_desktop_config.json para Claude Desktop):
{
"mcpServers": {
"internet-names-mcp": {
"command": "uvx",
"args": ["internet-names-mcp"]
}
}
}
Para incluir una clave de API de NameSilo mediante variable de entorno (si no has usado --setup):
{
"mcpServers": {
"internet-names-mcp": {
"command": "uvx",
"args": ["internet-names-mcp"],
"env": {
"NAMESILO_API_KEY": "your_api_key_here"
}
}
}
}
Nota: Usar uvx internet-names-mcp --setup para almacenar la clave de API es preferible a las variables de entorno, ya que utiliza almacenamiento seguro (Llavero de macOS) cuando está disponible.
Comandos CLI
uvx internet-names-mcp --setup # Configure API keys interactively
uvx internet-names-mcp --show-config # Show current configuration
uvx internet-names-mcp --version # Show version
uvx internet-names-mcp --help # Show help
Herramientas
get_supported_socials()
Devuelve la lista de plataformas de redes sociales compatibles.
Respuesta:
{
"platforms": ["instagram", "twitter", "reddit", "youtube", "tiktok", "twitch", "threads", "subreddit"]
}
Nota: subreddit se comprueba mediante check_subreddits(), no check_handles().
check_domains(names, tlds?, method?, only_report_available?)
Comprueba la disponibilidad y el precio de los nombres de dominio.
Parámetros:
| Nombre | Tipo | Predeterminado | Descripción |
|---|---|---|---|
names | list[str] | requerido | Nombres de dominio o nombres base a comprobar |
tlds | list[str] | ["com", "io", "ai", "co", "app", "dev", "net", "org"] | TLDs a comprobar |
method | str | "auto" | "auto", "rdap" o "namesilo" |
only_report_available | bool | false | Si es verdadero, omite los dominios no disponibles de la respuesta |
Si un nombre contiene un punto, se trata como un dominio completo. De lo contrario, se combina con cada TLD.
Respuesta:
{
"available": [
{"domain": "myapp.com", "price": 17.29},
{"domain": "myapp.io", "price": 34.99}
],
"unavailable": ["myapp.ai"],
"summary": {
"cheapestAvailable": {"domain": "myapp.com", "price": 17.29},
"shortestAvailable": {"domain": "myapp.io", "price": 34.99}
}
}
check_handles(username, platforms?, only_report_available?)
Comprueba la disponibilidad de nombres de usuario en redes sociales en varias plataformas.
Parámetros:
| Nombre | Tipo | Predeterminado | Descripción |
|---|---|---|---|
username | str | requerido | El nombre de usuario/handle a comprobar |
platforms | list[str] | todas las plataformas | Plataformas a comprobar |
only_report_available | bool | false | Si es verdadero, omite los handles no disponibles de la respuesta |
Plataformas compatibles: instagram, twitter, reddit, youtube, tiktok, twitch, threads
Nota: La comprobación de Twitter/X utiliza un navegador sin interfaz gráfica y tarda ~4 segundos.
Respuesta:
{
"available": ["instagram", "tiktok", "youtube"],
"unavailable": [
{"platform": "twitter", "url": "https://x.com/myapp"},
{"platform": "reddit", "url": "https://reddit.com/user/myapp"}
]
}
check_subreddits(names, only_report_available?)
Comprueba la disponibilidad de nombres de subreddit en Reddit.
Parámetros:
| Nombre | Tipo | Predeterminado | Descripción |
|---|---|---|---|
names | list[str] | requerido | Nombres de subreddit a comprobar (con o sin el prefijo r/) |
only_report_available | bool | false | Si es verdadero, omite los subreddits no disponibles de la respuesta |
Respuesta:
{
"available": ["mynewsubreddit"],
"unavailable": [
{"name": "programming", "subscribers": 6835000},
{"name": "privatesubreddit", "note": "private"}
]
}
check_everything(components, tlds?, platforms?, method?, require_all_tlds_available?, only_report_available?, also_include_hyphens?)
Comprobación exhaustiva en dominios y redes sociales. Genera combinaciones de nombres a partir de componentes, comprueba primero los dominios (rápido) y luego comprueba los handles sociales de los nombres que superan la comprobación de dominios.
Parámetros:
| Nombre | Tipo | Predeterminado | Descripción |
|---|---|---|---|
components | list[str] | requerido | Componentes de nombre a combinar (p. ej., ["red", "sweater"]) |
tlds | list[str] | ["com", "net", "org", "io", "ai"] | TLDs a comprobar |
platforms | list[str] | todas las plataformas | Plataformas sociales a comprobar |
method | str | "auto" | "auto", "rdap" o "namesilo" |
require_all_tlds_available | bool | false | Si es verdadero, el nombre debe estar disponible en TODOS los TLDs para calificar para la comprobación de handles |
only_report_available | bool | false | Si es verdadero, omite los elementos no disponibles de la respuesta |
also_include_hyphens | bool | false | Si es verdadero, también comprueba las versiones con guiones |
Generación de nombres:
A partir de los componentes ["red", "sweater"], genera:
- Componentes individuales:
red,sweater - Concatenaciones:
redsweater,sweaterred
Respuesta:
{
"available_domains": [
{"domain": "redsweater.com", "price": 17.29},
{"domain": "redsweater.io", "price": 34.99}
],
"domain_successful_basenames": ["redsweater", "sweaterred"],
"available_handles": {
"redsweater": ["instagram", "twitter", "youtube"],
"sweaterred": ["instagram", "tiktok"]
},
"unavailable_handles": {
"redsweater": [{"platform": "reddit", "url": "..."}]
},
"summary": {
"fully_available": ["sweaterred"],
"cheapest_domain": {"domain": "redsweater.com", "price": 17.29}
}
}
La lista fully_available contiene nombres que están disponibles en TODAS las plataformas comprobadas.
Métodos de consulta de dominios
| Método | Descripción | Precios | Velocidad |
|---|---|---|---|
auto | Usa NameSilo si hay clave de API configurada; de lo contrario, RDAP | Con NameSilo | Rápido |
rdap | Consultas directas al registro mediante bootstrap de IANA | No | Rápido |
namesilo | API de NameSilo (requiere clave de API) | Sí | Rápido |
Limitaciones de RDAP
RDAP es gratuito y no requiere clave de API, pero tiene algunas limitaciones:
- Cobertura de TLDs - No todos los dominios de nivel superior (TLDs) tienen servidores RDAP. Las consultas para TLDs no compatibles fallarán. RDAP funciona para .com, .net, .org, .app, .ai y más. Consulta deployment.rdap.org para obtener una lista actualizada (busca 'Sí' en la columna 'RDAP').
- Sin precios - RDAP solo informa de la disponibilidad, no del coste de registrar el dominio.
- Falsos positivos - Un dominio puede parecer disponible mediante RDAP pero en realidad estar reservado o ser considerado "premium" por los registradores, lo que lo hace efectivamente no disponible o prohibitivamente caro de comprar.
Para obtener resultados fiables con precios, configura una clave de API de NameSilo.
Configuración
Almacenamiento de la clave de API:
- macOS: Llavero (como
internet-names-mcp.namesilo) - Linux:
~/.config/internet-names-mcp/config.json - Windows:
%APPDATA%/internet-names-mcp/config.json
Orden de búsqueda de la clave de API (la primera coincidencia gana):
- Llavero de macOS (solo en macOS)
- Variable de entorno (
NAMESILO_API_KEY) - Archivo de configuración (respaldo)
Desarrollo
Configuración local
El script devsetup.sh gestiona la creación del entorno virtual y la instalación de dependencias:
git clone <repo-url> InternetNamesMCP
cd InternetNamesMCP
source devsetup.sh # Creates .venv, activates it, installs dependencies
playwright install chromium # Required for Twitter/X handle checking
Opciones:
source devsetup.sh- Configurar el entorno (predeterminado)source devsetup.sh --clean- Eliminar venv y cachéssource devsetup.sh --clean --setup- Reconstrucción limpia
Configuración de la clave de API (Desarrollo)
Al ejecutar desde el código fuente, usa el módulo directamente en lugar de uvx:
source devsetup.sh # Activate environment first
python -m internet_names_mcp --setup # Configure API keys interactively
python -m internet_names_mcp --show-config # Show current configuration and key source
python -m internet_names_mcp --version # Show version
Ejecutar pruebas
source devsetup.sh # Activate environment first
# Main test suites
python test_server.py # Full test suite - offline validation + online API tests
python test_mcp_interface.py # Tests via MCP protocol (stdio transport)
python test_rdap_client.py # Async RDAP client, rate limiter, batch queries
# Comparison/diagnostic tests
python test_methods.py # Compare RDAP vs NameSilo results for discrepancies
python test_rdap.py # Quick RDAP-only domain check
| Archivo de prueba | Descripción |
|---|---|
test_server.py | Suite de pruebas principal que cubre todas las herramientas MCP, casos límite y llamadas a API |
test_mcp_interface.py | Prueba el servidor mediante el protocolo MCP real a través de stdio |
test_rdap_client.py | Prueba el cliente RDAP asíncrono, la limitación de velocidad y las consultas por lotes |
test_methods.py | Compara RDAP vs NameSilo para detectar discrepancias de disponibilidad |
test_rdap.py | Prueba simple solo con RDAP para comprobaciones rápidas de disponibilidad de dominios |
Pruebas interactivas
Usa MCP Inspector para depuración interactiva con una interfaz web:
npx @modelcontextprotocol/inspector .venv/bin/python -m internet_names_mcp
Estructura del proyecto
├── src/internet_names_mcp/
│ ├── __init__.py # CLI entry point
│ ├── __main__.py # Module runner
│ ├── server.py # MCP server
│ ├── config.py # Configuration management
│ ├── rdap_bootstrap.py # RDAP bootstrap cache
│ └── rdap_client.py # Async RDAP client
├── pyproject.toml # Package configuration
└── README.md
Archivos de datos
Caché de bootstrap RDAP - Asigna TLDs a sus servidores RDAP autoritativos (descargado automáticamente de IANA):
- macOS/Linux:
~/.cache/internet-names-mcp/rdap_bootstrap.json - Windows:
%APPDATA%/internet-names-mcp/rdap_bootstrap.json
La caché se actualiza automáticamente cuando caduca (TTL predeterminado de 24 h según las cabeceras Cache-Control de IANA).
Solución de problemas
"sherlock no encontrado"
Sherlock se instala automáticamente como dependencia. Si ves este error, reinstala:
uvx --reinstall internet-names-mcp
"playwright no instalado" o errores de Chromium
Instala el navegador Playwright:
playwright install chromium
O con uvx:
uvx --from playwright install chromium
Las comprobaciones de Twitter fallan o agotan el tiempo
Las comprobaciones de Twitter/X utilizan un navegador sin interfaz gráfica que puede ser lento o estar bloqueado. Si las comprobaciones fallan de forma constante, Twitter puede estar limitando la velocidad o bloqueando el acceso automatizado.
Copyright
Copyright (C) 2026 Nuclear Cyborg Corp