mcpField
D
Domain Finder

Domain Finder

远程服务
domain-finder-theta.vercel.app商业与营销013 周前更新

关于 Domain Finder

Domain Finder 会生成适合品牌使用的名称候选,并检查其在域名、GitHub、npm 和 PyPI 中的可用性。它依据可用状态和名称特征为结果排序,并提供远程 MCP 端点供 Agent 使用。

主要功能

  1. 01根据产品描述生成名称
  2. 02检查域名和开发者命名空间
  3. 03通过 RDAP 检查可用性
  4. 04按评分和状态排列候选项
  5. 05可选 AI 头脑风暴
  6. 06追踪域名状态并发送提醒

适用场景

  1. 01为产品或创意寻找名称
  2. 02跨域名和代码包注册平台检查候选名
  3. 03追踪即将进入可注册状态的域名

MCP 相关

提供远程 Streamable HTTP MCP 服务,包含检查候选名称和生成经过域名可用性预检的建议名称的工具。工具为只读,无需凭据。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://domain-finder-theta.vercel.app/api/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

2
参数类型必填说明
tldsarray否
namesarray是
surfacesarray否

详细介绍

域名查找器

搜索并推荐值得购买的域名。描述产品或想法;应用会集思广益,生成适合打造品牌的名称(AI + 基于规则的组合),通过 RDAP 检查实际可用性,并返回排序后的候选购买列表。

采用 Elastic License 2.0 提供源代码(SPDX-License-Identifier: Elastic-2.0)——请参阅许可证。

连接到 MCP 服务

Domain Finder 也是一个远程 MCP 服务——可通过任何支持 MCP 的 Agent,跨域名以及 GitHub / npm / PyPI 命名空间检查品牌名称。

  • 端点: https://domain-finder-theta.vercel.app/api/mcp(Streamable HTTP)
  • 工具:
    • check_name — 在一次调用中,检查一个或多个候选名称在域名以及 GitHub / npm / PyPI 命名空间中是否可用。
    • generate_names — 根据描述生成候选名称,并预先检查每个名称的域名可用性;将你最喜欢的名称传给 check_name。
  • 只读,无需凭据——无需注册,也无需粘贴密钥。可放心连接。
  • 请求会被记录。 输入和输出会存储在服务端(使用调用者 IP 的加盐哈希,绝不存储原始地址),用于分析和滥用审查——请参阅 SECURITY.md。

Cursor(~/.cursor/mcp.json)以及任何原生支持 Streamable-HTTP 的客户端:

{
  "mcpServers": {
    "domain-finder": {
      "type": "streamable-http",
      "url": "https://domain-finder-theta.vercel.app/api/mcp"
    }
  }
}

Claude Desktop(claude_desktop_config.json)——使用 mcp-remote 桥接远程服务:

{
  "mcpServers": {
    "domain-finder": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://domain-finder-theta.vercel.app/api/mcp"]
    }
  }
}

工作原理

