mcpField
I
Internet Names Mcp

Internet Names Mcp

本地服务
github.com/drewster99商业与营销23 周前更新

关于 Internet Names Mcp

Internet Names Mcp 是用于查询域名、社交媒体用户名和 subreddit 可用性的 MCP 服务。它可组合名称并跨平台检查;配置 NameSilo API 密钥后,还能返回域名价格。

主要功能

  1. 01通过 RDAP 或 NameSilo 查询域名
  2. 02检查社交媒体用户名可用性
  3. 03查询 subreddit 名称可用性
  4. 04组合名称并进行综合检查
  5. 05可选返回域名价格

适用场景

  1. 01为项目名称检查域名选项
  2. 02比较用户名在各平台的可用性
  3. 03查找可用的 subreddit 名称
  4. 04筛查生成的名称组合

MCP 相关

该服务向 MCP 客户端提供域名、社交媒体用户名、subreddit 及综合可用性检查工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"InternetNamesMCP": {
"command": "uvx",
"args": [
"internet-names-mcp"
],
"env": {
"NAMESILO_API_KEY": "<NAMESILO_API_KEY>"
}
}
}
}
启动命令uvx internet-names-mcp
需要配置的环境变量
NAMESILO_API_KEY密钥

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

安装包
pypiinternet-names-mcp

工具

还没有获取到工具列表

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

详细介绍

Internet Names MCP Server

用于检查域名、社交媒体账号名和 subreddit 是否可用的 MCP 服务。返回适合程序化使用的简洁 JSON 响应。

功能

  • 域名 - 通过 RDAP(免费)或 NameSilo API(免费,但需要 API 密钥;响应还会包含域名价格)检查可用性
  • 社交媒体账号名 - Instagram、Twitter/X、Reddit、YouTube、TikTok、Twitch、Threads、Bluesky、GitHub、Snapchat、Pinterest、Kick、Substack
  • Subreddit - 检查 Reddit 上的 subreddit 名称是否可用
  • 综合搜索 - 生成名称组合,并一次性检查所有内容

快速开始

1. 添加到 Claude Code(推荐)
claude mcp add --scope user internet-names-mcp uvx internet-names-mcp

完成!服务器会立即使用 RDAP 查询域名。

2. 可选:配置 NameSilo API(用于查询域名价格)

配置 NameSilo API 密钥后,域名可用性检查效果最佳。该密钥免费,只需完成基本注册即可获取。否则,我们会改用 RDAP,但它有一些明显的限制(见下文)。

设置 NameSilo API 密钥

  1. 在 namesilo.com 创建账号(或登录)
  2. 前往 API Manager
  3. 点击 Generate New API Key
  4. 复制密钥并运行:
uvx internet-names-mcp --setup

系统会提示你粘贴 API 密钥。 在 macOS 上,API 密钥会安全地存储在 iCloud 钥匙串或登录钥匙串中,名称为 internet-names-mcp.namesilo。在其他平台上,它会存储在 ~/.config/internet-names-mcp/config.json 中。

推荐使用 --setup,因为它可以安全地存储密钥。你也可以通过环境变量设置密钥(见下文的“手动配置”)。

手动配置

如果你不使用 Claude Code,或更喜欢手动配置 MCP 服务,请将以下内容添加到 MCP 客户端的配置文件中(例如 Claude Desktop 的 claude_desktop_config.json):

{
  "mcpServers": {
    "internet-names-mcp": {
      "command": "uvx",
      "args": ["internet-names-mcp"]
    }
  }
}

若要通过环境变量设置 NameSilo API 密钥(如果你尚未使用 --setup):

{
  "mcpServers": {
    "internet-names-mcp": {
      "command": "uvx",
      "args": ["internet-names-mcp"],
      "env": {
        "NAMESILO_API_KEY": "your_api_key_here"
      }
    }
  }
}

注意:建议使用 uvx internet-names-mcp --setup 存储 API 密钥,而不是使用环境变量,因为在条件允许时,它会使用安全存储(macOS Keychain)。

CLI 命令

uvx internet-names-mcp --setup         # Configure API keys interactively
uvx internet-names-mcp --show-config   # Show current configuration
uvx internet-names-mcp --version       # Show version
uvx internet-names-mcp --help          # Show help

