mcpField
D
Domain Security

Domain Security

本地服务
github.com/OrtaMarco安全23 周前更新

关于 Domain Security

Domain Security 是面向 AI Agent 的域名与邮件安全审计 MCP 服务,可检查认证记录、DNS、TLS 和 WHOIS。它提供综合评分与优先修复建议,所有工具只读且无需 API 密钥。

主要功能

  1. 01汇总 SPF、DKIM、DMARC 与 MX 审计
  2. 02检查 DNS、TLS、证书及 WHOIS
  3. 03验证 MTA-STS、TLS-RPT、BIMI 与 DNSSEC
  4. 04分析邮件头与安全响应头
  5. 05提供评分和优先修复建议

适用场景

  1. 01评估域名的邮件仿冒防护情况
  2. 02排查网站 TLS 证书和安全响应头
  3. 03检查邮件投递相关 DNS 配置

MCP 相关

作为 MCP 服务,向 MCP 客户端提供只读域名、邮件和 Web 安全检查工具,并返回结构化结果及可读报告。支持 stdio 和无状态 Streamable HTTP。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ortamarco-domain-security": {
"command": "npx",
"args": [
"-y",
"domain-security-mcp-server"
]
}
}
}
启动命令npx -y domain-security-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmdomain-security-mcp-server1.2.3

工具

19

收录的工具列表 · 更新于 3 周前

参数类型必填说明
domainstring是要审计的域名,例如 'example.com'。
dkim_selectorsarray否要检查的可选 DKIM 选择器(例如 ['google','selector1'])。如果省略,将探测常见服务提供商的选择器列表。
response_formatenum否输出格式:'markdown' 表示易读摘要(默认),'json' 表示完整的结构化数据。markdown | json

详细介绍

domain-security-mcp-server

一个 MCP 服务,可让 AI agent 用通俗易懂的语言审计任意域名的电子邮件和域名安全性,涵盖 SPF、DKIM、DMARC、MTA-STS、TLS-RPT、BIMI、DNSSEC、DNS、TLS/SSL 和 WHOIS。无需 API 密钥。

ci npm MCP TypeScript License: MIT

基于 v2 MCP SDK 构建:服务支持 2026-07-28 协议修订版,也能通过同一个工厂继续接受旧版客户端(Claude Desktop、Claude Code、Cursor)连接——协议版本会按连接协商,双方都无需进行任何配置。

向 Claude 提问 “acme.com 是否能防范电子邮件欺骗?”,它就会执行完整的身份验证审计,并提供带评分的报告和按优先级排列的修复建议——无需再把域名分别粘贴到五个不同的网页工具中。

> Is ortamarco.me protected against email spoofing?

  email_auth_audit(domain="ortamarco.me")

  Grade: A (95/100) · MX: present
  ✅ SPF ends in '-all' (hard fail). 3/10 DNS lookups.
  ✅ DMARC policy is enforced ('p=reject').
  ✅ DKIM key found for selector: google.
  Top recommendation: add a TLS-RPT record for delivery-failure reports.

为什么开发这个项目

电子邮件安全生态中充斥着用途单一的网页检查工具(这里查 SPF、那里查 DMARC、别处查 WHOIS),而少数几个同类 MCP 工具也需要付费 API 令牌才能使用。这个服务将完整的邮件送达能力与域名安全工具集提供给任意 MCP 客户端,无需密钥;只需使用一个核心工作流工具,就能为你综合分析结果。

它是面向 Agent 的配套工具,与 ortamarco.me 上的网络工具共用经过实战验证的核心组件(公共解析器 DNS、主机验证、超时处理)。

工具

工具功能
email_auth_audit ⭐一次调用即可审计 SPF + DKIM + DMARC + MX → 0–100 分、A–F 等级及按优先级排列的修复建议
spf_check解析 SPF;递归统计 DNS 查询次数,并与 RFC 7208 规定的 10 次上限比较;标记 +all/?all
dmarc_check解析 DMARC 记录(返回所有标签),并标记缺失或无效的 p、p=none、缺少 rua 以及 pct 低于 100 的情况
dkim_check探测 <selector>._domainkey 密钥(提供选择器,或使用常见选择器)
mta_sts_check验证 _mta-sts TXT 以及 .well-known/mta-sts.txt 策略和模式
tls_rpt_check检查 _smtp._tls TLS-RPT 记录
bimi_check检查 default._bimi BIMI 记录
dnssec_check检查 DS/DNSKEY 是否存在,以及 DNSSEC AD 验证标志(通过 DoH)
dns_lookup通过公共解析器查询所有记录类型(A/AAAA/CNAME/MX/NS/TXT/SOA)
ssl_certificate查询 TLS 证书颁发者、有效期限、距过期的天数、SAN 和指纹
whois_lookup查询注册商、日期、名称服务器和状态(原始 43 端口 WHOIS,由 IANA 解析)
reverse_dns查询 IP 的 PTR 记录
ip_geolocation离线 IP 地理位置查询(DB-IP Lite)+ 反向 DNS
mx_lookup查询邮件服务器(MX)、优先级和解析出的 IP
caa_check查询哪些 CA 可以颁发 TLS 证书(CAA 记录)
blacklist_check检查 IP/域名是否被开放访问的电子邮件 DNSBL 列入黑名单
dns_propagation比较全球 5 个公共解析器上的记录
http_security_headers为网站的 HSTS、CSP、X-Content-Type-Options、X-Frame-Options、Referrer-Policy、Permissions-Policy 和 COOP 评定等级(HSTS 的 max-age=0 不计分)
analyze_email_headers解析原始邮件头 → SPF/DKIM/DMARC 判定结果,以及包含延迟信息的 Received 跳转链

