Skip to main content
Glama
ShieldDNS MCP server

ShieldDNS MCP server

Official
by shielddns

ShieldDNS MCP server

Let AI agents check a link before opening it.

shielddns-mcp is a small, open-source Model Context Protocol server that gives AI assistants and agents (Claude, Cursor, any MCP client) safe DNS tools backed by ShieldDNS, a free European public resolver with malware / phishing / tracking protection, DNSSEC validation and a zero-log policy.

Italiano più sotto.

Tools

Tool

What it does

check_domain(domain_or_url)

Is this domain or link safe to open? Returns a verdict (blocked, dnssec_invalid, does_not_exist, resolves…), a 0-100 risk score with human-readable reasons and an advice field: ok_to_open, caution or do_not_open.

resolve(name, record_type)

Resolve a name through ShieldDNS (DNS-over-HTTPS): records, rcode, DNSSEC validation, whether ShieldDNS blocked it, Extended DNS Errors (RFC 8914). Types: A, AAAA, CNAME, MX, TXT, NS, SOA, CAA, HTTPS, SVCB, TLSA, DS, DNSKEY, PTR, SRV.

service_status()

Public status of the two ShieldDNS nodes (each node checks the other every 5 minutes).

The server also gives the agent short instructions: check unfamiliar domains before visiting them and follow the advice field.

What the risk score looks at (v0.1)

  • ShieldDNS blocklist: about 955,000 domains from 8 threat-intelligence, ads and tracking sources. ShieldDNS marks blocked answers with Extended DNS Error 15 "Blocked"; on nodes without EDE the server recognises the block from the answer itself (NXDOMAIN without SOA).

  • DNSSEC: validated, unsigned, or invalid signature (possible tampering, EDE 6-12).

  • Name-only signals, computed locally:

    • look-alikes of frequently impersonated brands (paypa1.com, arnazon.com, paypal-secure-login.com, paypal.com.verify-account.net);

    • mixed scripts and IDN tricks (аpple.com with a Cyrillic "а");

    • random-looking names typical of malware domain generation algorithms (DGA);

    • very long or heavily hyphenated names.

  • does_not_exist is reported separately: for an agent it often means a mistyped or hallucinated link.

Example:

{
  "domain": "paypal-secure-login.com",
  "verdict": "resolves",
  "risk_score": 40,
  "risk_level": "medium",
  "advice": "caution",
  "reasons": [
    {"code": "brand_with_lure_words", "weight": 40,
     "detail": "the name evokes the brand \"paypal\" but is not one of its official domains (paypal.com, paypal.me)"}
  ],
  "dnssec": "not validated (unsigned or unavailable)"
}

Related MCP server: CyberMCP

Privacy

  • The server runs on your machine. It sends only DNS queries, only to ShieldDNS, over HTTPS (secure2.shielddns.eu, fallback secure.shielddns.eu). service_status additionally downloads the public status files from shielddns.eu.

  • ShieldDNS does not log queries or client IP addresses.

  • No telemetry, no accounts, no API keys.

Install

Requires uv (brew install uv on macOS, or curl -LsSf https://astral.sh/uv/install.sh | sh).

From GitHub:

uvx --from git+https://github.com/shielddns/shielddns-mcp shielddns-mcp

From a local copy:

uvx --from /path/to/shielddns-mcp shielddns-mcp

The server speaks MCP over stdio: run it from an MCP client, not by hand.

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "shielddns": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/shielddns/shielddns-mcp", "shielddns-mcp"]
    }
  }
}

Claude Code

claude mcp add shielddns -- uvx --from git+https://github.com/shielddns/shielddns-mcp shielddns-mcp

Cursor and other clients

Use the same command / args as above in the client's MCP configuration.

Test without an MCP client

cd shielddns-mcp
uv run --with . python examples/smoke_test.py
uv run --with . python examples/smoke_test.py some-domain.example --json

Or with the MCP Inspector: npx @modelcontextprotocol/inspector uvx --from . shielddns-mcp

Configuration (optional)

Variable

Default

Meaning

SHIELDDNS_DOH

https://secure2.shielddns.eu/dns-query,https://secure.shielddns.eu/dns-query

DoH endpoints, tried in order

SHIELDDNS_TIMEOUT

6

seconds per query

Limits

  • The score is a decision aid, not a guarantee. A clean result does not mean a site is trustworthy; a caution result can be a false positive (e.g. a legitimate site that mentions a brand).

  • The brand list is small and curated (signals.py); contributions welcome.

  • Coming next: a server-side ShieldDNS risk API (domain age, threat source categories, more brands), used automatically by this server when available.

