mcpField
D
DNS and WHOIS query MCP server

DNS and WHOIS query MCP server

ローカル
github.com/patrickdappollonio開発ツール1033 週間前に更新

DNS and WHOIS query MCP server について

mcp-netutilsは、AIアシスタント向けにドメインやネットワークエンドポイントを調べるMCPサーバーです。DNS・WHOIS照会、疎通確認、HTTP応答時間、TLS証明書の分析に対応します。

主な機能

  1. 01ローカル・リモートDNS照会
  2. 02WHOISドメイン照会
  3. 03ホスト名からIPアドレスへの解決
  4. 04ICMP・HTTP疎通テスト
  5. 05TLS証明書チェーン分析

活用シーン

  1. 01ドメインのDNSレコード確認
  2. 02ドメイン登録情報の照会
  3. 03エンドポイント応答時間の測定
  4. 04TLS証明書の有効性確認

MCP 対応

ネットワークとドメインの分析用ツールを7つMCPクライアントに提供します。stdioで動作するほか、HTTP SSE経由でも同じツールを利用できます。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

ネットワークおよびドメイン用ユーティリティの MCP サーバー mcp-netutils

Github Downloads

重要

このプロジェクトは現在 mcp-netutils という名前です。アップグレードする場合は、参照先を更新してください:

  • Docker イメージ:ghcr.io/patrickdappollonio/mcp-netutils:latest
  • Homebrew:patrickdappollonio/tap/mcp-netutils
  • 設定キー:MCP サーバーの設定では "netutils" を使用してください

この変更の詳細については、issue #52を参照してください。

README の画像 mcp-netutils は、AI アシスタント向けに包括的なネットワークおよびドメイン分析機能を提供する Model Context Protocol (MCP) サーバーです。AI モデルは、DNS ルックアップ、WHOIS クエリ、接続テスト、TLS 証明書分析、HTTP エンドポイントの監視、ホスト名の解決を実行できます。

ローカル DNS クエリでは、システムに設定されている DNS サーバーを使用します。リモート DNS クエリでは、Cloudflare DNS-over-HTTPS クエリを使用し、失敗した場合は Google DNS-over-HTTPS にフォールバックします。ほとんどの用途にはこれで十分です。

カスタムの DNS-over-HTTPS サーバーを使用するには、--remote-server-address フラグを使用できます。サーバーエンドポイントは、RFC 8484で定義されている HTTP レスポンス形式を実装する必要があります。

カスタム WHOIS サーバーを使用するには、--custom-whois-server フラグを使用できます。サーバーエンドポイントは、RFC 3912で定義されている HTTP レスポンス形式を実装する必要があります。ただし、プレーンテキストのレスポンスにも対応しています。

機能

  • ローカル DNS クエリ:OS に設定されている DNS サーバーを使用して DNS ルックアップを実行します
  • リモート DNS-over-HTTPS:Cloudflare および Google の DNS-over-HTTPS サービス経由で安全な DNS クエリを実行します
  • WHOIS ルックアップ:WHOIS クエリを実行してドメイン登録情報を取得します
  • ホスト名の解決:ホスト名を対応する IP アドレス(IPv4、IPv6、または両方)に変換します
  • Ping 操作:ICMP を使用してホストへの接続をテストし、応答時間を測定します
  • HTTP Ping 操作:HTTP エンドポイントをテストし、DNS、接続、TLS、TTFB のタイミングを含む詳細な応答時間を測定します
  • TLS 証明書分析:TLS 証明書チェーンの有効性、有効期限、および詳細な証明書情報を確認します
  • 複数のレコードタイプ:A、AAAA、CNAME、MX、NS、PTR、SOA、SRV、TXT のレコードタイプに対応しています
  • フォールバック機構:複数の DNS サーバーを自動的に試行し、信頼性の高い結果を得ます
  • SSE 対応:Server-Sent Events(SSE)を使用する HTTP サーバーとして実行し、ウェブベースの連携に対応します

インストール

この MCP サーバーを利用する方法は 2 つあります。Docker モードを使用する方法(Docker がインストールされていれば、MCP サーバーが自動的にダウンロードされ、実行されます)と、バイナリを使用する方法です。バイナリはリリースページから入手するか、macOS および Linux に Homebrew でインストールできます。

エディターの設定

バイナリを使用して mcp-netutils を利用するには、次の設定をエディターの設定に追加してください:

{
  "mcpServers": {
    "netutils": {
      "command": "mcp-netutils",
      "args": [
        // Uncomment and modify as needed:
        // "--remote-server-address=https://your-custom-doh-server.com/dns-query",
        // "--custom-whois-server=whois.yourdomain.com",
        // "--timeout=5s",
        // "--ping-timeout=5s",
        // "--ping-count=4",
        // "--http-ping-timeout=10s",
        // "--http-ping-count=1",
        // "--tls-timeout=10s"
      ],
      "env": {}
    }
  }
}