query ─▶ generate ─▶ check availability ─▶ rank ─▶ results
         (AI + rules)   (RDAP)              (0–100 score)
  • 生成(lib/generate.ts)——合并三个来源的候选项:

    • _基于规则的_组合:关键词提取(过滤停用词)× 前缀/后缀(get、try、-ly、-hq、-app 等),优先选择较短的名称。
    • AI 集思广益(可选):通过 AI Gateway 使用 Vercel AI SDK(generateObject + zod)。没有 API 密钥时,会平稳降级为基于规则的生成。
    • 域名巧用(lib/hacks.ts):让单词横跨点号读取——delicio.us、bit.ly、recip.es。基于 IANA 的完整 TLD 列表构建;无需 API。此类名称会按设计忽略 TLD 筛选器(单词决定区域),因此有单独的开关。
    • 标签会去重、限制数量,并扩展为所选 TLD 的组合(采用轮询方式,确保每个标签都先获得 .com,再分配第二个 TLD)。
  • 可用性(lib/availability.ts)——通过可替换的 AvailabilityProvider 接口使用 RDAP。通过 IANA 引导文件(以及精选的覆盖规则),将每个 TLD 解析到其权威注册局 RDAP 服务,然后直接查询注册局。遇到 429 时会重试。

  • 状态分类(lib/rdap-status.ts)——“已被占用”并非只有一种情况。该分类参照 Domainr 的分类体系,为每个域名分配一个 status 和一个粗略的 bucket:

    bucketstatuses含义
    registrableavailable可立即按零售价购买
    droppingdeleting、expiring处于 pendingDelete / redemption 阶段——适合预订
    aftermarketparked已被注册,但名称服务器显示“出售”
    unavailableactive、reserved已注册并在使用中
    unknownunknown该 TLD 没有 RDAP 服务,或发生错误

    所有状态都直接根据 RDAP 的 RFC 8056 状态码、expiration 事件和名称服务器推导。deleting 域名还会获得一个 estimatedDropAt(pendingDelete 是一个固定的约 5 天时段)。

  • 排序(lib/rank.ts)——按可用性(45)、TLD 吸引力(20)、长度(20)、整洁度/无连字符或数字(10)以及品牌适用性加分(5,域名巧用 > AI > 组合)计算 0–100 分。先按 bucket 排序,再按分数排序——因此“可立即购买”的域名总是排在“可能有机会获得”的域名前面。

之后若要将 RDAP 换成付费注册商 API(以支持定价和实际购买流程),只需修改 lib/availability.ts——管线中的其他部分都不依赖数据来源。

监控列表

跟踪域名,在它进入删除流程时收到邮件通知,并将其交给 预订服务。这是围绕 availabilityProvider.check() 构建的调度器, 而不是新的可用性逻辑。

cron ─▶ due-queue ─▶ check ─▶ transition? ─▶ alert (deleting | available)
        (next_check_at)       (watch_events)   deduped via `alerts`
  • 自适应到期队列(lib/cadence.ts)——每个域名都有一个 next_check_at;轮询器只处理已到期的项目。检查频率随状态变化: 远期的 active 状态每周检查一次 → 距到期不足 30 天或处于赎回期时每天检查一次 → pendingDelete 状态每 6 小时检查一次 → 预计删除时间在 24 小时内时每小时检查一次。RDAP 负载与域名的 受关注程度 成正比,而不是与监控数量成正比。
  • 状态以域名为单位,而非以监控项为单位(lib/db/schema.ts)。一百个人监控同一个简短的 .com 域名,只需一行记录、一次 RDAP 调用、一次状态转换,再分发到一百个收件箱。负载随观测到的唯一域名数量 增长,而不是随用户数 × 域名数增长——这很重要,因为注册局不会出售容量。
  • 状态转换日志(watch_events)是事实来源。只有状态发生变化时才发送提醒,并且 alerts 设置了 unique(watch_id, event_id),因此 cron 重试不会重复发送。
  • 只有两种状态会触发提醒:deleting(pendingDelete——固定约 5 天的窗口,也就是还能下预订单的最后时刻)和 available。 其他所有状态都会记录并显示在 UI 中,但不会发送提醒。
  • unknown 不算状态转换。 429 错误或超时表示“我们无法判断”,而不是“域名状态已变化”——保留最后一次已知状态,并以指数间隔退避重试(1h、2h、4h……最长为一天)。
  • 无法观测的 TLD 会在添加监控时拒绝。 .co/.es/.at/.gg 没有公共 RDAP 服务,因此监控这些域名永远不会触发提醒。明确告知总比接受监控后一直不发提醒要好。
  • 免费监控每个邮箱最多 3 个(lib/watch.ts 中的 FREE_WATCH_LIMIT)。

身份由邮箱和无法猜测的管理令牌组成——没有账户、会话或用户表。令牌包含在提醒链接中,用于验证 /watch/<token>。

在本地运行监控列表
# any Postgres will do
docker run -d --name df-pg -e POSTGRES_PASSWORD=domainfinder \
  -e POSTGRES_USER=domainfinder -e POSTGRES_DB=domainfinder \
  -p 5433:5432 postgres:16-alpine

