mcpField
W
whois-mcp-server

whois-mcp-server

ローカル
github.com/cyanheadsセキュリティ12 週間前に更新

whois-mcp-server について

whois-mcp-serverは、RDAPとDNS-over-HTTPSを使ってドメインやネットワーク情報を調べるMCPサーバーです。登録情報、DNS、IP、ASNを確認するAgent向けで、APIキー不要のデータソースと2種類の通信方式に対応します。

主な機能

  1. 01ドメイン登録情報と状態の取得
  2. 02DNSレコードとTTLの取得
  3. 03IP、ネットブロック、逆引きDNSの検索
  4. 04ASNの組織情報の解決
  5. 05ドメイン情報の一括レポート生成

活用シーン

  1. 01ドメインの登録事業者、期限、DNSSECの確認
  2. 02DNS設定やメール関連レコードの調査
  3. 03IP範囲の管理組織や不正利用窓口の特定
  4. 04登録情報とDNS情報をまとめた初期調査

MCP 対応

MCPサーバーとして、ドメインとネットワークの検索ツール6種をSTDIOまたはStreamable HTTPでクライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cyanheads-whois": {
"command": "npx",
"args": [
"-y",
"@cyanheads/whois-mcp-server"
],
"env": {
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"RDAP_TIMEOUT_MS": "<RDAP_TIMEOUT_MS>",
"DOH_TIMEOUT_MS": "<DOH_TIMEOUT_MS>",
"RDAP_MAX_RETRIES": "<RDAP_MAX_RETRIES>",
"DOH_MAX_RETRIES": "<DOH_MAX_RETRIES>",
"MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<MCP_HTTP_ENDPOINT_PATH>",
"MCP_PUBLIC_URL": "<MCP_PUBLIC_URL>",
"MCP_AUTH_MODE": "<MCP_AUTH_MODE>"
}
}
}
}
起動コマンドnpx -y @cyanheads/whois-mcp-server
設定が必要な環境変数
MCP_LOG_LEVELSets the minimum log level for output (e.g., 'debug', 'info', 'warn').
RDAP_TIMEOUT_MSHTTP timeout for RDAP requests in milliseconds.
DOH_TIMEOUT_MSHTTP timeout for DNS-over-HTTPS requests in milliseconds.
RDAP_MAX_RETRIESMax retry attempts on transient RDAP failures.
DOH_MAX_RETRIESMax retry attempts on transient DNS-over-HTTPS failures.
MCP_TRANSPORT_TYPESelects the HTTP transport.
MCP_HTTP_HOSTThe hostname for the HTTP server.
MCP_HTTP_PORTThe port to run the HTTP server on.
MCP_HTTP_ENDPOINT_PATHThe endpoint path for the MCP server.
MCP_PUBLIC_URLPublic origin override for deployments behind a TLS-terminating reverse proxy (e.g. https://mcp.example.com).
MCP_AUTH_MODEシークレットAuthentication mode to use: 'none', 'jwt', or 'oauth'.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@cyanheads/whois-mcp-server0.2.1

ツール

6

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
domainstringはい検索する完全修飾ドメイン名(例:"example.com"、"github.com")。有効な FQDN である必要があります。ラベルはドットで区切り、各ラベルは最大 63 文字です。

詳細

@cyanheads/whois-mcp-server

MCP を介して RDAP と DNS-over-HTTPS を利用し、ドメイン登録情報の検索、レジストリレコードの状態確認、DNS レコードの取得、IP と ASN の解決を行います。STDIO または Streamable HTTP に対応しています。

6 個のツール

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


概要

RDAP と DNS-over-HTTPS によるドメインおよびネットワーク情報の取得。ドメイン登録情報の検索、レジストリレコードの状態確認、DNS レコードの取得、IP と ASN のレジストリへの解決を行います。API キーは不要です。

ツール
ツール説明
whois_lookup_domainドメイン登録情報一式 — レジストラー、作成日/有効期限、ネームサーバー、EPP ステータス、DNSSEC、登録者組織
whois_check_availabilityレジストリレコードの有無を確認します。レコードが見つからなくても、登録資格があるとは限りません
whois_get_dnsDNS-over-HTTPS による DNS 所有者レコード(A、AAAA、MX、TXT、NS、CNAME、SOA、CAA、PTR)
whois_lookup_ipRIR RDAP による IP または CIDR ネットブロック、組織、国、Abuse 連絡先、逆引き DNS
whois_lookup_asnASN を組織名、国、RIR ソースに解決します
whois_get_dossier1 回の呼び出しでドメインをトリアージ — 登録情報と DNS を並行取得し、事実に基づくシグナルを含む単一のレコードに正規化します

機能リファレンス

whois_lookup_domain ツール
  • 完全修飾ドメイン名を受け取り、IANA ブートストラップを通じてレジストリの RDAP サーバーを選択します。
  • レジストラー、日付、ネームサーバー、EPP ステータス、DNSSEC、registrant_redacted を返します。レジストリから根拠が得られない場合、DNSSEC とプライバシーの値は null のままです。rdap_no_coverage、domain_not_found、rdap_invalid_domain_response(応答が照会したドメインと一致しない場合)で失敗します。
  • include_registrar: true を指定すると、レジストラーの RDAP 紹介先を 1 つたどり、registrar_detail(found、no_referral、failed のいずれかと、ソース URL)を追加します。既定では無効です。RDAP_TIMEOUT_MS による制限があり、失敗してもレジストリの結果は保持されます。

whois_check_availability tool
  • 完全修飾ドメイン名を受け取ります。
  • registration_status: registered | not_found | unknown を返します。登録が見つかった場合、available は false、それ以外の場合は null で、true になることはありません。404 はレコードがないことを意味し、その名前が登録可能であることを意味するわけではありません。
  • 既知の ICANN サブドメインについては、登録可能な親ドメインとともに non_registrable_domain を返します。

whois_get_dns tool
  • ASCII DNS 名を受け取ります(_dmarc.example.com のようなアンダースコアを含むラベルも使用できます)。長さは最大 253 文字で、各ラベルは 1~63 文字です。types は省略可能で、指定できる値は A、AAAA、MX、TXT、NS、CNAME、SOA、CAA、PTR です。デフォルトは A、AAAA、MX、TXT、NS です。
  • TTL と query_sources: [{type, source}] を含むレコードを返します。空の応答と NXDOMAIN も含みます。従来の source は、いずれかのクエリが Cloudflare から正常な応答を受け取った場合は cloudflare、それ以外の場合は nextdns です。
  • リゾルバーの失敗コードと応答の切り詰めについては、再試行とフォールバックの後にエラーを返します。CAA クエリは NextDNS に送信されます。

whois_lookup_ip tool
  • オプションの CIDR プレフィックス(0~32/0~128)を指定した IPv4/IPv6 アドレスを受け取ります。元の ip をそのまま返します。
  • 組織、国、不正利用の連絡先、プロバイダーの CIDR を cidrs で返します(該当する CIDR が 1 つだけの場合に限り cidr も返します)。また、ベストエフォートで逆引き DNS を照会し、ptr_status: found | not_found | failed を返します。失敗時には ptr_source_error が設定されますが、RDAP データは保持されます。
  • include_routing: true を指定すると、RIPEstat Network Info(RIPEstat Network Info)で観測されたプレフィックスと origin_asns を含む routing(found | not_found | failed)が追加されます。デフォルトでは無効です。ルーティングの照会に失敗しても、RDAP と PTR の結果は保持されます。
  • invalid_ip、ip_not_found、ip_no_rdap_route(そのアドレスをカバーする RIR がない場合。再試行不可)、または private_range で失敗します。private_range の対象は、0.0.0.0/8、10.0.0.0/8、100.64.0.0/10、127.0.0.0/8、169.254.0.0/16、172.16.0.0/12、192.168.0.0/16、255.0.0.0/8、::1/128、fc00::/7、fe80::/10 です。

whois_lookup_asn tool
  • 1~4294967295 の ASN を受け取ります。AS プレフィックスは省略可能です(例:AS15169、AS 15169、+15169)。範囲外の数値を指定すると invalid_asn で失敗します。
  • name、org_name、country、rir、start_autnum、end_autnum を返します。レコードがない場合は asn_not_found で失敗します。

whois_get_dossier tool
  • 完全修飾ドメイン名を受け取り、登録情報と A/MX/NS/TXT の照会を並行して実行します。
  • 登録情報、DNS、ドメインの経過年数、プライバシーの状態、推定される NS/MX プロバイダーを返します。照会の一方が失敗しても、もう一方のデータは保持され、rdap_source_error または dns_source_error が設定されます。both_legs_failed は、どちらも成功しなかったことを意味します。
  • null MX(0 .)は、そのドメインがメールを受け付けないことを意味します。

特長

@cyanheads/mcp-ts-core を基盤としています。stdio および Streamable HTTP トランスポート、差し替え可能な認証(none / jwt / oauth)、切り替え可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレースを備えた構造化ロギングに対応しています。

RDAP / DNS 固有の機能:

  • HTTPS 経由の RDAP — ポート 43 の TCP に依存しません
  • IANA ブートストラップによる自動選択 — TLD、RIR、ASN 範囲に応じた適切なレジストリの RDAP サーバーを選択します。ブートストラップ JSON はメモリ内に 24 時間キャッシュされます
  • Cloudflare と NextDNS 経由の DNS-over-HTTPS — タイプごとのルーティング(CAA には NextDNS、それ以外には Cloudflare)と自動フォールバックに対応した 2 プロバイダー構成です
  • API キー不要 — すべてのデータソース(IANA、レジストリ RDAP エンドポイント、RIR RDAP、Cloudflare DoH、NextDNS DoH、オプションの RIPEstat Network Info)は公開されており、キーは不要です

エージェントに適した出力:

  • カバレッジは 2 つの方法で示されます — whois_check_availability と whois_get_dossier はデータとして rdap_coverage: false を返し、同じケースで whois_lookup_domain は rdap_no_coverage をスローします
  • プライバシーのリダクションは、レジストリで確認できる場合は true、その証拠がない場合は null です
  • 部分的な失敗を許容します — whois_get_dossier は検索に失敗すると source_error フィールドを設定して処理を続行します。両方の検索が失敗した場合のみエラーになります
  • スコアではなく、事実に基づくシグナルです — age_days、privacy_redacted、ns_provider、mx_provider は合成されたリスクスコアではなく、実データです

はじめに

API キーやアカウントは不要です。MCP クライアントの設定ファイルに以下を追加してください。

{
  "mcpServers": {
    "whois-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/whois-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

または、npx を使用する場合(Bun は不要です):

{
  "mcpServers": {
    "whois-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/whois-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

または、Docker を使用する場合:

{
  "mcpServers": {
    "whois-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MCP_TRANSPORT_TYPE=stdio",
        "ghcr.io/cyanheads/whois-mcp-server:latest"
      ]
    }
  }
}

Streamable HTTP を使用するには、トランスポートを設定してサーバーを起動します。

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://127.0.0.1:3010/mcp
前提条件
  • Bun v1.4.0 以降(または Node.js v24 以降)。
  • API キーは不要です — すべてのデータソースは公開されています。
インストール
  1. リポジトリをクローンします:
git clone https://github.com/cyanheads/whois-mcp-server.git
  1. ディレクトリに移動します:
cd whois-mcp-server
  1. 依存関係をインストールします:
bun install
  1. 環境を設定します:
cp .env.example .env
# All vars are optional — defaults work for most use cases

設定

変数説明デフォルト
RDAP_TIMEOUT_MSRDAP リクエストの HTTP タイムアウト(ミリ秒)。5000
DOH_TIMEOUT_MSDNS-over-HTTPS リクエストの HTTP タイムアウト(ミリ秒)。3000
RDAP_MAX_RETRIES一時的な RDAP エラー発生時の最大再試行回数。2
DOH_MAX_RETRIES一時的な DoH エラー発生時の最大再試行回数。2
MCP_TRANSPORT_TYPEトランスポート:stdio または http。stdio
MCP_HTTP_PORTHTTP サーバーのポート。3010
MCP_AUTH_MODE認証モード:none、jwt、または oauth。none
MCP_LOG_LEVELログレベル(RFC 5424)。info
OTEL_ENABLEDOpenTelemetry インストルメンテーションを有効にします。false

オプションの上書き設定の全一覧は .env.example を参照してください。


サーバーの実行

ローカル開発
  • ビルドして実行:

    bun run rebuild
    bun run start:stdio
    # or
    bun run start:http
    
  • チェックとテストを実行:

    bun run devcheck   # Lint, format, typecheck, security
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions against spec
    
Docker
docker build -t whois-mcp-server .
docker run --rm -p 3010:3010 whois-mcp-server

Dockerfile のデフォルト設定は、HTTP トランスポート、ステートレスセッションモード、および /var/log/whois-mcp-server へのログ出力です。OpenTelemetry のピア依存関係はデフォルトでインストールされます。これらを省略するには、--build-arg OTEL_ENABLED=false を指定してビルドしてください。


プロジェクト構成

パス目的
src/index.tsエントリーポイント — アプリを起動します。
src/app.tscreateApp() のオプション — ツールを登録し、サービスを初期化して、セッションモードを宣言します。
src/config/サーバー固有の環境変数の解析と検証(Zod)。
src/services/rdap/RDAP クライアント — IANA ブートストラップキャッシュ、ドメイン/IP/ASN の検索、再試行。
src/services/doh/DNS-over-HTTPS クライアント — Cloudflare をプライマリ、NextDNS をフォールバックとして使用します。
src/services/routing/オプションの RIPEstat RIS ルーティング観測機能と、範囲を限定したエクスチェンジ。
src/mcp-server/tools/ツール定義(*.tool.ts)。
tests/src/ に対応する Vitest テスト。
docs/設計および API リファレンス文書。

開発ガイド

開発ガイドラインとアーキテクチャ上のルールについては、CLAUDE.md を参照してください。要点は次のとおりです。

  • ハンドラーは例外をスローし、フレームワークが捕捉します — ツールロジック内で try/catch を使用しないでください
  • リクエストスコープのログには ctx.log を使用してください
  • 新しいツールは src/app.ts の tools 配列を通じて登録してください
  • 外部 API 呼び出しをラップします。生データを検証し、ドメイン型に正規化してから、出力スキーマに従って返してください。不足しているフィールドを捏造しないでください

貢献

Issue を歓迎します。提出前にチェックとテストを実行してください。

bun run devcheck
bun run test

ライセンス

Apache-2.0 — 詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。