mcp-domaintools
is a Model Context Protocol (MCP) server providing DNS and WHOIS query capabilities for AI assistants. It enables AI models to perform DNS lookups both via local DNS resolvers and remote DNS-over-HTTPS services.
For local DNS queries, it uses the system's configured DNS servers. For remote DNS queries, it uses Cloudflare DNS-over-HTTPS queries with a fallback to Google DNS-over-HTTPS. This is more than enough for most use cases.
For custom DNS-over-HTTPS servers, you can use the --remote-server-address
flag. The server endpoint must implement the HTTP reponse format as defined by RFC 8484.
For custom WHOIS servers, you can use the --custom-whois-server
flag. The server endpoint must implement the HTTP reponse format as defined by RFC 3912, although plain text responses are also supported.
- Local DNS Queries: Perform DNS lookups using the OS-configured DNS servers
- Remote DNS-over-HTTPS: Perform secure DNS queries via Cloudflare and Google DNS-over-HTTPS services
- WHOIS Lookups: Perform WHOIS queries to get domain registration information
- Multiple Record Types: Support for A, AAAA, CNAME, MX, NS, PTR, SOA, SRV, and TXT record types
- Fallback Mechanism: Automatically tries multiple DNS servers for reliable results
- SSE Support: Run as an HTTP server with Server-Sent Events (SSE) for web-based integrations
Add the following configuration to your editor's settings to use mcp-domaintools
:
{
"mcpServers": {
"dns": {
"command": "mcp-domaintools",
"args": [
// Uncomment and modify as needed:
// "--remote-server-address=https://your-custom-doh-server.com/dns-query",
// "--custom-whois-server=whois.yourdomain.com",
// "--timeout=10s"
],
"env": {}
}
}
}
You can use mcp-domaintools
directly from your $PATH
as shown above, or provide the full path to the binary (e.g., /path/to/mcp-domaintools
).
Alternatively, you can run mcp-domaintools
directly with Docker without installing the binary:
{
"mcpServers": {
"dns": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/patrickdappollonio/mcp-domaintools:latest"
// Add custom options if needed:
// "--remote-server-address=https://your-custom-doh-server.com/dns-query",
// "--custom-whois-server=whois.yourdomain.com",
// "--timeout=10s"
],
"env": {}
}
}
}
See "Available MCP Tools" for information on the tools exposed by mcp-domaintools
.
brew install patrickdappollonio/tap/mcp-domaintools
The MCP server is available as a Docker image using stdio
to communicate:
docker pull ghcr.io/patrickdappollonio/mcp-domaintools:latest
docker run --rm ghcr.io/patrickdappollonio/mcp-domaintools:latest
For SSE mode with Docker, expose the SSE port (default 3000
):
docker run --rm -p 3000:3000 ghcr.io/patrickdappollonio/mcp-domaintools:latest --sse --sse-port 3000
Check the implementation above on how to configure the MCP server to run as a container in your editor or tool.
Download the pre-built binaries for your platform from the GitHub Releases page.
There are 3 tools available:
local_dns_query
: Perform DNS queries against the local DNS resolver as configured by the OSremote_dns_query
: Perform DNS queries against a remote DNS-over-HTTPS serverwhois_query
: Perform WHOIS lookups to get domain registration information
By default, mcp-domaintools
runs in stdio mode, which is suitable for integration with editors and other tools that communicate via standard input/output.
mcp-domaintools
Alternatively, you can run mcp-domaintools
as an HTTP server with SSE support for web-based integrations:
mcp-domaintools --sse --sse-port=3000
In SSE mode, the server will listen on the specified port (default: 3000) and provide the same MCP tools over HTTP using Server-Sent Events. This is useful for web applications or environments where stdio communication isn't practical.
Available SSE Options:
--sse
: Enable SSE server mode--sse-port=PORT
: Specify the port to listen on (default: 3000)
Performs DNS queries using local OS-defined DNS servers.
Arguments:
domain
(required): The domain name to query (e.g., example.com)record_type
(required): Type of DNS record to query (A, AAAA, CNAME, MX, NS, PTR, SOA, SRV, TXT)
Performs DNS queries using remote DNS-over-HTTPS servers (Google and Cloudflare).
Arguments:
domain
(required): The domain name to query (e.g., example.com)record_type
(required): Type of DNS record to query (A, AAAA, CNAME, MX, NS, PTR, SOA, SRV, TXT)
Performs WHOIS lookups to get domain registration information.
Arguments:
domain
(required): The domain name to query (e.g., example.com)