上記のように $PATH から mcp-netutils を直接使用することも、バイナリへのフルパス(例:/path/to/mcp-netutils)を指定することもできます。

または、バイナリをインストールせずに Docker で mcp-netutils を直接実行できます:

{
  "mcpServers": {
    "netutils": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/patrickdappollonio/mcp-netutils:latest",
        // Add custom options if needed:
        // "--remote-server-address=https://your-custom-doh-server.com/dns-query",
        // "--custom-whois-server=whois.yourdomain.com",
        // "--timeout=5s",
        // "--ping-timeout=5s",
        // "--ping-count=4",
        // "--http-ping-timeout=10s",
        // "--http-ping-count=1",
        // "--tls-timeout=10s"
      ],
      "env": {}
    }
  }
}

mcp-netutils が公開するツールについては、「利用可能な MCP ツール」を参照してください。

Homebrew(macOS および Linux)
brew install patrickdappollonio/tap/mcp-netutils
Docker

MCP サーバーは、stdio を使用して通信する Docker イメージとして利用できます。

docker pull ghcr.io/patrickdappollonio/mcp-netutils:latest
docker run --rm ghcr.io/patrickdappollonio/mcp-netutils:latest

Docker で SSE モードを使用する場合は、SSE ポート(デフォルトは 3000)を公開してください。

docker run --rm -p 3000:3000 ghcr.io/patrickdappollonio/mcp-netutils:latest --sse --sse-port 3000

エディターまたはツールで MCP サーバーをコンテナーとして実行するように設定する方法については、上記の実装を確認してください。

GitHub Releases

GitHub Releases ページから、お使いのプラットフォーム用のビルド済みバイナリをダウンロードしてください。

利用可能な MCP ツール

利用可能なツールは 7 個です。

  • local_dns_query:OS で設定されたローカル DNS リゾルバーに対して DNS クエリを実行します
  • remote_dns_query:リモートの DNS-over-HTTPS サーバー(Cloudflare/Google)に対して DNS クエリを実行します
  • whois_query:WHOIS 検索を実行して、ドメイン登録情報を取得します
  • resolve_hostname:ホスト名を対応する IP アドレス(IPv4、IPv6、または両方)に変換します
  • ping:ICMP ping を実行して、ホストへの接続をテストし、応答時間を測定します
  • http_ping:HTTP ping を実行して、HTTP エンドポイントをテストし、詳細な応答時間を測定します
  • tls_certificate_check:ドメインの TLS 証明書チェーンを確認し、証明書の有効性、有効期限、チェーン構造を分析します

実行モード

標準(stdio)モード

デフォルトでは、mcp-netutils は stdio モードで実行されます。このモードは、標準入力/出力を介して通信するエディターやその他のツールとの連携に適しています。

mcp-netutils
Server-Sent Events(SSE)モード

また、ウェブベースの連携に対応するため、mcp-netutils を SSE 対応の HTTP サーバーとして実行することもできます。

mcp-netutils --sse --sse-port=3000

SSE モードでは、サーバーは指定されたポート(デフォルト:3000)で待ち受け、Server-Sent Events を使用して HTTP 経由で同じ MCP ツールを提供します。ウェブアプリケーションや、stdio による通信が実用的でない環境で便利です。

設定オプション

MCP サーバーの設定には、以下のコマンドラインフラグを使用できます。

一般オプション
  • --timeout=DURATION:DNS クエリのタイムアウト(デフォルト:5s)
  • --remote-server-address=URL:カスタム DNS-over-HTTPS サーバーのアドレス
  • --custom-whois-server=ADDRESS:カスタム WHOIS サーバーのアドレス
Ping オプション
  • --ping-timeout=DURATION:ping 操作のタイムアウト(デフォルト:5s)
  • --ping-count=NUMBER:送信する ping パケット数のデフォルト値(デフォルト:4)
HTTP Ping オプション
  • --http-ping-timeout=DURATION:HTTP ping 操作のタイムアウト(デフォルト:10s)
  • --http-ping-count=NUMBER:送信する HTTP ping リクエスト数のデフォルト値(デフォルト:1)
TLS オプション
  • --tls-timeout=DURATION:TLS 証明書チェックのタイムアウト(デフォルト:10s)
SSE サーバーオプション
  • --sse:SSE サーバーモードを有効にします
  • --sse-port=PORT:待ち受けるポートを指定します(デフォルト:3000)

ツールの使用方法

Local DNS Query

OS で定義されたローカル DNS サーバーを使用して DNS クエリを実行します。

引数:

  • domain(必須):クエリ対象のドメイン名(例:example.com)
  • record_type(必須):クエリする DNS レコードの種類。デフォルトは A です
    • 対応する種類:A、AAAA、CNAME、MX、NS、PTR、SOA、SRV、TXT

