mcpField
N
Nameable

Nameable

本地服务
github.com/minanyang其他01 天前更新

关于 Nameable

Nameable 用于检查项目名称在软件包注册表、目录、应用商店、GitHub 和域名中的可用性,适合开发者与 AI Agent。它按各平台规则判断,并为结果提供依据和可信度说明。

主要功能

  1. 01检查注册表、商店、目录和域名
  2. 02应用各注册表的命名规则
  3. 03显示结果依据与可信度
  4. 04比较多个候选名称
  5. 05提供 CLI、MCP 服务和 Claude Code 插件

适用场景

  1. 01发布前筛查项目名称
  2. 02比较不同渠道中的候选名称
  3. 03让 AI Agent 评估命名选项

MCP 相关

通过 stdio 向 MCP 客户端提供只读 `check_names` 工具,并返回结构化 JSON 可用性检查结果。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"minanyang-nameable": {
"command": "npx",
"args": [
"-y",
"nameable"
]
}
}
}
启动命令npx -y nameable

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmnameable2.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Nameable 图标

Nameable

这个名称真的可用吗?Nameable 会检查项目所需的每个注册表、商店和域名。

npm License: MIT Claude Code plugin

English · 繁體中文

Nameable 会检查软件包注册表、GitHub、Agent 和编辑器目录、应用商店及域名中的名称,展示每项结论的依据,并说明结论的可信度。它可作为 CLI、AI Agent 的 MCP 服务运行,也可作为 Claude Code 插件运行;插件还会查找先前的类似项目,并建议保留哪个名称。

为什么

大多数可用性检查都会询问各注册表名称是否存在,并把“未找到”理解为可用。未找到只表示没有人占用完全相同的名称。注册表仍可能拒绝该名称:

名称注册表未找到?注册表的处理方式
f1askPyPI是拒绝:与 flask 过于相似
first-onenpm是拒绝:去掉标点后与 firstone 相同
golangHomebrew是已被占用:是 go 的别名
rustcrates.io是拒绝:由 crates.io 保留
ghcrates.io是拒绝,直到 2027 年:该 crate 最近被删除
providerspub.dev是拒绝:是 provider 的复数形式
rbconfigRubyGems是拒绝:由 RubyGems.org 保留
Coinbase.CoreNuGet是拒绝:已由 NuGet 删除,但 ID 仍被占用
postgresDocker Hub是已被占用:是官方镜像
xn--ls8h.dev域名是无法注册:它是用 punycode 表示的表情符号

Nameable 会依据各注册表自身的规则进行检查,这些规则取自其源代码,并检查规则所需的列表:相似名称和保留名称、别名和旧名称、最近删除的名称以及未发布的软件包。无法检查某项规则时,结果会说明“可能可用”及其原因,而不会直接说“可用”。请求失败时结果为 unknown,绝不会视为可用。

在终端中使用

需要 Node.js 22 或更高版本。在项目目录(或其下直到仓库根目录的任意文件夹)中运行,它会根据项目文件自动选择项目发布渠道并进行检查:

  • npm 使用 package.json(但如果没有 name、设为私有,或是服务端或站点,即自行启动、提供服务或部署,且未声明任何要发布的内容,则不适用);有 bin 时也检查 Homebrew;如果包含 engines.vscode,则检查 VS Code Marketplace 和 Open VSX,而非 npm
  • 检查用于描述 PyPI 软件包的 pyproject.toml、setup.py 或 setup.cfg;声明了脚本时也检查 Homebrew
  • crates.io 使用 Cargo.toml(但如果设置了 publish = false,则不适用);构建二进制文件时也检查 Homebrew
  • RubyGems 使用 .gemspec,Packagist 使用 composer.json(但项目除外),pub.dev 使用 pubspec.yaml(但设置了 publish_to: none 时除外);NuGet 使用 .NET 项目或解决方案(但构建 Web 应用、函数、可执行文件或测试时,或无法打包时除外);Docker Hub 使用 Dockerfile;包含可执行文件的 Package.swift 用于 Homebrew
  • 这些目录使用 .claude-plugin/、.cursor-plugin/ 和 gemini-extension.json;JetBrains Marketplace 使用 plugin.xml 或 IntelliJ Gradle 插件;MCP Registry 和 Smithery 使用 MCP SDK 依赖项
  • App Store 使用 Xcode 项目,Google Play 使用 Android 应用;Expo 或 Flutter 应用则两者都检查
  • 在 npm、pnpm、Yarn、Lerna 或 Cargo 工作区根目录下,会按相同方式检查每个成员的渠道

