Skip to content
DNS Doctor logo

DNS Doctor MCP server

Which servers in the official MCP registry are DNS Doctor's own, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-21

← Back to DNS Doctor

Whose server it is
  • Registry namedev.dnsdoctor/dns-doctorverified in the MCP registry

The registry name sits under dnsdoctor.dev. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-21
  • Stateanswerschecked 2026-10-21
  • Tools27
  • Server calls itselfdns-doctor
  • Server version1.14.0
  • Protocol version2025-06-18

On 2026-10-21 the server answered initialize and tools/list without a sign-in. First answer in 748 ms.

Should an agent connect itNot proven either way yet
  • Whether its tools do the product's job has not been judged yet.
  • Checked on 6 of the 7 days it takes to judge reliability.

Once connected

  • For "check a domain's SPF, DKIM and DMARC records", the likely first call is scan_domain.
  • add_monitored_domain change data without a sign-in: anyone with the address can call them.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 6, the first on 2026-10-21
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 6 so far
  • Use251 npm downloads a week2 GitHub stars
  • Answeredmeasuring6 of the 7 daily checks it takes to print a share
  • Median first answer635 ms
  • Space in an agent's context≈ 10,403 tokensthe definitions of all its tools (27), which an agent carries on every turn
  • Tool definitionsA · 100 of 100
  • Typed results27 of 27 toolsdeclared outputSchema: results come typed, read once
  • Every tool passes all six checks.

