Labsco
drewster99 logo

Internet-Names-MCP

โ˜… 2

from drewster99

Check availability of domain names, social media handles and subreddits

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedPaid serviceNeeds API keys

Internet Names MCP Server

An MCP server for checking availability of domain names, social media handles, and subreddits. Returns clean JSON responses suitable for programmatic use.

Features

  • Domain names - Check availability via RDAP (free) or NameSilo API (free, but requires API key - responses include domain prices too)
  • Social media handles - Instagram, Twitter/X, Reddit, YouTube, TikTok, Twitch, Threads
  • Subreddits - Check if subreddit names are available on Reddit
  • Comprehensive search - Generate name combinations and check everything at once

CLI Commands

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

Tools

get_supported_socials()

Returns list of supported social media platforms.

Response:

{
  "platforms": ["instagram", "twitter", "reddit", "youtube", "tiktok", "twitch", "threads", "subreddit"]
}

Note: subreddit is checked via check_subreddits(), not check_handles().


check_domains(names, tlds?, method?, only_report_available?)

Check domain name availability and pricing.

Parameters:

NameTypeDefaultDescription
nameslist[str]requiredDomain names or base names to check
tldslist[str]["com", "io", "ai", "co", "app", "dev", "net", "org"]TLDs to check
methodstr"auto""auto", "rdap", or "namesilo"
only_report_availableboolfalseIf true, omit unavailable domains from response

If a name contains a dot, it's treated as a full domain. Otherwise, it's combined with each TLD.

Response:

{
  "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?)

Check social media handle availability across platforms.

Parameters:

NameTypeDefaultDescription
usernamestrrequiredThe username/handle to check
platformslist[str]all platformsPlatforms to check
only_report_availableboolfalseIf true, omit unavailable handles from response

Supported platforms: instagram, twitter, reddit, youtube, tiktok, twitch, threads

Note: Twitter/X checking uses a headless browser and takes ~4 seconds.

Response:

{
  "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?)

Check subreddit name availability on Reddit.

Parameters:

NameTypeDefaultDescription
nameslist[str]requiredSubreddit names to check (with or without r/ prefix)
only_report_availableboolfalseIf true, omit unavailable subreddits from response

Response:

{
  "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?)

Comprehensive check across domains and social media. Generates name combinations from components, checks domains first (fast), then checks social handles for names that pass the domain check.

Parameters:

NameTypeDefaultDescription
componentslist[str]requiredName components to combine (e.g., ["red", "sweater"])
tldslist[str]["com", "net", "org", "io", "ai"]TLDs to check
platformslist[str]all platformsSocial platforms to check
methodstr"auto""auto", "rdap", or "namesilo"
require_all_tlds_availableboolfalseIf true, name must be available in ALL TLDs to qualify for handle checking
only_report_availableboolfalseIf true, omit unavailable items from response
also_include_hyphensboolfalseIf true, also check hyphenated versions

Name Generation: From components ["red", "sweater"], generates:

  • Single components: red, sweater
  • Concatenations: redsweater, sweaterred

Response:

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

The fully_available list contains names that are available on ALL checked platforms.

Domain Lookup Methods

MethodDescriptionPricingSpeed
autoUses NameSilo if API key configured, otherwise RDAPWith NameSiloFast
rdapDirect registry queries via IANA bootstrapNoFast
namesiloNameSilo API (requires API key)YesFast

RDAP Limitations

RDAP is free and requires no API key, but has some limitations:

  • TLD coverage - Not all top level domains (TLDs) have RDAP servers. Queries for unsupported TLDs will fail. RDAP works for .com, .net, .org, .app, .ai and more. See deployment.rdap.org for an up-to-date list (look for 'Yes' in the 'RDAP' column).
  • No pricing - RDAP only reports availability, not the cost to register the domain.
  • False positives - A domain may appear available via RDAP but actually be reserved or considered "premium" by registrars, making it effectively unavailable or prohibitively expensive to purchase.

For reliable results with pricing, configure a NameSilo API key.

Development

Local Setup

The devsetup.sh script handles virtual environment creation and dependency installation:

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

Options:

  • source devsetup.sh - Set up environment (default)
  • source devsetup.sh --clean - Delete venv and caches
  • source devsetup.sh --clean --setup - Clean rebuild

API Key Configuration (Development)

When running from source, use the module directly instead of 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

Running Tests

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
Test FileDescription
test_server.pyMain test suite covering all MCP tools, edge cases, and API calls
test_mcp_interface.pyTests the server through actual MCP protocol via stdio
test_rdap_client.pyTests async RDAP client, rate limiting, and batch queries
test_methods.pyCompares RDAP vs NameSilo to detect availability discrepancies
test_rdap.pySimple RDAP-only test for quick domain availability checks

Interactive Testing

Use MCP Inspector for interactive debugging with a web UI:

npx @modelcontextprotocol/inspector .venv/bin/python -m internet_names_mcp

Project Structure

โ”œโ”€โ”€ 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

Data Files

RDAP Bootstrap Cache - Maps TLDs to their authoritative RDAP servers (auto-downloaded from IANA):

  • macOS/Linux: ~/.cache/internet-names-mcp/rdap_bootstrap.json
  • Windows: %APPDATA%/internet-names-mcp/rdap_bootstrap.json

The cache is automatically refreshed when expired (default 24h TTL from IANA's Cache-Control headers).

Copyright (C) 2026 Nuclear Cyborg Corp