始终检查 GitHub 和域名;对于未在这些平台发布的项目(例如 Rails 应用或 Go 库),只检查 GitHub 和域名(Go 命令还会检查 Homebrew)。在项目之外,则检查一组通用渠道:npm、PyPI、crates.io、Homebrew、GitHub 和域名。

npx nameable nameable --all --tlds com,dev,sh
Checking "nameable" on 23 channels

  ✗ npm                   taken              Find out if a name is free everywhere it matters for …
  ✓ PyPI                  available
  ✓ crates.io             available
  ✓ Homebrew              available          no homebrew-core formula or cask
  ✗ RubyGems              taken              A library that provides parsing and output of person …
  ✓ Packagist             probably available no packages under this vendor; packages frozen for sp…
  ✓ pub.dev               probably available no package with this name; moderated packages and res…
  ✓ NuGet                 probably available no package with this ID; reserved prefixes and the ty…
  ✓ Docker Hub            probably available no user or organization; deactivated or reserved Dock…
  ✓ GitHub user/org       probably available suspended, deleted or reserved accounts also look fre…
  ✓ MCP Registry          probably available no server uses this name in the registry as of 2026-10…
  ✓ Smithery              probably available no public servers; a namespace with none, or with onl…
  ✓ Claude plugins        available          not in the official marketplace
  ✓ Cursor plugins        probably available not among Cursor's listed plugins; plugins in review …
  ✓ Gemini extensions     probably available not in the Gemini CLI gallery; it lists only tagged G…
  ✓ VS Code Marketplace   probably available no extension or publisher; removed extensions keep th…
  ✓ Open VSX              probably available no namespace or similar one; namespaces without publi…
  ✓ JetBrains Marketplace probably available no plugin with this name or ID; unapproved and hidden…
  ✓ App Store             probably available no app with this name in the US store; unreleased app…
  ✓ Google Play           probably available no app with this title in search results of the US st…
  ✗ .com                  taken              registered 1999-02-13, expires 2027-02-13
  ✓ .dev                  probably available not registered; a registry can still refuse premium o…
  ✓ .sh                   probably available not registered (whois); a registry can still refuse p…

  npm       https://www.npmjs.com/package/nameable
  RubyGems  https://rubygems.org/gems/nameable
  .com      https://lookup.icann.org/en/lookup?name=nameable.com

  20 available (16 probably) · 3 taken

若干名称会显示一个网格供比较:

npx nameable twinsy dupefind fclones --only crates,homebrew,github,domain --tlds com,dev,sh
                   twinsy    dupefind  fclones
  crates.io        ✓         ✓         ✗
  Homebrew         ✓         ✓         ✗
  GitHub user/org  ✗         ✓*        ✓*
  .com             ✗         ✗         ✓*
  .dev             ✓*        ✓*        ✓*
  .sh              ✓*        ✓*        ✓*
  free             4/6       5/6       4/6

  ✓ available  ↺ reclaimable  ✗ taken  ⊘ unavailable  ? unknown  * probably available
  Check one name at a time for the details behind each mark.
