关于 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测量端点响应时间
- 04检查 TLS 证书有效性
MCP 相关
向 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 是一个 模型上下文协议(MCP)服务,为 AI 助手提供全面的网络和域名分析能力。它使 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 查询:使用操作系统配置的 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 支持:作为 HTTP 服务运行,并通过服务器发送事件(SSE)支持 Web 集成
安装
获取此 MCP 服务有两种方式:可以使用 Docker 模式(如果已安装 Docker,它会自动下载并运行 MCP 服务),也可以使用二进制文件;二进制文件可从发布页面获取,或通过 Homebrew 为 macOS 和 Linux 安装。
编辑器配置
将以下配置添加到编辑器设置中,即可通过二进制文件使用 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 服务以 Docker 镜像的形式提供,并使用 stdio 进行通信:
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:使用操作系统配置的本地 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
服务器发送事件(SSE)模式
此外,你也可以将 mcp-netutils 作为支持 SSE 的 HTTP 服务运行,以便用于基于 Web 的集成:
mcp-netutils --sse --sse-port=3000
在 SSE 模式下,服务将在指定端口(默认值:3000)上监听,并通过服务器发送事件(Server-Sent Events)在 HTTP 上提供相同的 MCP 工具。这适用于 Web 应用,或不便使用 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)
工具使用文档
本地 DNS 查询
使用操作系统定义的本地 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"}
远程 DNS 查询
使用远程 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 查询
执行 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
响应格式: 该工具以单行格式返回详细的计时信息:
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 检查连接的端口,默认为443include_chain(可选):是否在响应中包含完整证书链,默认为truecheck_expiry(可选):是否检查证书是否到期并提供警告,默认为trueserver_name(可选):用于 SNI(服务器名称指示)的服务器名称,默认为该域名
示例:
# 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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。