whoismd-mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@whoismd-mcp-serverrun a full threat lookup on suspicious-login.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
whoismd-mcp-server
Open-source native MCP (Model Context Protocol) server driver for WhoisMD real-time internet intelligence routing.
This server is an unprivileged client driver: it contains no engine code,
no database access, and no proprietary historical data. Every tool call is
delegated to the public WhoisMD REST API (/v1/intel/lookup) and is metered
against your own pg_live_... API key credits.
Tools
Tool | Description |
| Full domain intelligence lookup — WHOIS/RDAP, DNS (A/AAAA/MX/NS/TXT), IP resolution, deterministic 0–100 threat risk score. |
| Batch lookup of up to 100 domains with bounded concurrency (5). |
Each lookup returns riskScore, riskLevel, aiCleanSummary, creditsSpent,
creditsRemaining, and the full data report. Calls are credit-metered by the
API key holder.
Related MCP server: brandomica-mcp-server
Requirements
Node.js >= 20 (native
fetchrequired)A WhoisMD API key (
pg_live_...) — generate one from the WhoisMD dashboard after signup. Keys are scoped to thelive_lookuptier and rate-limited to 20 requests/minute.
Running
Build & run directly
npm install
npm run build
WHOISMD_API_KEY=pg_live_... node dist/index.jsThe server speaks MCP over stdio (JSON-RPC), so it must be launched by an MCP-capable client — not invoked interactively.
Development
npm run dev # tsx watch, no build step
npm run typecheck # tsc --noEmitEnvironment variables
Variable | Default | Required | Description |
| — | yes | Your |
|
| no | Overrides the API base URL (for testing). |
Client configuration
Cursor
.cursor/mcp.json in your project (or the global Cursor MCP config):
{
"mcpServers": {
"whoismd": {
"command": "npx",
"args": ["-y", "whoismd-mcp-server"],
"env": {
"WHOISMD_API_KEY": "pg_live_xxxxxxxxxxxxxxxxxxxx"
}
}
}
}To point at a local checkout instead:
{
"mcpServers": {
"whoismd": {
"command": "node",
"args": ["/absolute/path/to/whoismd-mcp-server/dist/index.js"],
"env": {
"WHOISMD_API_KEY": "pg_live_xxxxxxxxxxxxxxxxxxxx"
}
}
}
}Windsurf
Windsurf uses the same MCP JSON shape. Add it via
~/.codeium/windsurf/mcp_config.json, or through Settings → MCP → Add:
{
"mcpServers": {
"whoismd": {
"command": "npx",
"args": ["-y", "whoismd-mcp-server"],
"env": {
"WHOISMD_API_KEY": "pg_live_xxxxxxxxxxxxxxxxxxxx"
}
}
}
}Claude Desktop
claude_desktop_config.json:
{
"mcpServers": {
"whoismd": {
"command": "npx",
"args": ["-y", "whoismd-mcp-server"],
"env": {
"WHOISMD_API_KEY": "pg_live_xxxxxxxxxxxxxxxxxxxx"
}
}
}
}Generic clients
npx -y whoismd-mcp-server
# or
node /absolute/path/to/whoismd-mcp-server/dist/index.jsThe API key can also be exported in the environment of the client process instead
of the config env block — how you inject it is up to your client's security
model. Prefer config-injected env, never shell history or commit.
Security
The API key is consumed from the environment / client config only; it is never embedded, logged, or written to disk by this server.
All traffic goes to the public WhoisMD endpoint over HTTPS.
This driver is deliberately read-only and unprivileged: no private database, no reverse footprint history, no admin surface.
License
MIT
Available Tools
2 toolswhoismd_bulkA
Run batch domain intelligence lookups for up to 100 distinct domains via the public WhoisMD API. Each entry is analyzed concurrently with bounded parallelism. Returns per-domain success/failure results with risk scores.
| Name | Required | Description | Default |
|---|---|---|---|
| domains | Yes | Array of domain names to analyze in batch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses concurrent analysis with bounded parallelism and per-domain success/failure results, but omits auth requirements, rate limits, error handling, and whether failed domains can be retried independently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose, then execution behavior, then return shape. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter batch lookup with no output schema, the description covers the core operation, concurrency model, and return format including risk scores. It is nearly complete, though it could clarify risk-score semantics and any public API limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already defines the domains array. The description still adds semantic value by specifying 'distinct' domains and reinforcing the 100-item cap, which the schema's maxItems states but the schema description does not call out as a uniqueness requirement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: batch domain intelligence lookups, scoped to up to 100 distinct domains via the public WhoisMD API. The word 'batch' and the limit clearly distinguish it from the single-domain sibling whoismd_lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The batch context and 100-domain limit imply this tool is for multiple domains rather than single lookups, but it never explicitly says when to prefer it over whoismd_lookup or when not to use it. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoismd_lookupA
Perform a full domain intelligence lookup against the public WhoisMD API: WHOIS/RDAP registration data, DNS records (A, AAAA, MX, NS, TXT), SSRF-safe IP resolution, and a deterministic 0-100 threat risk score. Returns a comprehensive JSON report.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The domain name to analyze (e.g. 'example.com') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does add useful traits: it identifies the API as public (implying no auth), notes SSRF-safe IP resolution, and states the risk score is deterministic (0-100). However, it says nothing about rate limits, error behavior, or cost, which are relevant for an external API call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences that front-load the core purpose and then enumerate the return payload. Dense but no filler; the enumeration of DNS record types is arguably more detail than an agent needs to select the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup tool with no output schema, the description adequately conveys what data comes back (registration, DNS, IP, risk score) and that the response is JSON. It omits the response shape, but given the tool's simplicity and that no output schema exists to defer to, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists and schema description coverage is 100%, so the schema already documents it fully (including the example and length bounds). The description adds no parameter-specific syntax beyond what is structured. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Perform a full domain intelligence lookup") and enumerates the exact data categories returned (WHOIS/RDAP, DNS records, IP resolution, risk score). It does not explicitly contrast itself with the sibling whoismd_bulk, though the singular "lookup" vs "bulk" naming implies the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope is implied to be single-domain analysis via the required domain parameter, and the sibling name (whoismd_bulk) hints at the batch alternative, but the description never states when to use this tool versus the bulk variant or any preconditions. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.0.0- First observed
whoismd_bulk - First observed
whoismd_lookup
TDQS
Scored across 2 tools
The two tools are clearly distinct: one handles a single domain lookup, the other handles batch processing of many domains. There is no ambiguity in their purposes.
Both tools follow a consistent verb_noun pattern using snake_case with the same whoismd_ prefix: whoismd_lookup and whoismd_bulk. The naming is predictable and uniform.
With only two tools, the server is quite thin for a domain intelligence service. While each tool is useful, the absence of operations like historical data, reverse WHOIS, or alerting makes the count feel borderline minimal.
The server covers basic single and bulk lookups, but lacks other common domain intelligence operations such as historical WHOIS, reverse IP lookups, or real-time monitoring. These gaps may limit its usefulness for advanced workflows.
Maintenance
Related MCP Connectors
Enrich, search, assess, and manage threat intelligence through 80+ typed MCP tools.
Normalized JSON for any domain across 1,200+ TLDs, reading WHOIS where no RDAP server exists.
Remote MCP server: 19 domain-hygiene and email-auth tools (DNS, SPF, DMARC, DKIM, TLS).
VirusTotal MCP — file / URL / domain / IP reputation (BYO key)
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for DNS lookups, reverse DNS, WHOIS, and domain checks. Zero auth, zero config.532 npm3MIT
- AlicenseAqualityNot gradedmaintenanceStdio-based MCP server with 12 tools for brand name availability and safety checks. Returns structured JSON for domains (with pricing), social handles, USPTO/EUIPO trademarks, app stores, package registries, safety scoring, batch comparison, and filing readiness.1218 npm-
- AlicenseAqualityCmaintenanceMCP server providing DNS resolution, reverse DNS, RDAP-based WHOIS, and IP geolocation lookups. No API keys required , and all upstreams are public.4MIT
- FlicenseNot gradedqualityDmaintenanceEnables domain intelligence lookups including RDAP registration data, DNS records, and Certificate Transparency searches.1-