选项
--all检查所有渠道
--only <ids>要检查的渠道:npm、pypi、crates、homebrew、rubygems、packagist、pub、nuget、docker、github、mcp-registry、smithery、claude-plugins、cursor、gemini、vscode、open-vsx、jetbrains、app-store、google-play、domain(--tlds 中的所有 TLD)或 domain:<tld>
--tlds <list>要检查的域名,支持任意 TLD,最多 20 个(默认值为 com,dev)。没有 RDAP 的 TLD(例如 .io、.sh 和 .de)会通过 whois 查询。使用 --only 时,请包含 domain
--json输出 JSON;当输出目标不是终端时,也会默认使用此选项
--refresh重新下载注册表名称列表
--clear-cache删除缓存的名称列表

如果有可用的 GITHUB_TOKEN、GH_TOKEN 或 gh auth token,GitHub 检查会使用它们,以获得更高的速率限制。

与 AI Agent 搭配使用

Claude Code 插件
/plugin marketplace add minanyang/claude-plugins
/plugin install nameable@minanyang

然后询问一个名称,或运行 /nameable:check <names>。该技能会选择与你的项目相关的渠道进行检查,查找已有同类项目,并为每个候选名称给出结论:使用它、修改后使用(更换范围、其他 TLD 或其他 GitHub 所有者),或放弃它。

该插件自带 CLI 副本,并使用 Node.js 22 或更高版本运行。安装时,Claude Code 会从插件中的 npm 锁文件添加 CLI 的两个依赖项:zod 和 @modelcontextprotocol/server。

MCP 服务

npx -y nameable mcp 会通过 stdio 运行与 MCP 服务相同的检查。它只有一个只读工具 check_names (names,以及可选的 channels、tlds 和 refresh),会将下方的 JSON作为结构化内容返回。 它已列入官方 MCP Registry,名称为 io.github.minanyang/nameable。

客户端添加方式
Claude Codeclaude mcp add nameable -- npx -y nameable mcp
Codexcodex mcp add nameable -- npx -y nameable mcp
Gemini CLI添加到 ~/.gemini/settings.json:{ "mcpServers": { "nameable": { "command": "npx", "args": ["-y", "nameable", "mcp"] } } }
VS Codecode --add-mcp '{"name":"nameable","type":"stdio","command":"npx","args":["-y","nameable","mcp"]}'
Cursor添加到 .cursor/mcp.json 或 ~/.cursor/mcp.json:{ "mcpServers": { "nameable": { "command": "npx", "args": ["-y", "nameable", "mcp"] } } }

答案的含义

状态含义
available无人持有,且注册表会接受它
reclaimable曾有人持有,但已释放(未发布的 npm 包、已完全撤回的 gem);任何人都可以再次获取
taken有人持有;url 会显示持有者。对于名称不具有排他性的渠道(MCP Registry、Google Play、Gemini CLI gallery),表示另一个条目使用了它,且 note 会说明这不会妨碍你使用
unavailable无人确切持有它,但注册表会拒绝它:无效、已保留、过于相似,或删除后暂时被屏蔽
unknown没有可靠的答案:网络错误、速率限制或无法识别的回复。绝不能将其视为可用

available 答案会附带确定性等级。只有 PyPI、crates.io、Homebrew 和 Claude 插件能给出已确认的答案; 其他渠道都会隐藏部分公开信息,因此最多只能给出可能可用的答案。已确认表示已检查该注册表所有可依据公开数据核验的规则。 可能可用(表格中以 * 标示)表示有些规则无法核验,note 会说明原因:GitHub 会隐藏被暂停和保留的账号;npm 的相似名称规则无法检查所有拼写;注册表可能拒绝高级或保留域名;或者无法下载名称列表。PyPI 有两条规则依据的数据并未公开,因此即使是已确认的 PyPI 答案也无法涵盖这两条规则:管理员禁止使用的名称,以及与被隔离项目相似的名称。