Development

uv run --with '.[test]' pytest

License: MIT.


Italiano

ShieldDNS MCP server permette agli assistenti e agli agenti AI di controllare un link prima di aprirlo, usando ShieldDNS, il resolver pubblico europeo gratuito con protezione da malware, phishing e tracciamento, validazione DNSSEC e politica zero-log.

  • check_domain: dice se un dominio o un URL è sicuro, con un verdetto, un punteggio di rischio da 0 a 100 con le motivazioni e un consiglio: ok_to_open, caution o do_not_open.

  • resolve: risolve un nome tramite ShieldDNS (DNS-over-HTTPS, DNSSEC, blocco delle minacce).

  • service_status: stato pubblico dei due nodi.

Il punteggio considera: la blocklist di ShieldDNS (circa 955.000 domini, segnalati con l'errore DNS esteso 15 "Blocked"), la validità della firma DNSSEC, le imitazioni di marchi noti, i nomi con alfabeti mescolati e i nomi generati a caso dal malware. "Il dominio non esiste" viene segnalato a parte: per un agente spesso significa un link sbagliato o inventato.

Privacy: il server gira sul tuo computer e invia solo query DNS a ShieldDNS, via HTTPS. ShieldDNS non registra le query né gli indirizzi IP. Nessuna telemetria, nessun account, nessuna chiave.

Installazione: vedi sopra (Claude Desktop, Claude Code, Cursor). Serve uv.

Available Tools

3 tools
check_domainCheck a domain or linkA
Read-onlyIdempotent

Check whether a domain or URL is safe to open, using the ShieldDNS protective resolver. Returns a verdict (blocked, dnssec_invalid, does_not_exist, resolves...), a 0-100 risk score with human-readable reasons (blocklist match, DNSSEC, look-alike of known brands, mixed scripts, random-looking names) and an advice field (ok_to_open, caution, do_not_open). Accepts a bare domain or a full URL.

Inputs: domain_or_url (required).

resolveResolve a DNS name through ShieldDNSA
Read-onlyIdempotent

Resolve a DNS name through ShieldDNS (DNS-over-HTTPS, DNSSEC validation, threat blocking). record_type is one of: A, AAAA, CNAME, MX, TXT, NS, SOA, CAA, HTTPS, SVCB, TLSA, DS, DNSKEY, PTR, SRV. Returns records, rcode, whether the answer was DNSSEC-validated, whether ShieldDNS blocked the name, and any Extended DNS Errors (RFC 8914).

Inputs: name (required), record_type.

service_statusShieldDNS service statusB
Read-onlyIdempotent

Public status of the two ShieldDNS nodes (each node checks the other every 5 minutes).

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 3 tools

    Disambiguation4/5

    check_domain and resolve are mostly distinct: one gives a safety verdict and advice, the other returns DNS records and resolution metadata. There is some overlap because resolve also reports threat blocking and DNSSEC status, so an agent may occasionally hesitate between them.

    Naming Consistency3/5

    The names mix conventions: check_domain is verb_noun, resolve is a bare verb, and service_status is noun_noun. They remain readable and understandable, but the set does not follow a predictable pattern.

    Tool Count4/5

    Three tools fit the server's focused scope of domain safety checking, DNS resolution, and node status. The surface is small but each tool has a clear role, though it sits at the lower bound of a comfortable set.

    Completeness4/5

    The core lifecycle is covered: safety verdicts, raw DNS resolution with DNSSEC and blocking info, and node status. Minor gaps exist, such as no bulk domain check or blocklist/configuration inspection, but the main workflows are supported.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Enables AI agents to check URL safety before fetching content, using Google Web Risk, URLhaus, PhishTank, and AI analysis to return SAFE/SUSPICIOUS/DANGEROUS verdicts.
      1
      69 npm
      1
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to perform cybersecurity analysis including RDAP lookup, DNS analysis, SSL inspection, security header detection, and more, returning structured security reports.
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides AI agents with zero-cost, zero-dependency trust evaluation for domains, URLs, wallets, APIs, and IPs, returning a 0-100 score with SSL, DNS, WHOIS, security header, and content sub-scores, plus batch comparison to rank multiple targets.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents and apps to check URLs, domains, IP addresses, phone numbers, emails, crypto wallets, IBANs, mobile apps, and payment handles for scam, phishing, and fraud risk, returning verdicts, probabilities, facts, and reason codes.
      MIT