互联网名称MCP服务器
用于检查域名、社交媒体句柄和子版块可用性的MCP服务器。返回适合编程使用的干净JSON响应。
特性
- 域名 -通过RDAP(免费)或NameSilo API(免费,但需要API密钥-响应也包括域名价格)检查可用性
- 社交媒体句柄 -Instagram、Twitter/X、Reddit、YouTube、TikTok、Twitch、Threads
- 子漩涡 -检查Reddit上是否有子版块名称
- 综合搜索 -生成名称组合并立即检查所有内容
快速开始
1.添加到克劳德代码(推荐)
claude mcp add --scope user internet-names-mcp uvx internet-names-mcp就是这样!服务器立即使用RDAP进行域查找。
2.可选:配置NameSilo API(用于域定价)
如果配置NameSilo API密钥,则检查域名可用性效果最佳。它是免费的,只需要基本的注册。否则,我们将回到使用RDAP,它有一些明显的局限性(见下文)。
设置NameSilo API密钥
- 在以下网址创建帐户 网站 namesilo.com (或登录)
- 首选 API经理
- 点击 生成新的API密钥
- 复制密钥并运行:
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_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_supportd_socials()
返回支持的社交媒体平台列表。
答复:
{
"platforms": ["instagram", "twitter", "reddit", "youtube", "tiktok", "twitch", "threads", "subreddit"]
}注: subreddit 通过以下方式检查 check_subreddits(),不 check_handles().
______________________________________________________________________
check_domains(名称、tld、方法、仅报告可用)
检查域名可用性和定价。
参数:
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
names | list\[str\] | 必填 | 要检查的域名或基本名称 |
tlds | 列表 | ["com", "io", "ai", "co", "app", "dev", "net", "org"] | 要检查的TLD |
method | str | "auto" | "auto", "rdap",或 "namesilo" |
only_report_available bool的。 false | 如果为真,则从响应中省略不可用域 |
如果一个名称包含一个点,它将被视为一个完整的域。否则,它将与每个TLD结合使用。
答复:
{
"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(用户名、平台?、只有_report_available?)
检查跨平台的社交媒体句柄可用性。
参数:
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
username | str | 必填 | 要检查的用户名/句柄 |
platforms | list\[str\] | 所有平台 | 要检查的平台 |
only_report_available bool的。 false | 如果为true,则从响应中省略不可用句柄 |
支持的平台: instagram, twitter, reddit, youtube, tiktok, twitch, threads
注意:Twitter/X检查使用无头浏览器,大约需要4秒。
答复:
{
"available": ["instagram", "tiktok", "youtube"],
"unavailable": [
{"platform": "twitter", "url": "https://x.com/myapp"},
{"platform": "reddit", "url": "https://reddit.com/user/myapp"}
]
}______________________________________________________________________
check_subreddits(名称,只有_report_available?)
在Reddit上查看子版块名称的可用性。
参数:
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
names | list\[str\] | 必填 | 要检查的子文件夹名称(带或不带r/前缀) |
only_report_available bool的。 false | 如果为true,则从响应中省略不可用的子版块 |
答复:
{
"available": ["mynewsubreddit"],
"unavailable": [
{"name": "programming", "subscribers": 6835000},
{"name": "privatesubreddit", "note": "private"}
]
}______________________________________________________________________
检查所有内容(组件、tld、平台、方法、require_all_tlds_available、only report_availably、also_siven连字符)
跨域和社交媒体的全面检查。从组件生成名称组合,首先(快速)检查域,然后检查通过域检查的名称的社交句柄。
参数:
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
components | list\[str\] | required | 命名要组合的组件(例如。, ["red", "sweater"]) |
tlds | 列表 | ["com", "net", "org", "io", "ai"] | 要检查的TLD |
platforms | list\[str\] | 所有平台 | 要检查的社交平台 |
method | str | "auto" | "auto", "rdap",或 "namesilo" |
require_all_tlds_available bool的。 false | 如果为真,则名称必须在所有TLD中可用,才有资格进行句柄检查 | ||
only_report_available bool的。 false | 如果为真,则从响应中省略不可用项 | ||
also_include_hyphens bool的。 false | 如果为真,还要检查连字符版本 |
名称生成: 从组件 ["red", "sweater"],生成:
- 单个组件:
red,sweater - 连接:
redsweater,sweaterred
答复:
{
"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 | With NameSilo | Fast |
rdap | 通过IANA引导程序直接查询注册表 | 否 | 快速 |
namesilo | NameSilo API(需要API密钥) | 是 | 快速 |
RDAP限制
RDAP是免费的,不需要API密钥,但有一些限制:
- TLD覆盖范围 -并非所有顶级域(TLD)都有RDAP服务器。查询不受支持的TLD将失败。RDAP适用于.com、.net、.org、.app、.ai等。看 deployment.rdap.org 获取最新列表(在“RDAP”列中查找“是”)。
- 无定价 -RDAP只报告可用性,而不是注册域的成本。
- 假阳性 -域名可能通过RDAP显示可用,但实际上被注册商保留或视为“高级”域名,使其实际上不可用或购买成本过高。
为了获得可靠的定价结果,请配置NameSilo API密钥。
配置
API密钥存储:
- macOS: 钥匙扣(如
internet-names-mcp.namesilo) - Linux:
~/.config/internet-names-mcp/config.json - 窗户:
%APPDATA%/internet-names-mcp/config.json
API密钥查找顺序(第一场比赛获胜):
- macOS钥匙串(仅限macOS)
- 环境变量(
NAMESILO_API_KEY) - 配置文件(回退)
发展
本地设置
这 devsetup.sh 脚本处理虚拟环境创建和依赖关系安装:
git clone InternetNamesMCP
cd InternetNamesMCP
source devsetup.sh # Creates .venv, activates it, installs dependencies
playwright install chromium # Required for Twitter/X handle checking选项:
source devsetup.sh-设置环境(默认)source devsetup.sh --clean-删除venv和缓存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检查器与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 - 窗户:
%APPDATA%/internet-names-mcp/rdap_bootstrap.json
缓存过期时会自动刷新(IANA缓存控制标头中的默认24小时TTL)。
故障排除
“找不到夏洛克”
Sherlock作为依赖项自动安装。如果看到此错误,请重新安装:
uvx --reinstall internet-names-mcp“未安装剧作家”或Chromium错误
安装Playwright浏览器:
playwright install chromium或者使用uvx:
uvx --from playwright install chromiumTwitter检查失败或超时
Twitter/X检查使用无头浏览器,这可能会很慢或被阻止。如果检查始终失败,推特可能会限制或阻止自动访问。
版权
版权所有(C)2026核机公司