渠道除“未找到”之外的检查范围
npmnpm 的名称规则和 Node.js 核心模块;忽略标点后相同的名称;未发布的包,以及取消发布后的 24 小时封锁期;无法检查所有相似拼写,而且缺失的作用域包可能是私有的,因此名称很可能可用
PyPIPEP 508 名称、标准库名称、相似名称(f1ask = flask)、没有任何版本发布或处于隔离期的项目
crates.ioCargo 的名称规则、保留名称、最近删除的名称;将 - 和 _ 视为相同
HomebrewFormula 名称规则、Formula 和 Cask 的别名及旧名称、homebrew-core 禁用的名称
RubyGemsGem 名称规则、忽略大小写后唯一的名称、保留名称、由其所有者暂时保留的撤回 Gem、忽略 - 和 _ 后与热门或近期 Gem 相同的名称
Packagist作为供应商名称时的名称:供应商规则和保留的供应商,以及禁止与仅有一次编辑差异的供应商名称这一拼写错误规则;因垃圾信息被冻结的包会被隐藏,因此名称很可能可用
pub.devDart 名称规则和保留字、为 Dart 和 Flutter 团队保留的名称、相似名称(移除 _、复数形式、用 rn 代替 m);经过审核的包会被隐藏,因此名称很可能可用
NuGetID 规则、未列出的包、NuGet 已删除但仍保留的 ID;保留前缀和拼写投机检查不公开,因此名称很可能可用
Docker HubDocker ID 规则、用户和组织(包括只能通过重定向发现的用户和组织)、官方镜像;已停用的 ID 会被隐藏,因此名称很可能可用
GitHub用户和组织;隐藏账号使名称很可能可用
Domains通过 RDAP 或 whois 查询任意 TLD、国际化名称、注册局无法接受的标签
MCP Registry在任意命名空间中,名称部分匹配的服务。匹配列表包含本项目每天从注册表 API 重新构建的所有服务(注册表自身的搜索需要 30 秒或更长时间);该处没有人拥有裸名称,因此匹配即表示冲突,且名称很可能可用
Smithery命名空间规则;没有公开服务的命名空间也会显示为可用,因此名称很可能可用
Cursor 插件Cursor 的市场;插件名称规则。数据未公开,因此名称很可能可用
Gemini 扩展Gemini CLI 扩展库。名称不唯一,因此匹配仅表示用户会遇到另一个同名扩展
VS Code Marketplace将名称作为扩展名称、显示名称和发布者名称检查,这些名称在该处均为唯一;已移除的扩展仍保留其名称,但会被隐藏,因此名称很可能可用
Open VSX将名称作为命名空间检查:Open VSX 禁止使用与现有命名空间相差不足 20% 的名称,并规定只有经过验证的所有者才能使用 VS Code Marketplace 发布者名称;没有公开扩展的命名空间会被隐藏,因此名称很可能可用
JetBrains Marketplace将名称作为插件 ID 和插件名称检查:JetBrains 禁止新名称使用的词语(plugin、IDEA、产品名称),以及唯一名称指南;未获批准的插件会被隐藏,因此名称很可能可用
App Store在 iOS 和 macOS 搜索中,以美国商店为准,检查是否存在名称完全相同(忽略大小写和标点)的 App;对于中文、日文或韩文名称,也会检查对应商店;附加副标题或制作者名称的标题会报告为冲突,而不是禁止使用。名称在每种本地化版本中唯一,但未发布的 App 不可见,因此名称很可能可用
Google Play在与 App Store 相同的商店中搜索是否存在标题完全相同的 App;附加副标题或制作者名称的标题也会报告为冲突。标题并不唯一,因此匹配表示冲突,而不是禁止使用,且名称很可能可用
Claude 插件Anthropic 的官方市场;插件名称规则,以及 claude plugin validate 保留为 Anthropic 自有的名称
名称列表

有几项检查会与全局注册表列表进行比对:所有 PyPI 项目、所有 Homebrew 别名和旧名称、crates.io 每日数据库转储中的保留名称和最近删除的名称(按字节范围读取,在 2 GB 压缩包中仅读取不到 1 MB)、所有 pub.dev 软件包、所有 gem、所有 MCP 服务、所有 Open VSX 命名空间,以及 Cursor 市场和 Gemini CLI 展廊中的所有插件和扩展。每项列表会在检查首次需要时下载,总计约 25 MB,此后每天最多下载一次。它们会以压缩形式保存(约 12 MB),在 macOS 上保存到 ~/Library/Caches/nameable,在 Linux 上保存到 $XDG_CACHE_HOME/nameable,在 Windows 上保存到 %LOCALAPPDATA%\nameable\Cache,也可保存到 NAMEABLE_CACHE_DIR 指定的位置。

