mcp-domaintools<img src="https://i.imgur.com/cai3zrG.png" width="160" align="right" /> mcp-domaintools 是一个提供全面网络和域名分析能力的 Model Context Protocol (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响应格式,尽管纯文本响应也受支持。
有三种方式可以获取此MCP服务器:您可以使用Docker模式(如果您已安装Docker,将自动下载并运行MCP服务器),或者二进制选项,都可以从发布页面获取,或者通过Homebrew安装适用于macOS和Linux的版本。
向编辑器设置添加以下配置,以便通过二进制选项使用mcp-domaintools:
{
"mcpServers": {
"domaintools": {
"command": "mcp-domaintools",
"args": [
// 注释掉并根据需要修改:
// "--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-domaintools,如上所示,也可以提供二进制文件的完整路径(例如,/path/to/mcp-domaintools)。
或者,您可以直接使用Docker运行mcp-domaintools,而无需安装二进制文件:
{
"mcpServers": {
"domaintools": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/patrickdappollonio/mcp-domaintools:latest",
// 如需添加自定义选项:
// "--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": {}
}
}
}
您还可以通过npm使用MCP服务器:
{
"mcpServers": {
"domaintools": {
"command": "npx",
"args": [
"-y",
"@patrickdappollonio/mcp-domaintools",
// 如需添加自定义选项:
// "--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工具"了解mcp-domaintools提供的工具信息。
brew install patrickdappollonio/tap/mcp-domaintools
MCP服务器可以通过stdio进行通信的Docker镜像获取:
docker pull ghcr.io/patrickdappollonio/mcp-domaintools:latest
docker run --rm ghcr.io/patrickdappollonio/mcp-domaintools:latest
对于Docker中的SSE模式,暴露SSE端口(默认3000):
docker run --rm -p 3000:3000 ghcr.io/patrickdappollonio/mcp-domaintools:latest --sse --sse-port 3000
查看上述实现了解如何配置MCP服务器以在编辑器或工具中作为容器运行。
MCP服务器也可通过npm获取:
npm install @patrickdappollonio/mcp-domaintools@latest
或者使用npx:
npx -y @patrickdappollonio/mcp-domaintools@latest
这将以stdio模式运行MCP服务器(确保运行npx的是AI工具)!
您可以在Cursor中一键安装(注意这将使用Docker版本的MCP服务器,因为它不需要本地二进制安装):
从GitHub 发布页面下载适用于您平台的预构建二进制文件。
有7个工具可用:
local_dns_query:对本地DNS解析器执行DNS查询,该解析器由操作系统配置remote_dns_query:对远程DNS-over-HTTPS服务器执行DNS查询(Cloudflare/Google)whois_query:执行WHOIS查询以获取域名注册信息resolve_hostname:将主机名转换为其对应的IP地址(IPv4、IPv6或两者)ping:执行ICMP ping操作以测试连通性和测量主机的响应时间http_ping:执行HTTP ping操作以测试HTTP端点并测量详细的响应时间tls_certificate_check:检查域名的TLS证书链以分析证书的有效性、过期时间和链结构默认情况下,mcp-domaintools 在 stdio 模式下运行,适合与通过标准输入/输出通信的编辑器和其他工具集成。
mcp-domaintools
或者,您可以将mcp-domaintools作为支持SSE的HTTP服务器运行,用于基于Web的集成:
mcp-domaintools --sse --sse-port=3000
在SSE模式下,服务器将在指定端口(默认:3000)监听,并通过HTTP使用Server-Sent Events提供相同的MCP工具。这对于Web应用程序或无法使用stdio通信的环境非常有用。
以下命令行标志可用于配置MCP服务器:
--timeout=DURATION:DNS查询超时(默认:5秒)--remote-server-address=URL:自定义DNS-over-HTTPS服务器地址--custom-whois-server=ADDRESS:自定义WHOIS服务器地址--ping-timeout=DURATION:ping操作超时(默认:5秒)--ping-count=NUMBER:默认发送的ping数据包数量(默认:4)--http-ping-timeout=DURATION:HTTP ping操作超时(默认:10秒)--http-ping-count=NUMBER:默认发送的HTTP ping请求数量(默认:1)--tls-timeout=DURATION:TLS证书检查超时(默认:10秒)--sse:启用SSE服务器模式--sse-port=PORT:指定监听端口(默认:3000)使用本地操作系统定义的DNS服务器执行DNS查询。
参数:
domain(必需):要查询的域名(例如,example.com)record_type(必需):要查询的DNS记录类型,默认为A
A、AAAA、CNAME、MX、NS、PTR、SOA、SRV、TXT示例:
# 查询example.com的A记录
{"domain": "example.com", "record_type": "A"}
# 查询example.com的MX记录
{"domain": "example.com", "record_type": "MX"}
使用远程DNS-over-HTTPS服务器执行DNS查询(Cloudflare为主,Google为备用)。
参数:
domain(必需):要查询的域名(例如,example.com)record_type(必需):要查询的DNS记录类型,默认为A
A、AAAA、CNAME、MX、NS、PTR、SOA、SRV、TXT示例:
# 使用远程DNS-over-HTTPS查询A记录
{"domain": "example.com", "record_type": "A"}
执行WHOIS查询以获取域名注册信息。
参数:
domain(必需):要查询的域名(例如,example.com)示例:
# 获取example.com的WHOIS信息
{"domain": "example.com"}
使用系统解析器将主机名转换为其对应的IP地址。
参数:
hostname(必需):要解析的主机名(例如,example.com)ip_version(可选):要解析的IP版本,默认为ipv4
ipv4、ipv6、both示例:
# 解析为IPv4地址
{"hostname": "example.com", "ip_version": "ipv4"}
# 解析为IPv4和IPv6地址
{"hostname": "example.com", "ip_version": "both"}
执行ICMP ping操作以测试连通性和测量主机的响应时间。
参数:
target(必需):要ping的目标主机名或IP地址(例如,example.com或8.8.8.8)count(可选):要发送的ping数据包数量,默认为4示例:
# 对目标主机ping 4次(默认)
{"target": "example.com"}
# 对目标主机ping 10次
{"target": "8.8.8.8", "count": 10}
执行HTTP ping操作以测试HTTP端点并测量详细的响应时间。
参数:
url(必需):要ping的URL(例如,https://api.example.com/users)method(可选):要使用的HTTP方法,默认为GET
GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCHcount(可选):要发送的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:总请求时间示例:
# 单个GET请求
{"url": "https://httpbin.org/get"}
# 多个POST请求
{"url": "https://httpbin.org/post", "method": "POST", "count": 3}
# 测试API端点
{"url": "https://api.github.com/users/octocat"}
检查域名的TLS证书链以分析证书的有效性、过期时间和链结构。
参数:
domain(必需):要检查TLS证书的域名(例如,example.com)port(可选):用于TLS检查的端口,默认为443include_chain(可选):是否在响应中包含完整的证书链,默认为truecheck_expiry(可选):是否检查证书过期并提供警告,默认为trueserver_name(可选):用于SNI(服务器名称指示)的服务器名称,默认为域名示例:
# 检查example.com的TLS证书
{"domain": "example.com"}
# 检查example.com在自定义端口上的TLS证书
{"domain": "example.com", "port": 8443}
# 不包含证书链详情的检查
{"domain": "example.com", "include_chain": false}
# 以stdio模式启动MCP服务器
mcp-domaintools
# 启动时自定义DNS超时
mcp-domaintools --timeout=10s
# 启动时自定义HTTP ping设置
mcp-domaintools --http-ping-timeout=15s --http-ping-count=3
# 在端口8080上启动SSE模式
mcp-domaintools --sse --sse-port=8080
# 使用自定义DNS-over-HTTPS服务器
mcp-domaintools --remote-server-address=https://dns.quad9.net/dns-query
# 使用自定义WHOIS服务器
mcp-domaintools --custom-whois-server=whois.custom.com
# 结合多个选项
mcp-domaintools \
--timeout=10s \
--ping-timeout=3s \
--ping-count=3 \
--http-ping-timeout=15s \
--http-ping-count=2 \
--tls-timeout=30s