关于 Domain Security
Domain Security 是面向 AI Agent 的域名与邮件安全审计 MCP 服务,可检查认证记录、DNS、TLS 和 WHOIS。它提供综合评分与优先修复建议,所有工具只读且无需 API 密钥。
主要功能
- 01汇总 SPF、DKIM、DMARC 与 MX 审计
- 02检查 DNS、TLS、证书及 WHOIS
- 03验证 MTA-STS、TLS-RPT、BIMI 与 DNSSEC
- 04分析邮件头与安全响应头
- 05提供评分和优先修复建议
适用场景
- 01评估域名的邮件仿冒防护情况
- 02排查网站 TLS 证书和安全响应头
- 03检查邮件投递相关 DNS 配置
MCP 相关
作为 MCP 服务,向 MCP 客户端提供只读域名、邮件和 Web 安全检查工具,并返回结构化结果及可读报告。支持 stdio 和无状态 Streamable HTTP。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
19收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| domain | string | 是 | 要审计的域名,例如 'example.com'。 |
| dkim_selectors | array | 否 | 要检查的可选 DKIM 选择器(例如 ['google','selector1'])。如果省略,将探测常见服务提供商的选择器列表。 |
| response_format | enum | 否 | 输出格式:'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 密钥。
基于 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),请显式启用:
| 变量 | 默认值 | 用途 |
|---|---|---|
TRANSPORT | stdio | 设置为 http 以提供 Streamable HTTP |
PORT | 3000 | 监听端口 |
HOST | 127.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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。