工具

get_supported_socials()

返回受支持的社交媒体平台列表。

响应:

{
  "platforms": ["instagram", "twitter", "reddit", "youtube", "tiktok", "twitch", "threads", "bluesky", "github", "snapchat", "pinterest", "kick", "substack", "subreddit"]
}

注意:subreddit 通过 check_subreddits() 检查,而非 check_handles()。


check_domains(names, tlds?, method?, only_report_available?)

检查域名的可用性和价格。

参数:

名称类型默认值说明
nameslist[str]必填要检查的域名或基础名称
tldslist[str]["com", "io", "ai", "co", "app", "dev", "net", "org"]要检查的顶级域名
methodstr"auto""auto"、"rdap" 或 "namesilo"
only_report_availableboolfalse如果为 true,则响应中省略不可用的域名

如果名称中包含句点,则会将其视为完整域名。否则,会将其与每个顶级域名组合。

响应:

{
  "available": [
    {"domain": "myapp.com", "price": 17.29},
    {"domain": "myapp.io", "price": 34.99}
  ],
  "unavailable": ["myapp.ai"],
  "summary": {
    "cheapestAvailable": {"domain": "myapp.com", "price": 17.29},
    "shortestAvailable": {"domain": "myapp.io", "price": 34.99}
  }
}

check_handles(username, platforms?, only_report_available?)

检查各个平台上的社交媒体用户名是否可用。

参数:

名称类型默认值说明
usernamestr必填要检查的用户名
platformslist[str]所有平台要检查的平台
only_report_availableboolfalse如果为 true,则在响应中省略不可用的用户名

支持的平台:instagram、twitter、reddit、youtube、tiktok、twitch、threads、bluesky、github、snapchat、pinterest、kick、substack

所有平台都会并行检查;通常一次调用需要 2–5 秒。Instagram、Threads 和 Reddit 使用无头 Chromium 浏览器(首次使用时会自动安装)。

各平台的检查方式及“可用”的含义:

平台方法“可用”表示
twitterX 注册页面的用户名可用性接口X 允许注册此用户名
instagram个人资料页面,然后使用 Instagram 注册页面的用户名验证Instagram 允许注册此用户名
threads与 Instagram 一致(Threads 用户名就是 Instagram 用户名);通过个人资料页面检查 URLInstagram 允许注册此用户名
bluesky在 bsky.social 上调用 com.atproto.temp.checkHandleAvailability,检查 <name>.bsky.socialBluesky 允许注册此用户名
redditReddit 的 username_available 接口Reddit 允许注册此用户名
tiktok个人资料页面中嵌入的用户状态未找到账号(被封禁或已移除的账号看起来相同)
youtube@handle 页面状态未找到频道(保留或已终止的用户名可能看起来相同)
twitchTwitch Web GraphQL 用户查询,包括已暂停和已删除的账号未找到账号
githubGitHub REST API 用户查询(用户和组织;不使用令牌时每小时可查询 60 次)未找到账号(保留名称可能看起来相同)
snapchatsnapchat.com/@username 页面状态未找到账号(保留名称可能看起来相同)
pinterest个人资料页面标题,或页面嵌入的“未找到用户”错误未找到账号(保留名称可能看起来相同)
kickKick 公共频道 API,以及 Kick 为部分带下划线的用户名提供的连字符形式的 slug未找到频道(Kick 未公开长度规则,因此只验证字符)
substack检查 <name>.substack.com 是否可访问或会重定向(这是出版物子域名,而非 Substack 用户名)未找到出版物或保留子域名

只有平台明确表示可用时,才会报告为可用。拦截页面、速率限制和意外响应会作为错误报告(位于 unavailable 中,并带有 error 字段),绝不会报告为可用或已占用。

响应:

{
  "available": ["instagram", "tiktok", "youtube"],
  "unavailable": [
    {"platform": "twitter", "url": "https://x.com/myapp"},
    {"platform": "reddit", "url": "https://www.reddit.com/user/myapp"},
    {"platform": "bluesky", "note": "Reserved or not allowed by Bluesky"},
    {"platform": "twitch", "error": "Twitch returned HTTP 503"}
  ]
}

check_subreddits(names, only_report_available?)

检查 Reddit 上 subreddit 名称是否可用。