例:

# Query A record for example.com
{"domain": "example.com", "record_type": "A"}

# Query MX records for a domain
{"domain": "example.com", "record_type": "MX"}
Remote DNS Query

リモートの DNS-over-HTTPS サーバー(プライマリは Cloudflare、フォールバックは Google)を使用して DNS クエリを実行します。

引数:

  • domain(必須):クエリ対象のドメイン名(例:example.com)
  • record_type(必須):クエリする DNS レコードの種類。デフォルトは A です
    • 対応する種類:A、AAAA、CNAME、MX、NS、PTR、SOA、SRV、TXT

例:

# Query A record using remote DNS-over-HTTPS
{"domain": "example.com", "record_type": "A"}
WHOIS Query

WHOIS 検索を実行して、ドメイン登録情報を取得します。

引数:

  • domain(必須):クエリ対象のドメイン名(例:example.com)

例:

# Get WHOIS information for a domain
{"domain": "example.com"}
ホスト名の解決

システムのリゾルバーを使用して、ホスト名を対応する IP アドレスに変換します。

引数:

  • hostname(必須):解決するホスト名(例:example.com)
  • ip_version(任意):解決する IP バージョン。デフォルトは ipv4 です
    • 選択肢:ipv4、ipv6、both

例:

# Resolve to IPv4 addresses only
{"hostname": "example.com", "ip_version": "ipv4"}

# Resolve to both IPv4 and IPv6
{"hostname": "example.com", "ip_version": "both"}
Ping

ICMP ping を実行して、ホストへの接続をテストし、応答時間を測定します。

引数:

  • target(必須):ping の対象となるホスト名または IP アドレス(例:example.com または 8.8.8.8)
  • count(任意):送信する ping パケットの数。デフォルトは 4 です

例:

# Ping a host 4 times (default)
{"target": "example.com"}

# Ping a host 10 times
{"target": "8.8.8.8", "count": 10}
HTTP Ping

HTTP ping を実行して、HTTP エンドポイントへの接続をテストし、詳細な応答時間を測定します。

引数:

  • url(必須):ping の対象となる URL(例:https://api.example.com/users)
  • method(任意):使用する HTTP メソッド。デフォルトは GET です
    • 対応するメソッド:GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH
  • count(任意):送信する HTTP リクエストの数。デフォルトは 1 です

レスポンス形式: ツールは、詳細なタイミング情報を 1 行形式で返します:

GET https://api.example.com/users 200 OK | dns=42ms conn=156ms tls=298ms ttfb=567ms total=623ms

タイミング測定項目:

  • dns:DNS 解決時間
  • conn:TCP 接続の確立時間
  • tls:TLS ハンドシェイク時間(HTTPS URL の場合のみ)
  • ttfb:最初のバイトまでの時間(サーバー応答時間)
  • total:リクエストの合計時間

例:

# Single GET request
{"url": "https://httpbin.org/get"}

# Multiple POST requests
{"url": "https://httpbin.org/post", "method": "POST", "count": 3}

# Test API endpoint
{"url": "https://api.github.com/users/octocat"}
TLS 証明書の確認

ドメインの TLS 証明書チェーンを確認し、証明書の有効性、有効期限、チェーン構造を分析します。

引数:

  • domain(必須):TLS 証明書を確認するドメイン名(例:example.com)
  • port(任意):TLS 確認で接続するポート。デフォルトは 443 です
  • include_chain(任意):レスポンスに証明書チェーン全体を含めるかどうか。デフォルトは true です
  • check_expiry(任意):証明書の有効期限を確認し、警告を表示するかどうか。デフォルトは true です
  • server_name(任意):SNI(Server Name Indication)に使用するサーバー名。デフォルトはドメイン名です

例:

# Check TLS certificate for domain
{"domain": "example.com"}

# Check TLS certificate on custom port
{"domain": "example.com", "port": 8443}

# Check without certificate chain details
{"domain": "example.com", "include_chain": false}

例

基本的な使用例
# Start the MCP server in stdio mode
mcp-netutils

# Start with custom DNS timeout
mcp-netutils --timeout=10s

# Start with custom HTTP ping settings
mcp-netutils --http-ping-timeout=15s --http-ping-count=3

# Start in SSE mode on port 8080
mcp-netutils --sse --sse-port=8080
高度な設定例
# Use custom DNS-over-HTTPS server
mcp-netutils --remote-server-address=https://dns.quad9.net/dns-query

# Use custom WHOIS server
mcp-netutils --custom-whois-server=whois.custom.com

# Combine multiple options
mcp-netutils \
  --timeout=10s \
  --ping-timeout=3s \
  --ping-count=3 \
  --http-ping-timeout=15s \
  --http-ping-count=2 \
  --tls-timeout=30s

コメント

MCP は初めてですか?

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

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