Internet-Names-MCP
Verifique a disponibilidade de nomes de domínio, handles de redes sociais e subreddits
Documentação
Servidor MCP Internet Names
Um servidor MCP para verificar a disponibilidade de nomes de domínio, handles de mídias sociais e subreddits. Retorna respostas JSON limpas, adequadas para uso programático.
Recursos
- Nomes de domínio - Verifique a disponibilidade via RDAP (gratuito) ou API NameSilo (gratuita, mas requer chave de API - as respostas também incluem preços de domínio)
- Handles de mídias sociais - Instagram, Twitter/X, Reddit, YouTube, TikTok, Twitch, Threads
- Subreddits - Verifique se nomes de subreddits estão disponíveis no Reddit
- Busca abrangente - Gere combinações de nomes e verifique tudo de uma vez
Início Rápido
1. Adicionar ao Claude Code (Recomendado)
claude mcp add --scope user internet-names-mcp uvx internet-names-mcp
Pronto! O servidor funciona imediatamente usando RDAP para consultas de domínio.
2. Opcional: Configurar API NameSilo (para preços de domínio)
A verificação de disponibilidade de nomes de domínio funciona melhor se você configurar uma chave de API NameSilo. É gratuita e requer apenas um cadastro básico. Caso contrário, usamos RDAP como fallback, que tem algumas limitações significativas (veja abaixo).
Configure sua chave de API NameSilo
- Crie uma conta em namesilo.com (ou faça login)
- Vá para API Manager
- Clique em Gerar Nova Chave de API
- Copie a chave e execute:
uvx internet-names-mcp --setup
Você será solicitado a colar sua chave de API.
No macOS, sua chave de API é armazenada com segurança no keychain do iCloud ou de login como internet-names-mcp.namesilo. Em outras plataformas, ela é armazenada em ~/.config/internet-names-mcp/config.json.
Usar --setup é o método preferido, pois armazena a chave com segurança. Alternativamente, você pode defini-la via variável de ambiente (veja Configuração Manual abaixo).
Configuração Manual
Se você não estiver usando o Claude Code, ou preferir configurar servidores MCP manualmente, adicione isto ao arquivo de configuração do seu cliente MCP (ex.: claude_desktop_config.json para Claude Desktop):
{
"mcpServers": {
"internet-names-mcp": {
"command": "uvx",
"args": ["internet-names-mcp"]
}
}
}
Para incluir uma chave de API NameSilo via variável de ambiente (se você não usou --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 armazenar a chave de API é preferível a variáveis de ambiente, pois utiliza armazenamento seguro (Keychain do macOS) quando disponível.
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
Ferramentas
get_supported_socials()
Retorna a lista de plataformas de mídia social suportadas.
Resposta:
{
"platforms": ["instagram", "twitter", "reddit", "youtube", "tiktok", "twitch", "threads", "subreddit"]
}
Nota: subreddit é verificado via check_subreddits(), não check_handles().
check_domains(names, tlds?, method?, only_report_available?)
Verifica a disponibilidade e o preço de nomes de domínio.
Parâmetros:
| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
names | list[str] | obrigatório | Nomes de domínio ou nomes base para verificar |
tlds | list[str] | ["com", "io", "ai", "co", "app", "dev", "net", "org"] | TLDs para verificar |
method | str | "auto" | "auto", "rdap" ou "namesilo" |
only_report_available | bool | false | Se verdadeiro, omite domínios indisponíveis da resposta |
Se um nome contém um ponto, ele é tratado como um domínio completo. Caso contrário, é combinado com cada TLD.
Resposta:
{
"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?)
Verifica a disponibilidade de handles de mídia social em várias plataformas.
Parâmetros:
| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
username | str | obrigatório | O nome de usuário/handle para verificar |
platforms | list[str] | todas as plataformas | Plataformas para verificar |
only_report_available | bool | false | Se verdadeiro, omite handles indisponíveis da resposta |
Plataformas suportadas: instagram, twitter, reddit, youtube, tiktok, twitch, threads
Nota: A verificação do Twitter/X usa um navegador headless e leva ~4 segundos.
Resposta:
{
"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?)
Verifica a disponibilidade de nomes de subreddits no Reddit.
Parâmetros:
| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
names | list[str] | obrigatório | Nomes de subreddits para verificar (com ou sem o prefixo r/) |
only_report_available | bool | false | Se verdadeiro, omite subreddits indisponíveis da resposta |
Resposta:
{
"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?)
Verificação abrangente em domínios e mídias sociais. Gera combinações de nomes a partir dos componentes, verifica domínios primeiro (rápido) e depois verifica handles sociais para nomes que passam na verificação de domínio.
Parâmetros:
| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
components | list[str] | obrigatório | Componentes de nome para combinar (ex.: ["red", "sweater"]) |
tlds | list[str] | ["com", "net", "org", "io", "ai"] | TLDs para verificar |
platforms | list[str] | todas as plataformas | Plataformas sociais para verificar |
method | str | "auto" | "auto", "rdap" ou "namesilo" |
require_all_tlds_available | bool | false | Se verdadeiro, o nome deve estar disponível em TODOS os TLDs para se qualificar para a verificação de handles |
only_report_available | bool | false | Se verdadeiro, omite itens indisponíveis da resposta |
also_include_hyphens | bool | false | Se verdadeiro, também verifica versões com hífen |
Geração de Nomes:
A partir dos componentes ["red", "sweater"], gera:
- Componentes únicos:
red,sweater - Concatenações:
redsweater,sweaterred
Resposta:
{
"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}
}
}
A lista fully_available contém nomes disponíveis em TODAS as plataformas verificadas.
Métodos de Consulta de Domínio
| Método | Descrição | Preço | Velocidade |
|---|---|---|---|
auto | Usa NameSilo se a chave de API estiver configurada, caso contrário RDAP | Com NameSilo | Rápido |
rdap | Consultas diretas ao registro via bootstrap da IANA | Não | Rápido |
namesilo | API NameSilo (requer chave de API) | Sim | Rápido |
Limitações do RDAP
RDAP é gratuito e não requer chave de API, mas tem algumas limitações:
- Cobertura de TLDs - Nem todos os domínios de topo (TLDs) possuem servidores RDAP. Consultas para TLDs não suportados falharão. RDAP funciona para .com, .net, .org, .app, .ai e outros. Veja deployment.rdap.org para uma lista atualizada (procure por 'Sim' na coluna 'RDAP').
- Sem preços - RDAP apenas informa a disponibilidade, não o custo para registrar o domínio.
- Falsos positivos - Um domínio pode parecer disponível via RDAP, mas na verdade estar reservado ou ser considerado "premium" pelos registradores, tornando-o efetivamente indisponível ou proibitivamente caro para comprar.
Para resultados confiáveis com preços, configure uma chave de API NameSilo.
Configuração
Armazenamento da chave de API:
- macOS: Keychain (como
internet-names-mcp.namesilo) - Linux:
~/.config/internet-names-mcp/config.json - Windows:
%APPDATA%/internet-names-mcp/config.json
Ordem de busca da chave de API (a primeira correspondência vence):
- Keychain do macOS (somente no macOS)
- Variável de ambiente (
NAMESILO_API_KEY) - Arquivo de configuração (fallback)
Desenvolvimento
Configuração Local
O script devsetup.sh gerencia a criação do ambiente virtual e a instalação de dependências:
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
Opções:
source devsetup.sh- Configurar ambiente (padrão)source devsetup.sh --clean- Excluir venv e cachessource devsetup.sh --clean --setup- Reconstrução limpa
Configuração da Chave de API (Desenvolvimento)
Ao executar a partir do código-fonte, use o módulo diretamente em vez 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
Executando Testes
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
| Arquivo de Teste | Descrição |
|---|---|
test_server.py | Suíte de testes principal cobrindo todas as ferramentas MCP, casos extremos e chamadas de API |
test_mcp_interface.py | Testa o servidor através do protocolo MCP real via stdio |
test_rdap_client.py | Testa o cliente RDAP assíncrono, limitação de taxa e consultas em lote |
test_methods.py | Compara RDAP vs NameSilo para detectar discrepâncias de disponibilidade |
test_rdap.py | Teste simples apenas com RDAP para verificações rápidas de disponibilidade de domínio |
Testes Interativos
Use o MCP Inspector para depuração interativa com uma interface web:
npx @modelcontextprotocol/inspector .venv/bin/python -m internet_names_mcp
Estrutura do Projeto
├── 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
Arquivos de Dados
Cache de Bootstrap RDAP - Mapeia TLDs para seus servidores RDAP autoritativos (baixado automaticamente da IANA):
- macOS/Linux:
~/.cache/internet-names-mcp/rdap_bootstrap.json - Windows:
%APPDATA%/internet-names-mcp/rdap_bootstrap.json
O cache é atualizado automaticamente quando expira (TTL padrão de 24h dos cabeçalhos Cache-Control da IANA).
Solução de Problemas
"sherlock not found"
Sherlock é instalado automaticamente como dependência. Se você vir este erro, reinstale:
uvx --reinstall internet-names-mcp
"playwright not installed" ou erros do Chromium
Instale o navegador Playwright:
playwright install chromium
Ou com uvx:
uvx --from playwright install chromium
Verificações do Twitter falham ou expiram
As verificações do Twitter/X usam um navegador headless que pode ser lento ou bloqueado. Se as verificações falharem consistentemente, o Twitter pode estar limitando a taxa ou bloqueando o acesso automatizado.
Copyright
Copyright (C) 2026 Nuclear Cyborg Corp