参数:

名称类型默认值说明
nameslist[str]必填要检查的 subreddit 名称(可带或不带 r/ 前缀)
only_report_availableboolfalse如果为 true,则在响应中省略不可用的 subreddit

响应:

{
  "available": ["mynewsubreddit"],
  "unavailable": [
    {"name": "programming", "subscribers": 6835000},
    {"name": "privatesubreddit", "note": "private"}
  ]
}

通过无头浏览器会话调用 Reddit 的 about.json 查询 subreddit。若某个 subreddit 受限但未公开(private、gold_only、quarantined、banned 等),note 会附上 Reddit 给出的原因;若名称不是有效的 subreddit 名称,则会说明原因。

check_everything(components, tlds?, platforms?, method?, require_all_tlds_available?, only_report_available?, also_include_hyphens?)

全面检查域名和社交媒体。根据各组成部分生成名称组合,先检查域名(速度较快),再检查通过域名检查的名称对应的社交账号。

参数:

名称类型默认值描述
componentslist[str]必填要组合的名称组成部分(例如,["red", "sweater"])
tldslist[str]["com", "net", "org", "io", "ai"]要检查的顶级域名
platformslist[str]所有平台要检查的社交平台
methodstr"auto""auto"、"rdap" 或 "namesilo"
require_all_tlds_availableboolfalse若为 true,名称必须在所有顶级域名中都可注册,才会检查其社交账号
only_report_availableboolfalse若为 true,响应中省略不可用的项目
also_include_hyphensboolfalse若为 true,也检查带连字符的域名(不会检查这些名称的社交账号)

名称生成: 根据组成部分 ["red", "sweater"],生成:

  • 单个组成部分:red、sweater
  • 拼接形式:redsweater、sweaterred
  • 使用 also_include_hyphens 时:red-sweater、sweater-red(仅检查域名)

带连字符的形式可能出现在 available_domains 和 domain_successful_basenames 中,但不会检查其社交账号,因此不会出现在 available_handles、unavailable_handles 或 fully_available 中。在组成部分中输入的连字符(例如,["red-sweater"])属于调用方提供的拼写方式,与其他名称一样会检查其社交账号。

响应:

{
  "available_domains": [
    {"domain": "redsweater.com", "price": 17.29},
    {"domain": "redsweater.io", "price": 34.99}
  ],
  "domain_successful_basenames": ["redsweater", "sweaterred"],
  "available_handles": {
    "redsweater": ["instagram", "twitter", "youtube"],
    "sweaterred": ["instagram", "tiktok"]
  },
  "unavailable_handles": {
    "redsweater": [{"platform": "reddit", "url": "..."}]
  },
  "summary": {
    "fully_available": ["sweaterred"],
    "cheapest_domain": {"domain": "redsweater.com", "price": 17.29}
  }
}

fully_available 列表包含在所有已检查平台上都可用的名称。

域名查询方式

方式描述费用速度
auto若已配置 API 密钥则使用 NameSilo,否则使用 RDAP使用 NameSilo 时收费快
rdap通过 IANA 引导信息直接查询注册局否快
namesiloNameSilo API(需要 API 密钥)是快
RDAP 的局限性

RDAP 免费且无需 API 密钥,但有一些局限性:

  • 顶级域名覆盖范围 - 并非所有顶级域名(TLD)都有 RDAP 服务。对不受支持的顶级域名进行查询会失败。RDAP 支持 .com、.net、.org、.app、.ai 等。请参阅 deployment.rdap.org 获取最新列表(查看“RDAP”列中标记为“Yes”的项目)。
  • 不提供价格 - RDAP 只报告可用性,不提供注册域名的费用。
  • 误报 - 通过 RDAP 查询时,域名可能显示为可用,但实际上被注册商保留或被视为“溢价”域名,因此实际上无法注册或购买价格高得令人却步。

如需获取包含价格的可靠结果,请配置 NameSilo API 密钥。

配置

API 密钥存储位置:

  • macOS: Keychain(名称为 internet-names-mcp.namesilo)
  • Linux: ~/.config/internet-names-mcp/config.json
  • Windows: %APPDATA%/internet-names-mcp/config.json