每个工具都是只读的,都声明了 outputSchema,并返回 structuredContent(由 SDK 验证),同时提供人类可读的 Markdown(默认)或 JSON(response_format="json"),以及可执行的错误消息。

安装

需要 Node.js 20.18+。无需克隆仓库——每个 MCP 客户端都可以通过 npx 运行。

与 Claude Code 搭配使用

claude mcp add domain-security -- npx -y domain-security-mcp-server

与 Claude Desktop 或 Cursor 搭配使用

添加到 claude_desktop_config.json(或 ~/.cursor/mcp.json)中——参见 examples/:

{
  "mcpServers": {
    "domain-security": {
      "command": "npx",
      "args": ["-y", "domain-security-mcp-server"]
    }
  }
}

在 Windows 上使用 "command": "cmd" 和 "args": ["/c", "npx", "-y", "domain-security-mcp-server"]。 重启客户端,然后提问:“审核 stripe.com 的电子邮件安全性。”

自托管(HTTP 传输)

同一 MCP 服务支持无状态的 Streamable HTTP,可供远程或多个客户端使用。 一个端点即可服务于两个协议版本,并且不保存会话状态,因此不会发出或要求 Mcp-Session-Id 请求头。

TRANSPORT=http npx -y domain-security-mcp-server
# POST JSON-RPC to http://127.0.0.1:3000/mcp   ·   health at /healthz

默认情况下安全可靠:它绑定到 127.0.0.1,并且只接受 localhost Host 和 Origin 请求头,从而阻止来自网页的 DNS 重绑定攻击。 如需公开访问(例如通过 Coolify 或 Traefik),请显式启用:

变量默认值用途
TRANSPORTstdio设置为 http 以提供 Streamable HTTP
PORT3000监听端口
HOST127.0.0.1绑定地址;设为 0.0.0.0 以接受远程连接
ALLOWED_HOSTS—Host 请求头允许携带的主机名,多个以逗号分隔(例如 mcp.example.com)
ALLOWED_ORIGINS—允许从浏览器调用的来源,多个以逗号分隔
MCP_AUTH_TOKEN—如果已设置,每个请求都需要 Authorization: Bearer <token>

绑定到非环回地址但未设置 ALLOWED_HOSTS 或 MCP_AUTH_TOKEN 也可以运行,但 MCP 服务会在 stderr 中提示。使用 Docker 时(镜像会设置 HOST=0.0.0.0):

docker build -t domain-security-mcp .
docker run -p 3000:3000 -e ALLOWED_HOSTS=mcp.example.com -e MCP_AUTH_TOKEN=change-me domain-security-mcp

安全

这些工具会连接到调用方指定的主机,因此所有出站连接都会经过服务端请求伪造检查:

  • 拒绝私有、环回、链路本地(云元数据)、共享、多播和保留地址的所有写法,包括嵌入在 IPv6 中的 IPv4 地址([::ffff:169.254.169.254])。
  • 检查会在建立连接时针对套接字实际即将使用的地址执行,因此也会拒绝 DNS 重绑定和仅内部解析器知晓的名称。重定向会手动跟随,并对每一跳重新检查。
  • 响应正文、重定向、WHOIS 引荐以及所有网络调用均设有上限和超时限制。

发现问题?请提交私密安全公告。

开发

npm run dev      # tsx watch (stdio)
npm run inspect  # open the MCP Inspector against the built server
npm run build     # type-check + emit dist/
npm run typecheck # type-check only
npm test          # offline unit tests: SSRF guard, SPF/DMARC/DKIM scoring,
                  # header parsing, HTTP transport defaults
npm run smoke     # call all 19 tools on BOTH protocol eras and validate
                  # structuredContent against each tool's outputSchema

evals/ 包含一组 10 个问题的大模型评估集(稳定、可验证)及运行说明——参见 evals/README.md。

工作原理

src/
├── index.ts        # transport selection (stdio | http), v2 SDK entry points
├── server.ts       # factory: registers every tool on one McpServer
├── core/           # pure logic, no MCP coupling — reusable & testable
│   ├── validate.ts # input validation and the address classifier
│   ├── netguard.ts # connect-time SSRF guard, redirect-safe fetch, capped bodies
│   ├── dns.ts      # public-resolver DNS + DoH client
│   ├── net.ts      # MX, CAA, DNSBL and propagation checks
│   ├── tls.ts      # certificate inspection and trust
│   ├── whois.ts    # port-43 WHOIS with IANA/registrar referral
│   ├── http.ts     # security-header grading
│   ├── geoip.ts    # offline IP geolocation on DB-IP Lite (each file read on first use)
│   ├── email-headers.ts  # raw header parsing and hop timing
│   └── email-auth.ts  # SPF/DKIM/DMARC/MTA-STS/TLS-RPT/BIMI/DNSSEC + scoring
└── tools/          # thin MCP wrappers (Zod schemas, descriptions, formatting)

core/ 层刻意不依赖任何 MCP 类型,因此同一套逻辑既可用于此 MCP 服务,也可用于 ortamarco.me 上的网页工具。

致谢

由 DB-IP 提供的 IP 地理位置服务。ip_geolocation 使用免费的 DB-IP“IP to City Lite”数据库,该数据库采用 CC BY 4.0 许可,并作为 @ip-location-db/dbip-city-mmdb 软件包安装;工具说明和 Markdown 输出中也包含了相关致谢。该数据库不包含时区信息,因此会根据坐标使用 @photostructure/tz-lookup(CC0)估算 time_zone。

许可证

MIT © Marco Orta

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。