domain-checker-mcp
# Domain Checker MCP Server
Fast domain availability checker for [Model Context Protocol (MCP)](https://modelcontextprotocol.io). DNS + RDAP/WHOIS verification.
Built by [Brave Labs](https://bravelabs.com.au)
## Features
- **Hybrid DNS + RDAP/WHOIS checking** - Fast DNS lookup, then RDAP (with WHOIS fallback) for accuracy
- **Bulk checking** - Check up to 100 domains in parallel
- **Parallel processing** - Batched verification queries for optimal throughput
- **Name expansion** - Check a base name across all popular TLDs automatically
- **Flexible filtering** - Return only available, only taken, or all results
- **Error reporting** - Clear error handling for timeouts and failures
## Installation
```bash
npm install -g @wearebravelabs/domain-checker-mcp
```
## Configuration
### Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"domain-checker": {
"command": "npx",
"args": ["-y", "@wearebravelabs/domain-checker-mcp"]
}
}
}
```
### Claude Code
Add to your MCP settings:
```json
{
"mcpServers": {
"domain-checker": {
"command": "npx",
"args": ["-y", "@wearebravelabs/domain-checker-mcp"]
}
}
}
```
## Tools
### `check_domains`
Check specific domains for availability with full DNS + WHOIS verification.
```typescript
// Check multiple domains
check_domains({
domains: ["myapp.com", "myapp.io", "myapp.dev"]
})
// Filter to only available domains
check_domains({
domains: ["example.com", "randomname123.com"],
filter: "available"
})
```
**Parameters:**
- `domains` (required): Array of domain names to check
- `filter` (optional): `"available"` or `"taken"` - omit for all results
### `check_names`
Check base names across popular TLDs automatically.
```typescript
// Check "myproject" across all popular TLDs
check_names({
names: ["myproject"]
})
// Check multiple names with specific TLDs
check_names({
names: ["startup", "launchpad"],
tlds: ["com", "io", "co", "app"],
filter: "available"
})
```
**Parameters:**
- `names` (required): Array of base names to check
- `tlds` (optional): Specific TLDs to check (defaults to: com, net, org, io, co, app, dev, ai, xyz, me, info, biz, us, uk, ca, au)
- `filter` (optional): `"available"` or `"taken"` - omit for all results
### `check_domains_quick`
Fast DNS-only check without WHOIS verification. Use when speed matters more than accuracy.
```typescript
check_domains_quick({
domains: ["example.com", "test.io"]
})
```
**Parameters:**
- `domains` (required): Array of domain names to check
- `filter` (optional): `"available"` or `"taken"` - omit for all results
**Note:** DNS-only checks may show false positives for available domains. Use `check_domains` for verification.
## Example Response
```json
{
"summary": {
"total": 4,
"available": 2,
"taken": 2,
"errors": 0,
"totalTime": "634ms"
},
"available": [
"myproject.io",
"myproject.dev"
],
"taken": [
"myproject.com",
"myproject.app"
]
}
```
With errors:
```json
{
"summary": {
"total": 3,
"available": 1,
"taken": 1,
"errors": 1,
"totalTime": "10234ms"
},
"available": ["available-domain.com"],
"taken": ["google.com"],
"errors": [
{ "domain": "example.xyz", "error": "WHOIS timeout" }
]
}
```
## How It Works
1. **DNS Check (Fast)** - All domains are checked via DNS in parallel. If DNS resolves, the domain is definitely taken.
2. **RDAP/WHOIS Verification (Accurate)** - Domains that pass DNS (no records found) are verified via RDAP (preferred) or WHOIS (fallback) to confirm availability. RDAP servers are loaded dynamically from the IANA bootstrap registry.
3. **Parallel Processing** - Verification queries run in parallel batches of 20 for optimal throughput.
This hybrid approach gives you the speed of DNS checking with the accuracy of RDAP/WHOIS verification.
## Development
```bash
# Install dependencies
npm install
# Build
npm run build
# Run locally
npm start
```
## More from Brave Labs
[bravelabs.com.au](https://bravelabs.com.au)
## License
MIT © [Brave Labs](https://bravelabs.com.au)
TDQS
Scored across 3 tools
check_domains and check_domains_quick are closely related but clearly differentiated by accuracy/speed, while check_names serves a distinct purpose by expanding a base name across TLDs. No two tools are truly ambiguous, though the overlap between the two domain checks is notable.
All tool names follow a consistent 'check_' prefix with clear object descriptors. The variation 'check_domains_quick' is a natural modifier of the core check_domains operation, maintaining a predictable pattern.
With only 3 tools, the set is tightly scoped for a domain checker. Each tool serves a distinct need (thorough, quick, and name-based checking), and the count feels appropriate rather than thin or bloated.
The tool set covers the core domain availability checking use case well, including both accurate and fast variants. A minor gap is the lack of a way to specify custom TLD lists for name-based checks, but this is a workaround and not a critical omission.