What an agent can do with it

  • can do · check a domain's SPF, DKIM and DMARC records
  • not sure · find the exact DNS record to paste
  • not sure · get alerts when mail DNS records change or break

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that change data, on a server that answers without a sign-in: add_monitored_domain

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (30%), doing the product's job (25%), definitions (20%), context (10%) and use (15%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers27 tools · read 2026-10-21
  • scan_domain

    Use this when the user asks to check, audit, diagnose or troubleshoot SPF, DKIM, DMARC, email authentication, email deliverability DNS, why their mail lands in spam, MX, DNS health, blacklist status, or domain/SSL expiry for a domain, or…

  • get_report

    Use this for the same questions as scan_domain when a recent report is enough (the cheap first look); use scan_domain when the state must be re-read now. Return the stored report for a domain, scanning once only if none exists yet — the…

  • build_dmarc_upgrade

    Use this when the user asks how to move DMARC on from p=none, whether it is safe to tighten DMARC, or what the next DMARC policy step is for a domain (a scan can justify quarantine at most; reject needs monitoring evidence) — and after…

  • start_monitoring_signup

    Use this when the user asks for ongoing DMARC monitoring, RUA report monitoring, new-sender monitoring, email-authentication alerts or ongoing DNS monitoring of a domain they own. Returns signup_url, a link to a dnsdoctor.dev page that…

  • count_spf_lookups

    Use this when the user asks about SPF 'too many lookups', the 10-lookup limit, an SPF PermError, or whether an SPF record is valid. Validate an SPF record and count what it costs. Returns `record_valid` (the record parses as RFC 7208…

  • validate_dmarc_record

    Use this when the user pastes a DMARC record and asks whether it is valid, correct or safe. Validate a pasted DMARC record: parsed tags, level'd findings, and whether it is valid. No DNS lookup — pass the record string itself…

  • generate_dmarc_record

    Use this when the user asks to create, generate or write a DMARC record for a domain that has none. Build a DMARC record from scratch for a domain that has none, using a validating engine — never compose one yourself. `policy` is…

  • check_dkim_selector

    Use this when the user asks whether DKIM is set up for a sending platform, whether a specific selector exists, or why DKIM fails. Check ONE specific DKIM selector on a domain — the exact selector the sending platform uses (e.g. `google`…

  • parse_dmarc_report

    Use this when the user uploads or pastes a DMARC aggregate (RUA) XML report and asks what it says. Parse ONE DMARC aggregate (RUA) report into readable per-source aggregates: who sent mail as the domain, how much, and what share was…

  • check_record

    Use this when the user asks whether a DNS change has landed, wants a DNS record looked up, or wants to verify a record they just published — or whenever answering needs the live value of a record. Reads the record from the domain's OWN…

  • check_reverse_dns

    Use this when the user asks about reverse DNS, PTR records, or FCrDNS for a mail server IP. Check one sending IP's forward-confirmed reverse DNS (FCrDNS): reads the IP's PTR record, then resolves that hostname back and reports whether it…

  • audit_spf_includes

    Use this when the user asks who can send email as their domain through SPF includes, or wants an SPF supply-chain or third-party sender audit. Audit a domain's SPF supply chain: walks every include and redirect it delegates to, and…

  • build_parked_domain_records

    Use this when the user asks how to protect a domain that sends no email from being spoofed. Build the three-record hardening pack that makes a NON-SENDING domain unusable for spoofing: a Null MX, a hard-fail SPF record, and a p=reject…

  • check_propagation

    Use this when the user asks whether a DNS change has propagated globally, or why a record shows in one place and not another. Check whether a DNS change has propagated GLOBALLY: six vantage points (five owner-run probes across four…

  • lookup_registration

    Use this when the user asks who owns a domain, when it expires, which registrar or nameservers it has, whether it is registered, or whether a transfer or delete lock is set — the WHOIS question. Read a domain's registration from the…

  • get_alerts

    Use this when a signed-in operator asks what changed on a monitored domain, or what the monitoring has flagged. Read the monitoring alert log for the domains the caller's account monitors, newest first. Requires an API token. Each row…

  • get_readiness

    Use this when a signed-in operator asks whether a monitored domain is ready for the next DMARC step. Read the DMARC enforcement-readiness verdict for ONE domain the caller's account monitors, computed from its aggregate (RUA) report…

  • list_my_domains

    Use this when a signed-in operator asks which domains their DNS Doctor account monitors, or what to do next on them. Lists every domain on the caller's account with its state — verified, pending (added, ownership not proven yet) or…

  • check_lookalikes

    Use this when the user asks about lookalike, look-alike, typosquat or impersonation domains of their domain, or whether someone has registered a name close to theirs. DNS-only: checks the closest variants of the name and returns facts…

  • get_lookalikes

    Use this when a signed-in operator asks which lookalike domains of a monitored domain the watch has found, how risky they are, or for one's takedown evidence. Requires an API token with monitoring:read. Returns the account's watched…

  • start_email_test

    Use this when the user wants to know how a real email from them actually authenticates — whether a message from Google Workspace, Microsoft 365, a newsletter tool or an app is SPF/DKIM/DMARC aligned, why it lands in spam, or to prove DKIM…

  • get_email_test

    Use this after start_email_test, once the user says they sent the email. Returns status pending | received | expired | error. pending means the message has not arrived (or is still being checked): ask the user to send it if they have not…

  • list_email_tests

    Use this when a signed-in user asks about email tests they ran before, or how a sender's earlier tests scored. Requires an API token with monitoring:read. Returns the account's own tests, newest first (optionally only those whose From…

  • check_bimi

    Use this when the user asks how to get their logo shown in Gmail, Yahoo, Apple Mail or other inboxes (BIMI), whether their BIMI setup works, or why their logo does not show. A live read of one host's BIMI setup: the DMARC gate (BIMI needs…

  • add_monitored_domain

    Add a domain to the signed-in user's DNS Doctor monitoring and return the ownership-check TXT record they must publish, plus where their DNS is hosted, a provider-specific guide link and, when their provider supports it, a one-click apply…

  • check_domain_verification

    Use this only for DNS Doctor's own ownership TXT challenge on a domain the user already added to their DNS Doctor account (add_monitored_domain). For a TXT record another service asked for (Google Workspace, Microsoft 365, Shopify or any…

  • get_domain_records

    Read the records a domain the user monitors still needs: the ownership check while it is unverified, and once verified the DMARC reporting record plus whether we have OBSERVED that record published. Read-only: it issues nothing — if a…

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "dns-doctor": {
      "type": "http",
      "url": "https://dnsdoctor.dev/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http dnsdoctor https://dnsdoctor.dev/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://dnsdoctor.dev/mcp as a custom connector in the settings.

Also shipped through: npm

OpenAPI spec

21 paths, read 2026-10-21. Open the spec ↗

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.