domain-check-mcp
A Model Context Protocol (MCP) server for domain availability checking. Exposes the domain-check-lib engine as structured tools for AI coding agents and MCP-compatible clients.
Protocol: MCP over stdio (JSON-RPC 2.0) Transport: stdin/stdout SDK: rmcp (official Rust MCP SDK)
Tools
All tools return structured JSON. All tools are read-only — no side effects, safe to call without confirmation.
| Tool | Description | Key Parameters |
|---|---|---|
check_domain |
Check availability of a single fully-qualified domain name | domain (string, required) |
check_domains |
Batch check multiple domains concurrently | domains (string[], required), concurrency (int, optional, default 20, max 500) |
check_with_preset |
Check a base name across all TLDs in a named preset | base_name (string, required), preset (string, required) |
generate_names |
Generate domain name candidates from patterns and affixes | pattern (string, optional), base_names (string[], optional), prefixes/suffixes (string[], optional), tlds (string[], optional) |
list_presets |
List all available TLD presets with their TLD lists | (none) |
domain_info |
Get detailed registration info: registrar, dates, nameservers, status codes | domain (string, required) |
Tool annotations
| Tool | readOnlyHint | destructiveHint | idempotentHint |
|---|---|---|---|
check_domain |
true | false | true |
check_domains |
true | false | true |
check_with_preset |
true | false | true |
generate_names |
true | false | true |
list_presets |
true | false | true |
domain_info |
true | false | true |
Pattern syntax (for generate_names)
| Wildcard | Expands to | Example |
|---|---|---|
\d |
digits 0-9 | app\d\d generates app00..app99 |
\w |
lowercase a-z + hyphen | \w\wai generates aaai..-zai |
? |
digits + letters + hyphen | go? generates go0..go- |
Presets
11 built-in presets: startup, popular, classic, enterprise, tech, creative, ecommerce, finance, web, trendy, country. Use list_presets to see full TLD lists.
Installation
From crates.io
From source
# Binary at: target/release/domain-check-mcp
From GitHub releases
Pre-built binaries for Linux (x86_64, musl), macOS (x86_64, aarch64), and Windows are attached to each GitHub release.
Client configuration
Claude Code (verified working)
Claude Desktop
Add to claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS):
VS Code / GitHub Copilot
Add to .vscode/mcp.json in your workspace:
Cursor
Add to ~/.cursor/mcp.json:
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
JetBrains IDEs
Settings > Tools > AI Assistant > MCP Servers, add:
OpenAI Codex CLI
Gemini CLI
Any MCP client (generic stdio)
The server reads JSON-RPC from stdin and writes to stdout. Point any MCP-compatible client at the domain-check-mcp binary with stdio transport.
Custom binary path
If the binary is not on your PATH, use the full path in any configuration above:
Example usage
Once configured, ask your AI agent naturally:
- "Is
coolstartup.comavailable?" - "Check
mybrandacross the startup preset" - "Generate domain names matching
app\d\dand check.comand.io" - "Get registration details for
example.com" - "What TLD presets are available?"
Debugging
Set RUST_LOG for verbose output (logs go to stderr, stdout is reserved for MCP JSON-RPC):
MCP Inspector
Test the server interactively with the MCP Inspector:
Manual JSON-RPC
|
Architecture
- Thin wrapper over domain-check-lib — same engine as the CLI
- Single
DomainCheckerinstance shared across all tool calls (connection pooling) - Tools that accept custom concurrency/timeout create a temporary checker per call
- All errors returned as tool content (not protocol errors) so agents can read and act on them
- Safety limits: batch max 500 domains, pattern generation max 100,000 names
Related
- domain-check — CLI for humans
- domain-check-lib — Rust library
- MCP specification
License
MIT OR Apache-2.0