Server data from the Official MCP Registry
Naming engine with availability intelligence: score names, check domains, socials and registries.
Naming engine with availability intelligence: score names, check domains, socials and registries.
This is a well-structured MCP server for domain searching with appropriate permissions and reasonable security practices. The codebase demonstrates good error handling, input validation, and caching mechanisms. However, there are moderate concerns around optional credential handling (Porkbun/Namecheap API keys can be stored locally), network dependency chains, and some incomplete code sections that should be reviewed before production use. Supply chain analysis found 12 known vulnerabilities in dependencies (0 critical, 10 high severity). Package verification found 1 issue.
4 files analyzed · 21 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: PRICING_API_BASE_URL
Environment variable: PRICING_API_TOKEN
Environment variable: PORKBUN_API_KEY
Environment variable: PORKBUN_API_SECRET
Environment variable: NAMECHEAP_API_KEY
Environment variable: NAMECHEAP_API_USER
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-dorukardahan-domain-search-mcp": {
"env": {
"PORKBUN_API_KEY": "your-porkbun-api-key-here",
"NAMECHEAP_API_KEY": "your-namecheap-api-key-here",
"PRICING_API_TOKEN": "your-pricing-api-token-here",
"NAMECHEAP_API_USER": "your-namecheap-api-user-here",
"PORKBUN_API_SECRET": "your-porkbun-api-secret-here",
"PRICING_API_BASE_URL": "your-pricing-api-base-url-here"
},
"args": [
"-y",
"domain-search-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
Naming engine with availability intelligence — an MCP server that scores the names your model generates and runs availability checks against domains, socials, and package registries. Works with zero configuration using public RDAP/WHOIS, and optionally enriches results with registrar pricing via a backend you control.
🆕 v1.12.0: name_project — a two-phase naming engine. Call it once to get generation instructions for your model, call it again with candidates[] to get anti-slop scoring, ranking, and live availability checks across domains, socials, and npm. See name_project below.
🆕 v1.10.0: GoDaddy public endpoint integration! Enhanced fallback chain (RDAP → GoDaddy → WHOIS) with premium/auction domain detection. Circuit breaker pattern ensures resilience.
🤖 v1.9.0+: AI-powered domain suggestions work out of the box! No API keys needed - suggest_domains_smart uses our public fine-tuned Qwen 7B-DPO model. Plus: Redis distributed caching and /metrics endpoint for observability.
Built on the Model Context Protocol for Claude, Codex, VS Code, Cursor, Cline, and other MCP-compatible clients.
| Feature | Description |
|---|---|
| 🔍 Multi-TLD Search | Check one name across .com, .io, .dev, .ai and 500+ TLDs |
| 📦 Bulk Check | Validate up to 100 domain names in a single call |
| 💎 Premium Detection | Identify premium and auction domains via GoDaddy |
| 🤖 AI Suggestions | Generate brandable names with fine-tuned Qwen 7B-DPO |
| 💰 Price Comparison | Compare pricing across Porkbun, Namecheap |
| 🌐 Social Handle Check | Verify username availability on GitHub, Twitter, etc. |
| 🔌 Dual Transport | Works via stdio (Claude) or HTTP/SSE (ChatGPT Actions) |
| ⚡ Zero Config | Works instantly - no API keys required for availability |
search_domain.Availability and pricing are intentionally separated:
Availability Chain (zero-config):
┌─────────┐ ┌─────────┐ ┌─────────┐
│ RDAP │ ──► │ GoDaddy │ ──► │ WHOIS │
│ (fast) │ │(premium)│ │(fallback│
└─────────┘ └─────────┘ └─────────┘
PRICING_API_BASE_URL (backend with Porkbun keys)This keeps the server zero-config while letting power users enable pricing.
Responses include price_check_url (registrar checkout/search link) and may include
price_note when a price is estimated. Always verify the final price on the registrar
checkout page before purchase.
If an auction/premium signal is detected, results include an aftermarket block with
links to marketplace pages when available. Taken domains may include Sedo auction
hints (public feed) and nameserver-based marketplace hints (Sedo/Dan/Afternic).
No installation needed - run directly:
npx -y domain-search-mcp@latest
git clone https://github.com/dorukardahan/domain-search-mcp.git
cd domain-search-mcp
npm install
npm run build
npm start
For MCP clients like Claude Desktop, Cursor, VS Code - uses stdin/stdout:
npx -y domain-search-mcp@latest
For ChatGPT Actions, web apps, and REST API clients:
# Start HTTP server on port 3000
npx -y domain-search-mcp@latest --http
# Or with custom port
MCP_PORT=8080 npx -y domain-search-mcp@latest --http
Endpoints:
/mcp - MCP protocol (POST for messages, GET for SSE stream)/api/tools/* - REST API for each tool (ChatGPT Actions compatible)/openapi.json - OpenAPI 3.1 specification/health - Health check/metrics - Prometheus-compatible metrics (cache stats, request counts, AI inference health)ngrok http 3000https://your-ngrok-url.ngrok-free.dev/openapi.jsonFor production deployment, use a permanent domain with SSL instead of ngrok.
REST API Example:
curl -X POST https://your-domain/api/tools/search_domain \
-H "Content-Type: application/json" \
-d '{"domain_name":"vibecoding"}'
Claude Code (.mcp.json in project root):
{
"mcpServers": {
"domain-search": {
"type": "stdio",
"command": "npx",
"args": ["-y", "domain-search-mcp@latest"]
}
}
}
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"domain-search": {
"command": "npx",
"args": ["-y", "domain-search-mcp@latest"]
}
}
}
💡 Tip: Always use
@latestto ensure you're running the newest version with all features.
All 12 tools listed below are exposed to MCP clients by default. The 6-tool
slim profile (name_project, search_domain, bulk_search, check_socials,
tld_info, ai_health) is opt-in — set SLIM_TOOLS=true if you want a
sharper tool-selection surface for simpler client integrations (see
Environment Variables). A future 2.0 release may
flip the default to slim.
ADVANCED_TOOLS=true is a deprecated alias that forces the full surface and
overrides SLIM_TOOLS; it's a harmless no-op today since full is already the
default.
Flagship two-phase naming engine. Call it once to get lane-by-lane generation
instructions for your model; call it again with candidates[] to get anti-slop
scoring, ranking, and live availability checks across domains, socials, and npm.
brief (describe what you're naming), auto (analyze the current
workspace), from_name (find domains/variants for a name you already like),
from_domain (fit a project/brand to a domain you found).candidates): returns generation instructions + lane prompts.candidates present): scores + ranks candidates, then checks
availability for the top 12 against targets.tlds / targets.platforms —
omit targets for pure naming with no availability calls.Scores are heuristic rankings for comparing candidates against each other — not objective, universal brandability truth. Availability results reflect a single source checked at one moment in time; re-verify before you register or rely on anything.
Phase 1 — call with no candidates:
{"mode": "brief", "brief": "an MCP naming engine"}
Brief: an MCP naming engine
Now generate between 30 and 50 name candidates spread across these lanes:
- [evocative] Real words borrowed for their feeling, not their meaning (like Slack, Notion, Bolt). Single dictionary words preferred.
- [invented] Coined words that do not exist but sound like they could (like Zapier, Klarna). Must be pronounceable on first read.
- [compound] Two short real words fused (like Facebook, Snapchat). Both halves must stay readable; no glue letters.
- [premium] Short, expensive-feeling names: 4-7 letters, strong single or double syllable (like Stripe, Vercel, Arc).
Rules: single words or tight compounds, no taglines, no explanations yet. Then call name_project again with the SAME arguments plus candidates:[...] to get scoring and availability.
Phase 2 — resubmit the same arguments plus candidates:
{"mode": "brief", "brief": "an MCP naming engine", "candidates": ["Nexify", "Corda"]}
| Name | Score | Verdict | Badges | Why |
| --- | --- | --- | --- | --- |
| Corda | 97 strong | - | - | no AI-slop patterns; clean pronunciation and typing |
| Nexify | 60 middling | - | - | slop: overused prefix "nex-"; slop: overused suffix "-ify" |
2 candidates received, 2 passed constraints, top 2 returned.
No availability-check targets - pure naming mode.
Badges: tld✓ free to register, tld$ for sale (aftermarket/premium - registered or priced, not free to register), tld✗ taken, tld? unknown.
ccTLD checks (.ai / .io / .sh / .ac) are cross-checked against native WHOIS/DNS ground truth, not taken on RDAP's word alone.
See docs/API.md for the full parameter/response schema.
search_domain: Check a name across multiple TLDs, adds premium/auction signals.bulk_search: Check up to 100 names for a single TLD.compare_registrars: Compare pricing across registrars (backend when configured).suggest_domains: Generate variations (prefix/suffix/hyphen).suggest_domains_smart: 🤖 AI-powered brandable name generation using fine-tuned Qwen 7B-DPO. Zero-config - works instantly!analyze_project: Scan local project or GitHub repo to extract context and suggest matching domain names.hunt_domains: Find valuable domains for investment - scans Sedo auctions, generates patterns, calculates investment scores.expiring_domains: Monitor domains approaching expiration (requires federated negative cache).tld_info: TLD metadata and restrictions.check_socials: Username availability across platforms.ai_health: Check status of AI inference services (VPS Qwen, circuit breakers, adaptive concurrency).Set a backend URL that owns registrar keys (Porkbun). The MCP will call
/api/quote and /api/compare on that backend for pricing.
PRICING_API_BASE_URL=https://your-backend.example.com
PRICING_API_TOKEN=optional_bearer_token
Used only if PRICING_API_BASE_URL is not set.
PORKBUN_API_KEY=pk1_your_api_key
PORKBUN_API_SECRET=sk1_your_secret
NAMECHEAP_API_KEY=your_api_key
NAMECHEAP_API_USER=your_username
NAMECHEAP_CLIENT_IP=your_whitelisted_ip
For horizontal scaling across multiple MCP instances, configure Redis:
REDIS_URL=redis://:password@host:6379
Without Redis, the server uses in-memory caching (works fine for single instances). Redis enables:
AI-powered suggestions (suggest_domains_smart) use your own inference endpoint when configured. Point QWEN_INFERENCE_ENDPOINT at a llama.cpp/Qwen server you control. If it is unset, suggestions fall back to the built-in offline semantic engine (no external calls, no API keys needed).
# Public hosts must use HTTPS; loopback/private hosts may use HTTP.
QWEN_INFERENCE_ENDPOINT=http://127.0.0.1:8070
QWEN_API_KEY=optional_if_secured
| Variable | Default | Description |
|---|---|---|
MCP_TRANSPORT | stdio | Transport mode: stdio or http |
MCP_PORT | 3000 | HTTP server port (when using HTTP transport) |
MCP_HOST | 0.0.0.0 | HTTP server bind address |
CORS_ORIGINS | * | Allowed CORS origins (comma-separated) |
PRICING_API_BASE_URL | - | Pricing backend base URL |
PRICING_API_TOKEN | - | Optional bearer token |
PRICING_API_TIMEOUT_MS | 2500 | Backend request timeout |
PRICING_API_MAX_QUOTES_SEARCH | 0 | Max pricing calls per search (0 = unlimited; backend rate limits apply) |
PRICING_API_MAX_QUOTES_BULK | 0 | Max pricing calls per bulk search (0 = unlimited; backend rate limits apply) |
PRICING_API_CONCURRENCY | 4 | Pricing request concurrency |
PORKBUN_API_KEY | - | Porkbun API key |
PORKBUN_API_SECRET | - | Porkbun API secret |
NAMECHEAP_API_KEY | - | Namecheap API key |
NAMECHEAP_API_USER | - | Namecheap username |
NAMECHEAP_CLIENT_IP | - | Namecheap IP whitelist |
OUTPUT_FORMAT | table | table, json, or both for tool output formatting |
LOG_LEVEL | info | Logging level |
CACHE_TTL_AVAILABILITY | 60 | Availability cache TTL (seconds) |
CACHE_TTL_PRICING | 3600 | Pricing cache TTL (seconds) |
CACHE_TTL_SEDO | 3600 | Sedo auctions feed cache TTL (seconds) |
CACHE_TTL_AFTERMARKET_NS | 300 | Nameserver lookup cache TTL (seconds) |
SEDO_FEED_ENABLED | true | Enable Sedo feed lookup for aftermarket hints |
SEDO_FEED_URL | https://sedo.com/txt/auctions_us.txt | Sedo public feed URL |
AFTERMARKET_NS_ENABLED | true | Enable nameserver-based aftermarket hints |
AFTERMARKET_NS_TIMEOUT_MS | 1500 | Nameserver lookup timeout (ms) |
REDIS_URL | - | Redis connection URL for distributed caching (e.g., redis://:password@host:6379) |
QWEN_INFERENCE_ENDPOINT | (none) | Your own AI inference endpoint for suggest_domains_smart (offline semantic fallback if unset) |
QWEN_TIMEOUT_MS | 15000 | AI inference request timeout |
QWEN_MAX_RETRIES | 2 | Retry count for AI inference failures |
SLIM_TOOLS | false | Set true to opt into the slim 6-tool surface instead of the full 12-tool default |
ADVANCED_TOOLS | false | Deprecated alias for the pre-SLIM_TOOLS flag. Set true to force the full 12-tool surface and override SLIM_TOOLS; no-op since full is already the default |
Tool responses are returned as Markdown tables by default. If you need raw JSON for programmatic use, set:
OUTPUT_FORMAT=json
| Source | Position in Chain | Usage | API Keys |
|---|---|---|---|
| RDAP | 1st (Primary) | Fast availability check | Not needed |
| GoDaddy | 2nd (Fallback) | Premium/auction detection | Not needed |
| WHOIS | 3rd (Last resort) | Legacy availability | Not needed |
| Pricing API | Parallel | Live pricing via backend | Backend token |
| Porkbun API | Parallel (BYOK) | Availability + pricing | API key + secret |
| Namecheap API | Parallel (BYOK) | Availability + pricing | API key + IP whitelist |
| Sedo Feed | Enrichment | Aftermarket auction hints | Not needed |
price_note.price_check_url before purchase.search_domain("myproject", ["com", "io", "dev"])
┌─────────────────┬───────────┬─────────┬────────┐
│ Domain │ Available │ Premium │ Source │
├─────────────────┼───────────┼─────────┼────────┤
│ myproject.com │ ✅ │ No │ rdap │
│ myproject.io │ ❌ │ - │ rdap │
│ myproject.dev │ ✅ │ Yes │ godaddy│
└─────────────────┴───────────┴─────────┴────────┘
suggest_domains_smart("coffee shop in seattle", { style: "brandable" })
→ seattlebrew.com, pugetperk.io, raincitycoffee.co, cascadiacafe.com
bulk_search(["startup", "launch", "begin", "init"], "io")
→ Checks startup.io, launch.io, begin.io, init.io in parallel
npm run dev # watch mode
npm test # run Jest
npm run build # compile to dist/
See docs/RELEASE.md for the canary -> latest publish flow. Tags like v1.2.24
trigger GitHub Releases + npm publish via CI.
See CHANGELOG.md for release history.
.mcpregistry_* files.PRICING_API_BASE_URL (or BYOK keys), pricing is not available (availability still works).If you use npx domain-search-mcp (without @latest), npx may cache an old version.
Fix: Update your MCP config to use @latest:
"args": ["-y", "domain-search-mcp@latest"]
Or clear the npx cache manually:
npx clear-npx-cache # then restart your MCP client
cd domain-search-mcp
git pull origin main
npm install
npm run build
For detailed system architecture diagrams, see docs/ARCHITECTURE.md:
| Problem | Solution |
|---|---|
| Domain APIs require signup/keys | RDAP + GoDaddy = zero-config availability |
| Premium domains show as "available" | GoDaddy detects premium/auction status |
| Hard to check multiple TLDs | Single call checks .com, .io, .dev, etc. |
| No AI integration for naming | Built-in Qwen 7B for brandable suggestions |
| Only works with Claude | HTTP transport supports ChatGPT, LM Studio |
Q: Does this work without any API keys? A: Yes! Availability checking uses public RDAP and GoDaddy endpoints. Only pricing requires API keys.
Q: Which MCP clients are supported? A: Claude Desktop, Claude Code, VS Code, Cursor, Cline (stdio), and ChatGPT, LM Studio (HTTP/SSE).
Q: How accurate is premium domain detection? A: GoDaddy's public endpoint detects most premium and auction domains. Always verify on registrar checkout.
Q: Can I self-host the AI suggestions?
A: Yes! Set QWEN_INFERENCE_ENDPOINT to your llama.cpp server running the fine-tuned model.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.