DNS and WHOIS query MCP server について
mcp-netutilsは、AIアシスタント向けにドメインやネットワークエンドポイントを調べるMCPサーバーです。DNS・WHOIS照会、疎通確認、HTTP応答時間、TLS証明書の分析に対応します。
主な機能
- 01ローカル・リモートDNS照会
- 02WHOISドメイン照会
- 03ホスト名からIPアドレスへの解決
- 04ICMP・HTTP疎通テスト
- 05TLS証明書チェーン分析
活用シーン
- 01ドメインのDNSレコード確認
- 02ドメイン登録情報の照会
- 03エンドポイント応答時間の測定
- 04TLS証明書の有効性確認
MCP 対応
ネットワークとドメインの分析用ツールを7つMCPクライアントに提供します。stdioで動作するほか、HTTP SSE経由でも同じツールを利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ネットワークおよびドメイン用ユーティリティの MCP サーバー mcp-netutils
重要
このプロジェクトは現在
mcp-netutilsという名前です。アップグレードする場合は、参照先を更新してください:
- Docker イメージ:
ghcr.io/patrickdappollonio/mcp-netutils:latest- Homebrew:
patrickdappollonio/tap/mcp-netutils- 設定キー:MCP サーバーの設定では
"netutils"を使用してくださいこの変更の詳細については、issue #52を参照してください。
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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。