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

  1. Crie uma conta em namesilo.com (ou faça login)
  2. Vá para API Manager
  3. Clique em Gerar Nova Chave de API
  4. 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:

NomeTipoPadrãoDescrição
nameslist[str]obrigatórioNomes de domínio ou nomes base para verificar
tldslist[str]["com", "io", "ai", "co", "app", "dev", "net", "org"]TLDs para verificar
methodstr"auto""auto", "rdap" ou "namesilo"
only_report_availableboolfalseSe 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:

NomeTipoPadrãoDescrição
usernamestrobrigatórioO nome de usuário/handle para verificar
platformslist[str]todas as plataformasPlataformas para verificar
only_report_availableboolfalseSe 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:

NomeTipoPadrãoDescrição
nameslist[str]obrigatórioNomes de subreddits para verificar (com ou sem o prefixo r/)
only_report_availableboolfalseSe 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:

NomeTipoPadrãoDescrição
componentslist[str]obrigatórioComponentes de nome para combinar (ex.: ["red", "sweater"])
tldslist[str]["com", "net", "org", "io", "ai"]TLDs para verificar
platformslist[str]todas as plataformasPlataformas sociais para verificar
methodstr"auto""auto", "rdap" ou "namesilo"
require_all_tlds_availableboolfalseSe verdadeiro, o nome deve estar disponível em TODOS os TLDs para se qualificar para a verificação de handles
only_report_availableboolfalseSe verdadeiro, omite itens indisponíveis da resposta
also_include_hyphensboolfalseSe 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étodoDescriçãoPreçoVelocidade
autoUsa NameSilo se a chave de API estiver configurada, caso contrário RDAPCom NameSiloRápido
rdapConsultas diretas ao registro via bootstrap da IANANãoRápido
namesiloAPI NameSilo (requer chave de API)SimRá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):

  1. Keychain do macOS (somente no macOS)
  2. Variável de ambiente (NAMESILO_API_KEY)
  3. 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 caches
  • source 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 TesteDescrição
test_server.pySuíte de testes principal cobrindo todas as ferramentas MCP, casos extremos e chamadas de API
test_mcp_interface.pyTesta o servidor através do protocolo MCP real via stdio
test_rdap_client.pyTesta o cliente RDAP assíncrono, limitação de taxa e consultas em lote
test_methods.pyCompara RDAP vs NameSilo para detectar discrepâncias de disponibilidade
test_rdap.pyTeste 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

Licença

MIT