JSON
{
  "schema": 1,
  "reports": [
    {
      "name": "nameable",
      "results": [
        {
          "channel": "npm",
          "label": "npm",
          "status": "taken",
          "url": "https://www.npmjs.com/package/nameable",
          "note": "..."
        },
        {
          "channel": "domain:dev",
          "label": ".dev",
          "status": "available",
          "certainty": "probable",
          "url": "https://lookup.icann.org/en/lookup?name=nameable.dev",
          "note": "..."
        }
      ]
    }
  ]
}

退出代码:0 每个名称在所有渠道上都可用或可重新注册 · 1 在某处已被占用或不可用 · 2 没有名称被占用,但部分渠道无法检查,或无法清除缓存 · 64 用法错误。

语义化版本控制适用于命令和选项、退出代码、渠道 ID、check_names 工具及其输入、status 和 certainty 的 JSON 字段值、上述环境变量,以及支持的最低 Node.js 版本。次要版本可能会新增状态;遇到不认识的状态时,请将其视为 unknown。label 和 note 的措辞、meta 的内容,以及项目会选择哪些渠道,都可能在任何版本中更改;使用 --only 固定渠道。

计划中的渠道

Nameable 目前会检查 npm、PyPI、crates.io、Homebrew、RubyGems、Packagist、pub.dev、NuGet、Docker Hub、GitHub 用户和组织、MCP Registry、Smithery、Claude Code 官方插件市场、Cursor 市场、Gemini CLI 展廊、VS Code Marketplace、Open VSX、JetBrains Marketplace、App Store、Google Play 和域名。下表中的每个渠道都经过测试后才列出:查询某个名称时,会得到能区分名称已存在和名称不存在的答复。

组渠道
社交账号X、YouTube、TikTok

并非所有渠道都有官方 API。如果 Nameable 读取公开页面或未公开的接口,网站可随时更改页面或拦截请求:此类渠道的免费答复最多只能算作可能可用,而被拦截的请求会显示为 unknown。对于将部分规则保密的注册表也是如此,例如保留名称和拼写错误检查。

如果 Nameable 不检查某个与你的项目相关的渠道,Claude Code 技能会将其列为未检查,方便你自行查看。

它会发送什么

Nameable 没有自己的服务端,也不会收集遥测数据;不会向其作者发送任何内容。

  • 一次检查会将名称发送给所检查的每个渠道对应的注册表、商店、目录或 RDAP/whois 服务;对于域名,还会发送该名称与每个 TLD 的组合。这些渠道列在答复的含义下方的表格中。
  • **名称列表**来自这些注册表;MCP Registry 的列表则来自本项目每天在 GitHub 上重新生成的列表(raw.githubusercontent.com/minanyang/nameable/data/mcp-servers.tsv)。这些列表会缓存在你的设备上。
  • GitHub 请求会在可用时携带 GITHUB_TOKEN、GH_TOKEN 或 gh auth token,且只会发送到 api.github.com。
  • Claude Code 插件的技能还会让 Claude 使用已有工具(例如网页搜索)查找先前的相关成果。

许可证

Nameable 基于 MIT License 发布。

Nameable 名称和徽标不受 MIT License 保护。徽标图稿(docs/brand/ 和 plugins/nameable/.claude-plugin/icon.png)版权归 © 2026 Min-An Yang (minanyang) 所有,保留所有权利。分叉版本和衍生作品必须使用不同的名称和徽标;注明分叉版本“基于 Nameable”则没有问题。

评论

支持 Markdown

第一次接触 MCP?

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

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