Internet Names Mcp について
Internet Names Mcp は、ドメイン、ソーシャルメディアのハンドル、subreddit の空き状況を調べる MCP サーバーです。名前の組み合わせ生成と複数サービスの確認に対応し、NameSilo API キーを設定するとドメイン価格も取得できます。
主な機能
- 01RDAP または NameSilo によるドメイン確認
- 02ソーシャルメディアのハンドル確認
- 03subreddit 名の空き状況確認
- 04名前の生成と一括確認
- 05オプションでドメイン価格を取得
活用シーン
- 01プロジェクト名のドメイン候補を確認
- 02各サービスでのハンドル空き状況を比較
- 03利用可能な subreddit 名を探す
- 04生成した名前の組み合わせを絞り込む
MCP 対応
ドメイン、ソーシャルメディアのハンドル、subreddit、および一括確認のツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Internet Names MCP サーバー
ドメイン名、ソーシャルメディアのハンドル名、サブレディットの利用可能状況を確認する MCP サーバーです。プログラムでの利用に適した、整った JSON レスポンスを返します。
機能
- ドメイン名 - RDAP(無料)または NameSilo API(無料ですが、API キーが必要です。レスポンスにはドメインの価格も含まれます)で利用可能状況を確認します
- ソーシャルメディアのハンドル名 - Instagram、Twitter/X、Reddit、YouTube、TikTok、Twitch、Threads、Bluesky、GitHub、Snapchat、Pinterest、Kick、Substack
- サブレディット - Reddit でサブレディット名が利用可能か確認します
- 包括的な検索 - 名前の組み合わせを生成し、すべてを一度に確認します
クイックスタート
1. Claude Code に追加する(推奨)
claude mcp add --scope user internet-names-mcp uvx internet-names-mcp
これだけで完了です!サーバーは、ドメイン検索に RDAP を使用してすぐに動作します。
2. NameSilo API を設定する(ドメイン価格の確認に必要な場合)
ドメイン名の利用可能状況を確認するには、NameSilo API キーを設定することをおすすめします。無料で、基本的な登録だけで利用できます。設定しない場合は RDAP を使用しますが、いくつか大きな制限があります(下記参照)。
NameSilo API キーを設定する
- namesilo.com でアカウントを作成します(またはログインします)
- API Manager に移動します
- Generate New API Key をクリックします
- キーをコピーして、次を実行します:
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 キーチェーン)が使用されるためです。
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_handles() ではなく、check_subreddits() で確認します。
check_domains(names, tlds?, method?, only_report_available?)
ドメイン名の利用可能状況と価格を確認します。
パラメーター:
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
names | list[str] | 必須 | 確認するドメイン名またはベース名 |
tlds | list[str] | ["com", "io", "ai", "co", "app", "dev", "net", "org"] | 確認する TLD |
method | str | "auto" | "auto"、"rdap"、または "namesilo" |
only_report_available | bool | false | true の場合、利用できないドメインをレスポンスから省略します |
名前にドットが含まれている場合は、完全なドメイン名として扱います。含まれていない場合は、各 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(username, platforms?, only_report_available?)
複数のプラットフォームで、ソーシャルメディアのハンドル名が利用可能か確認します。
パラメーター:
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
username | str | 必須 | 確認するユーザー名/ハンドル名 |
platforms | list[str] | すべてのプラットフォーム | 確認するプラットフォーム |
only_report_available | bool | false | true の場合、利用できないハンドル名をレスポンスから省略します |
対応プラットフォーム:instagram、twitter、reddit、youtube、tiktok、twitch、threads、bluesky、github、snapchat、pinterest、kick、substack
すべてのプラットフォームを並行して確認します。通常、呼び出しには 2〜5 秒かかります。Instagram、Threads、Reddit ではヘッドレス Chromium ブラウザーを使用します(初回使用時に自動でインストールされます)。
各プラットフォームでの確認方法と、「利用可能」の意味:
| プラットフォーム | 方法 | 「利用可能」の意味 |
|---|---|---|
twitter | X の登録用ユーザー名利用可否エンドポイント | X でそのユーザー名を登録できます |
instagram | プロフィールページを確認し、その後 Instagram の登録用ユーザー名検証を実行 | Instagram でそのユーザー名を登録できます |
threads | Instagram に準拠(Threads のハンドル名は Instagram のユーザー名です)。URL のプロフィールページを確認 | Instagram でそのユーザー名を登録できます |
bluesky | bsky.social の <name>.bsky.social に対して com.atproto.temp.checkHandleAvailability を実行 | Bluesky でそのユーザー名を登録できます |
reddit | Reddit の username_available エンドポイント | Reddit でそのユーザー名を登録できます |
tiktok | プロフィールページに埋め込まれたユーザーステータス | アカウントが見つかりません(凍結または削除されたアカウントも同じように表示されます) |
youtube | @handle ページのステータス | チャンネルが見つかりません(予約済みまたは停止済みのハンドル名も同じように表示される場合があります) |
twitch | 停止済みおよび削除済みアカウントも含む、Twitch Web GraphQL のユーザー検索 | アカウントが見つかりません |
github | GitHub REST API によるユーザー検索(ユーザーと組織が対象。トークンなしの場合、1 時間あたり 60 回まで) | アカウントが見つかりません(予約済みの名前も同じように表示される場合があります) |
snapchat | snapchat.com/@username ページのステータス | アカウントが見つかりません(予約済みの名前も同じように表示される場合があります) |
pinterest | プロフィールページのタイトル、またはページに埋め込まれた「ユーザーが見つかりません」というエラー | アカウントが見つかりません(予約済みの名前も同じように表示される場合があります) |
kick | Kick の公開チャンネル API に加え、一部のアンダースコア付きユーザー名に Kick が割り当てるハイフン付きスラッグ | チャンネルが見つかりません(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 でサブレディット名が利用可能か確認します。
パラメーター:
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
names | list[str] | 必須 | 確認するサブレディット名(r/ プレフィックスの有無は問いません) |
only_report_available | bool | false | true の場合、利用できないサブレディットをレスポンスから省略します |
レスポンス:
{
"available": ["mynewsubreddit"],
"unavailable": [
{"name": "programming", "subscribers": 6835000},
{"name": "privatesubreddit", "note": "private"}
]
}
サブレディットは、ヘッドレスブラウザーセッションで Reddit の about.json を通じて検索されます。note には、サブレディットが公開されていない状態で保持されている理由(private、gold_only、quarantined、banned など)が記載されます。または、その名前が有効なサブレディット名ではない理由が説明されます。
check_everything(components, tlds?, platforms?, method?, require_all_tlds_available?, only_report_available?, also_include_hyphens?)
ドメインとソーシャルメディアを横断して包括的にチェックします。コンポーネントから名前の組み合わせを生成し、まずドメインをチェックしてから(高速)、ドメインチェックに通った名前のソーシャルハンドルをチェックします。
パラメーター:
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
components | list[str] | 必須 | 組み合わせる名前のコンポーネント(例:["red", "sweater"]) |
tlds | list[str] | ["com", "net", "org", "io", "ai"] | チェックするTLD |
platforms | list[str] | すべてのプラットフォーム | チェックするソーシャルプラットフォーム |
method | str | "auto" | "auto"、"rdap"、または "namesilo" |
require_all_tlds_available | bool | false | true の場合、ハンドルのチェック対象となるには、すべてのTLDで名前が使用可能である必要があります |
only_report_available | bool | false | true の場合、使用不可の項目をレスポンスから省略します |
also_include_hyphens | bool | false | 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ブートストラップ経由でレジストリに直接クエリします | 無料 | 高速 |
namesilo | NameSilo API(APIキーが必要) | 有料 | 高速 |
RDAPの制限事項
RDAPは無料で、APIキーも不要ですが、いくつかの制限事項があります。
- TLDの対応状況 - すべてのトップレベルドメイン(TLD)にRDAPサーバーがあるわけではありません。未対応のTLDへのクエリは失敗します。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キーの検索順序(最初に見つかったものを使用):
- macOS Keychain(macOSのみ)
- 環境変数(
NAMESILO_API_KEY) - 設定ファイル(フォールバック)
開発
ローカルセットアップ
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- 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 のみを使ったシンプルなテストです |
インタラクティブテスト
Web UI を使ったインタラクティブなデバッグには MCP Inspector を使用します。
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
キャッシュの有効期限が切れると、自動的に更新されます(デフォルトの TTL は、IANA の Cache-Control ヘッダーに基づき 24 時間です)。
トラブルシューティング
「playwright not installed」または Chromium のエラー
Playwright ブラウザーをインストールします。
playwright install chromium
または、uvx を使います。
uvx --from playwright install chromium
「Instagram is throttling username checks」
Instagram は、1 つの IP アドレスから実行できるサインアップ時のユーザー名確認回数を制限します。制限中は、どの名前に対しても「利用不可」と応答します。サーバーはランダムな対照用の名前を使ってこれを検出し、誤った回答の代わりに、プロフィールが存在するかどうかを示したエラーを報告します。テストでは、1 つの IP アドレスから約 20~40 回確認した後に制限が発動し、約 25 分以内に解除されました。使用済みの名前はプロフィールページから確定され、この制限回数には含まれません。
Reddit のエラー(「bot-check page」または「without data」)
Reddit はブラウザー以外のクライアントをブロックし、IP アドレス単位でレート制限を行います。サーバーはヘッドレスブラウザーで Reddit の JavaScript チェックを通過し、サーバープロセスの実行中、取得した Reddit の Cookie をメモリ上に保持します(ディスクには保存しません)。呼び出しのたびに新しいチャレンジを解消すると、Reddit が CAPTCHA を要求するようになるためです。それでも Reddit が CAPTCHA を要求する場合、エラーにその旨が表示されます。サーバーが CAPTCHA の解読を試みることはありません。しばらく待ってから再試行してください。
著作権
Copyright (C) 2026 Nuclear Cyborg Corp
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。