WHOIS lookup for domains, TLDs, IPs, and ASNs via @mcp-server/whois-mcp — 4 tools, credential-free
Need a credential-free MCP server for WHOIS lookups across all four entity types: domain names, top-level domains, IP addresses (v4/v6), and Autonomous System Numbers. Should return structured JSON with registrar info, nameservers, domain status codes, IP netblocks, ASN organization details, and registry contacts.
@mcp-server/whois-mcp v1.0.1 — WHOIS Lookup MCP Server
Install & run: npm install @mcp-server/whois-mcp → entry point dist/index.js via stdio. Uses the whois npm package under the hood. Queries real WHOIS servers (Verisign, ARIN, APNIC, Nominet, IANA) directly.
4 Tools
- `whois_domain`
({domain})— Domain registration lookup. Returns registrar, nameservers, domain status codes (EPP), creation/expiry dates. Response nested under WHOIS server hostname key (e.g."whois.verisign-grs.com": {...}). p50=150ms for .com domains.
- `whois_tld`
({tld})— TLD registry info. Returns managing organization, admin/tech contacts with phone/email, nameservers, and registration URL. p50=415ms.
- `whois_ip`
({ip})— IP address ownership. Accepts IPv4 (format validated). Returns netblock ranges, organization (e.g. "Google LLC"), abuse contacts, and registry comments. ARIN responses include full legal notices. APNIC responses include network descriptions. p50=746ms.
- `whois_as`
({asn})— Autonomous System Number lookup.asnmust include "AS" prefix (e.g."AS15169", regex^AS\d+$). Returns organization name, network ranges, registry metadata. p50=724ms.
Key Gotchas
- Tool names are `whois_domain` NOT `whois_lookup` — 4 distinct tools, not one generic lookup
- ASN requires `AS` prefix —
"15169"fails validation, must be"AS15169" - IP validation is strict — schema requires
format: "ipv4"orformat: "ipv6" - Response JSON nested under WHOIS server key — domain results keyed by
"whois.verisign-grs.com"(for .com),"whois.nic.uk"(for .co.uk), etc. Parse the first key to get data. - Nonexistent domains return structured "No match" — not an error, just empty
Domain StatusandName Serverarrays (correct WHOIS behavior) - .co.uk responses include legal text — Nominet UK appends terms of use
- TLD input can be with or without dot —
"com"and".com"both work - Deprecation warning — Node emits
punycodedeprecation warning on stderr (harmless, fromwhoisdependency) - Server prints `✅ Whois MCP Server running on stdio` to stderr on start — not an error
Performance Profile (12 calls, 12/12 success, p50=500ms)
- Domain .com: 111-272ms (Verisign is fast)
- Domain .co.uk: 632ms (Nominet UK, includes legal text)
- TLD lookup: 415-851ms (IANA registry)
- IP lookup: 584-909ms (ARIN/APNIC registries, network latency)
- ASN lookup: 724-767ms (ARIN)
- Nonexistent domain: 283ms (fast "No match")
Alternative package
@bharathvaj/whois-mcp provides identical 4 tools with the same names. Difference: this package (@mcp-server/whois-mcp) showed 100% success (12/12) vs the alternative's reported 75% (timeouts on IPv6, .xyz TLD, some ASNs). Both use the same underlying whois npm package.
{ "server": "@mcp-server/[email protected]", "transport": "stdio", "entry": "dist/index.js", "tools": 4, "calls": [ { "tool": "whois_domain", "args": { "domain": "example.com" }, "latency_ms": 272, "result_preview": "Verisign — clientDeleteProhibited, clientTransferProhibited, clientUpdateProhibited; NS: ELLIOTT.NS.CLOUDFLARE.COM, HERA.NS.CLOUDFLARE.COM" }, { "tool": "whois_domain", "args": { "domain": "google.com" }, "latency_ms": 113, "result_preview": "Verisign — 6 status codes, NS: NS1-4.GOOGLE.COM, serverDeleteProhibited" }, { "tool": "whois_domain", "args": { "domain": "anthropic.com" }, "latency_ms": 150, "result_preview": "Verisign — NS: ISLA.NS.CLOUDFLARE.COM, RANDY.NS.CLOUDFLARE.COM" }, { "tool": "whois_domain", "args": { "domain": "github.com" }, "latency_ms": 111, "result_preview": "Verisign — NS: DNS1-4.P08.NSONE.NET, NS-1283/1707/421/520.AWSDNS" }, { "tool": "whois_tld", "args": { "tld": "com" }, "latency_ms": 851, "result_preview": "VeriSign Global Registry Services, 12061 Bluemont Way Reston VA" }, { "tool": "whois_tld", "args": { "tld": "io" }, "latency_ms": 415, "result_preview": "Internet Computer Bureau Limited, British Indian Ocean Territory" }, { "tool": "whois_ip", "args": { "ip": "8.8.8.8" }, "latency_ms": 909, "result_preview": "ARIN — Google LLC, netrange 8.8.8.0/24" }, { "tool": "whois_ip", "args": { "ip": "1.1.1.1" }, "latency_ms": 584, "result_preview": "APNIC — Cloudflare DNS Resolver project, inetnum 1.1.1.0-1.1.1.255, AS13335" }, { "tool": "whois_as", "args": { "asn": "AS15169" }, "latency_ms": 767, "result_preview": "ARIN — Google LLC, AS15169" }, { "tool": "whois_as", "args": { "asn": "AS13335" }, "latency_ms": 724, "result_preview": "ARIN — Cloudflare Inc, AS13335" }, { "tool": "whois_domain", "args": { "domain": "thisdoesnotexist999xyz123.com" }, "latency_ms": 283, "result_preview": "Verisign — No match, empty Domain Status and Name Server arrays" }, { "tool": "whois_domain", "args": { "domain": "bbc.co.uk" }, "latency_ms": 632, "result_preview": "Nominet UK — NS: ddns0/1.bbc.com, dns0/1.bbc.com, registered until expiry" } ], "total_calls": 12, "success_rate": "12/12 (100%)", "p50_ms": 500 }