domain-checker-mcp
v0.2.0
Published
MCP server for checking domain availability using RDAP and WHOIS with support for bulk checking multiple domains in parallel
Downloads
33
Maintainers
Readme
Domain Checker MCP
An MCP (Model Context Protocol) server that checks domain availability using RDAP (Registration Data Access Protocol) with WHOIS fallback.
Features
- Check single domain availability
- Batch check multiple domains in parallel
- Prioritizes RDAP for domain lookups
- Falls back to WHOIS when RDAP is unavailable
- Configurable parallel workers (default: 4)
- Retry mechanism with exponential backoff for rate-limited responses
- Enhanced domain status detection (available, taken, unknown, rate_limited)
- Extract domain information (registrar, expiration date, days until expiration)
- Null registrationData detection for better availability accuracy
- Efficient response mode - raw RDAP/WHOIS data excluded by default for faster responses
MCP Configuration
Using npm package
Add this server to your MCP client configuration:
{
"mcpServers": {
"domain-checker": {
"command": "npx",
"args": ["-y", "domain-checker-mcp"]
}
}
}Using local installation
{
"mcpServers": {
"domain-checker": {
"command": "node",
"args": ["/path/to/domain-checker-mcp/dist/index.js"]
}
}
}Installation
From npm
npm install -g domain-checker-mcpFrom source
git clone https://github.com/yourusername/domain-checker-mcp.git
cd domain-checker-mcp
pnpm install
pnpm buildUsage
Running the MCP server
pnpm startAvailable Tools
All tools support an optional includeRawResponse parameter (boolean, default: false) to control whether raw RDAP/WHOIS data is included in responses. Raw responses are automatically included for suspicious cases (unknown status, rate limits, errors).
check_domain - Check if a single domain is available
- Input:
domain(string) - The domain name to checkincludeRawResponse(boolean, optional) - Include raw response data (default: false)
- Input:
check_domains_batch - Check multiple domains in parallel
- Input:
domains(string[]) - Array of domain names to checkconcurrency(number, optional) - Number of parallel workers (1-10, default: 4)includeRawResponse(boolean, optional) - Include raw response data (default: false)
- Input:
check_name_extensions - Check a single name with multiple extensions
- Input:
name(string) - The domain name without extension (e.g., "example")extensions(string[]) - Array of extensions to check (e.g., ["com", "net", "org"])concurrency(number, optional) - Number of parallel workers (1-10, default: 4)includeRawResponse(boolean, optional) - Include raw response data (default: false)
- Input:
check_names_extensions - Check multiple names with multiple extensions
- Input:
names(string[]) - Array of domain names without extensionsextensions(string[]) - Array of extensions to check for each nameconcurrency(number, optional) - Number of parallel workers (1-10, default: 4)includeRawResponse(boolean, optional) - Include raw response data (default: false)
- Input:
Response Format
Single domain check returns:
{
"domain": "example.com",
"available": false,
"status": "taken",
"method": "rdap",
"registrationData": { ... },
"domainInfo": {
"registrar": "Example Registrar Inc.",
"expirationDate": "2025-12-31T23:59:59Z",
"daysUntilExpiration": 365,
"creationDate": "2020-01-01T00:00:00Z",
"lastUpdated": "2024-01-15T12:00:00Z"
}
}Batch check returns:
{
"total": 5,
"available": 2,
"taken": 2,
"errors": 0,
"rateLimited": 1,
"unknown": 0,
"results": [...]
}Name with extensions check returns:
{
"name": "example",
"total": 3,
"available": 1,
"taken": 2,
"errors": 0,
"rateLimited": 0,
"unknown": 0,
"results": [...]
}Multiple names with extensions returns:
{
"totalNames": 2,
"totalExtensions": 3,
"totalChecks": 6,
"availableTotal": 2,
"takenTotal": 3,
"errorsTotal": 0,
"rateLimitedTotal": 1,
"unknownTotal": 0,
"resultsByName": {
"example": {
"total": 3,
"available": 1,
"taken": 2,
"errors": 0,
"rateLimited": 0,
"unknown": 0,
"domains": [...]
},
...
}
}Publishing
To publish a new version:
- Update the version in
package.json - Commit your changes
- Create and push a new tag:
git tag v0.1.0 git push origin v0.1.0 - GitHub Actions will automatically publish to npm
Requirements
- Set
NPM_TOKENsecret in your GitHub repository settings - Tag must start with 'v' (e.g., v0.1.0, v1.0.0)
License
MIT