cp .env.example .env.local   # set DATABASE_URL + CRON_SECRET
npm run db:push              # create the tables
npm run dev

未设置 RESEND_API_KEY 时,提醒会打印到控制台而不是发送出去,因此无需注册任何第三方服务即可体验完整流程。手动触发一次轮询:

curl -H "authorization: Bearer $CRON_SECRET" localhost:3000/api/cron/poll
在生产环境中安排任务

.github/workflows/poll.yml 每小时调用 /api/cron/poll。Vercel 的 Hobby cron 每天只运行一次,这可能会耗掉约 5 天的 pendingDelete 提醒窗口的大半时间,因此改由 GitHub Actions 负责调度。设置仓库密钥 POLL_URL 和 CRON_SECRET。GHA cron 尽力而为,可能会延迟几分钟——对于持续数天的提醒来说没有问题,这里的任何功能都不依赖准时运行。

测试

npm test

lib/rdap-status.test.ts 和 lib/cadence.test.ts 是纯测试。lib/poll.test.ts 使用伪造的可用性提供程序操作真实数据库——在实际环境中,pendingDelete 和 redemptionPeriod 太罕见,难以按需找到,而捕捉这两种状态正是此功能的目的。未设置 DATABASE_URL 时会跳过此测试。

开始使用

npm install
npm run dev      # http://localhost:3000

搜索无需任何配置即可使用——可用性(RDAP)和基于规则的生成都不需要密钥。若要启用 AI 头脑风暴功能,请将 .env.example 复制到 .env.local 并设置 AI Gateway 密钥:

cp .env.example .env.local
# then set AI_GATEWAY_API_KEY=...

监控列表是唯一需要数据库的部分;没有数据库时,搜索仍可正常使用(getDb() 是惰性加载的,只有监控路由调用它时才会抛出错误)。 参见上文的监控列表。

API

POST /api/search

// request
{ "query": "vegan meal delivery", "tlds": [".com", ".io"], "useAi": true }

// response
{ "query": "...", "results": [ { "domain": "...", "score": 92, "availability": {...}, ... } ],
  "meta": { "generated": 45, "checked": 45, "aiUsed": false, "availabilityProvider": "rdap", "tookMs": 1200 } }

注意事项 / 限制

  • 顶级域名覆盖范围。 IANA 的 RDAP 引导数据涵盖约 1199 个区,且偏向 gTLD;缺失的部分是 ccTLD,而域名创意拼写恰恰会用到这些域名。已验证的覆盖项位于 OVERRIDES(lib/availability.ts)中:.io/.me/.sh/.ac、.de、.us。未找到 .co/.es/.at/.gg 的可访问端点,因此这些域名会报告为 unknown,而不是猜测。如果你发现了其他端点,请添加。
  • 停放检测追求高精度,召回率较低。 它能可靠标记停放在 Sedo/Bodis 风格名称服务器上的普通域名,但会漏掉优质域名——它们大多位于 Cloudflare/AWS 之后,无法看到相关信号。没有 parked 标记并不能证明什么。真实的二级市场数据需要付费来源。
  • RDAP 只能告诉你域名是 已注册还是未注册,不能提供价格。 定价/购买功能需要注册商 API(接口已准备就绪)。“购买”链接目前指向 Namecheap 的搜索页面;backorderUrl() 指向 DropCatch,用于即将释放的域名。在 app/page.tsx 中只需改动一行即可换成联盟链接。
  • 你无法靠轮询此应用抢到即将释放的域名。 专业的域名抢注服务会保持数百个注册商连接。实用的方案是构建一个监控列表,在域名状态变化时发出提醒,并将用户交给预订服务——设计方案请参阅 wiki。

许可证

根据 Elastic License 2.0(SPDX-License-Identifier: Elastic-2.0)提供源代码。你可以自由查看、自托管并修改代码。但不得将其作为托管或管理服务提供给第三方,且该服务会开放其大量功能——也就是说,不允许将其作为竞争性的托管服务运营。完整条款请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。