API 密钥查找顺序(使用首个匹配项):

  1. macOS Keychain(仅限 macOS)
  2. 环境变量(NAMESILO_API_KEY)
  3. 配置文件(备用)

开发

本地设置

devsetup.sh 脚本负责创建虚拟环境并安装依赖项:

git clone https://github.com/drewster99/InternetNamesMCP.git InternetNamesMCP
cd InternetNamesMCP
source devsetup.sh          # Creates .venv, activates it, installs dependencies
playwright install chromium # Required for Instagram, Threads and Reddit checks (auto-installed on first use otherwise)

选项:

  • source devsetup.sh - 设置环境(默认)
  • source devsetup.sh --clean - 删除虚拟环境和缓存
  • source devsetup.sh --clean --setup - 清理后重新构建
API 密钥配置(开发)

从源代码运行时,请直接使用模块,而不要使用 uvx:

source devsetup.sh  # Activate environment first

python -m internet_names_mcp --setup       # Configure API keys interactively
python -m internet_names_mcp --show-config # Show current configuration and key source
python -m internet_names_mcp --version     # Show version
运行测试
source devsetup.sh  # Activate environment first

# Main test suites
python test_server.py         # Full test suite - offline validation + online API tests
python test_mcp_interface.py  # Tests via MCP protocol (stdio transport)
python test_rdap_client.py    # Async RDAP client, rate limiter, batch queries

# Comparison/diagnostic tests
python test_methods.py        # Compare RDAP vs NameSilo results for discrepancies
python test_rdap.py           # Quick RDAP-only domain check
测试文件说明
test_server.py主测试套件,涵盖所有 MCP 工具、边缘情况和 API 调用
test_mcp_interface.py通过 stdio 使用实际 MCP 协议测试服务
test_rdap_client.py测试异步 RDAP 客户端、速率限制和批量查询
test_methods.py对比 RDAP 与 NameSilo,以检测可用性差异
test_rdap.py仅使用 RDAP 的简单测试,用于快速检查域名可用性
交互式测试

使用 MCP Inspector 通过 Web UI 进行交互式调试:

npx @modelcontextprotocol/inspector .venv/bin/python -m internet_names_mcp
项目结构
├── src/internet_names_mcp/
│   ├── __init__.py       # CLI entry point
│   ├── __main__.py       # Module runner
│   ├── server.py         # MCP server
│   ├── config.py         # Configuration management
│   ├── rdap_bootstrap.py # RDAP bootstrap cache
│   └── rdap_client.py    # Async RDAP client
├── pyproject.toml       # Package configuration
└── README.md
数据文件

RDAP 引导缓存 - 将 TLD 映射到其权威 RDAP 服务(从 IANA 自动下载):

  • macOS/Linux: ~/.cache/internet-names-mcp/rdap_bootstrap.json
  • Windows: %APPDATA%/internet-names-mcp/rdap_bootstrap.json

缓存过期后会自动刷新(根据 IANA 的 Cache-Control 标头,默认 TTL 为 24 小时)。

故障排除

“未安装 playwright”或 Chromium 错误

安装 Playwright 浏览器:

playwright install chromium

或使用 uvx:

uvx --from playwright install chromium
“Instagram 正在限制用户名检查”

Instagram 会限制单个 IP 地址可进行的注册用户名验证次数。受到限制时,Instagram 对所有名称都会返回“不可用”;服务会通过随机控制名称检测这种情况,并报告错误(注明是否存在个人主页),而不会给出错误答案。测试中,单个 IP 地址进行约 20–40 次检查后就会触发限制,约 25 分钟后解除。已被占用的名称会根据个人主页确定,不计入限制次数。

Reddit 错误(“机器人检查页面”或“没有数据”)

Reddit 会拦截非浏览器客户端,并按 IP 地址实施速率限制。服务会在无头浏览器中通过 Reddit 的 JavaScript 检查,并在服务进程运行期间将生成的 Reddit Cookie 保存在内存中(绝不写入磁盘),因为每次调用都清除并重新应对挑战,会导致 Reddit 升级为 CAPTCHA。如果 Reddit 仍要求输入 CAPTCHA,错误信息会说明这一点;服务绝不会尝试破解。请稍等一段时间后重试。

版权

版权所有 (C) 2026 Nuclear Cyborg Corp

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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