Domain Security について
Domain Security は、AI エージェント向けにドメインとメールのセキュリティを監査する MCP サーバーです。認証レコード、DNS、TLS、WHOIS を調べ、スコアと優先修正項目を提示します。すべて読み取り専用で、API キーは不要です。
主な機能
- 01SPF、DKIM、DMARC、MX の一括監査
- 02DNS、TLS、証明書、WHOIS の確認
- 03MTA-STS、TLS-RPT、BIMI、DNSSEC の検証
- 04メールヘッダーとセキュリティヘッダーの分析
- 05スコアと優先修正項目の提示
活用シーン
- 01メールなりすまし対策の評価
- 02Web サイトの TLS 証明書とセキュリティヘッダーの調査
- 03メール配信に関わる DNS 設定の確認
MCP 対応
MCP サーバーとして、ドメイン、メール、Web の読み取り専用セキュリティチェックを MCP クライアントに提供し、構造化データとレポートを返します。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 サーバー(MCP)です。AI エージェントが、あらゆるドメインの メールとドメインのセキュリティ(SPF、DKIM、DMARC、MTA-STS、TLS-RPT、BIMI、DNSSEC、DNS、TLS/SSL、WHOIS)を平易な言葉で監査できます。API キーは不要です。
v2 MCP SDK を基盤としており、サーバーは 2026-07-28 プロトコルリビジョンに対応し、同じファクトリーから2025年当時のクライアント(Claude Desktop、Claude Code、Cursor)も引き続き受け入れます。接続ごとに世代がネゴシエートされるため、どちらの側でも設定は不要です。
Claude に 「acme.com はメールのなりすましから保護されていますか?」 と尋ねると、完全な認証監査を実行し、優先度順の修正項目を含む評価レポートを返します。ドメインを5つの異なるウェブツールに貼り付ける必要はありません。
> 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トークンが必要なものばかりです。このサーバーは、ドメイン全体の メール配信とドメインセキュリティのツールキットを、APIキー不要であらゆるMCPクライアントに提供します。要点をまとめるワークフローツールを1つ備え、結果の統合も行います。
ortamarco.me のネットワークツールを補完するエージェント向けのツールで、実績のある共通コア(パブリックリゾルバーDNS、ホスト検証、タイムアウト)を共有しています。
ツール
| ツール | 機能 |
|---|---|
email_auth_audit ⭐ | 1回の呼び出しでSPF、DKIM、DMARC、MXを監査 → 0~100のスコア、A~Fの評価、優先度順の修正項目 |
spf_check | SPFを解析し、DNSルックアップを再帰的に数えてRFC 7208の上限10回と比較し、+all/?allを警告 |
dmarc_check | DMARCレコードを解析(すべてのタグを返却)し、pの欠落または無効、p=none、ruaの欠落、100未満のpctを警告 |
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 | 優先度と解決済みIPを含むメールサーバー(MX)を取得 |
caa_check | TLS証明書を発行できる認証局を確認(CAAレコード) |
blacklist_check | オープンアクセスのメールDNSBLに対してIP/ドメインを確認 |
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を宣言し、人間が読みやすいMarkdown(既定)またはJSON(response_format="json")とともに、structuredContent(SDKで検証済み)を返します。また、実行可能なエラーメッセージも提供します。
インストール
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 トランスポート)
同じサーバーは、リモートまたは複数クライアントでの利用に対応するステートレスな Streamable HTTP も提供します。
1 つのエンドポイントで両方のプロトコル世代に対応し、セッション状態がないため、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 ヘッダーのみを受け付けるため、Web ページからの DNS リバインディング攻撃をブロックします。
たとえば Coolify や Traefik の背後で公開するには、明示的にオプトインしてください。
| 変数 | デフォルト | 目的 |
|---|---|---|
TRANSPORT | stdio | Streamable HTTP を提供するには 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 も設定せずにループバック以外のアドレスにバインドしても動作しますが、その旨がサーバーから 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
セキュリティ
ツールは 呼び出し元 が指定したホストに接続するため、すべての送信接続でサーバーサイドリクエストフォージェリを防止するチェックを行います。
- プライベート、ループバック、リンクローカル(クラウドメタデータ)、共有、マルチキャスト、および予約済みのアドレスは、IPv4 を埋め込んだ IPv6(
[::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 問の LLM 評価セット(安定して検証可能)と実行手順があります。詳しくは 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 の型に依存しないため、同じロジックでこのサーバーと ortamarco.me の Web ツールの両方を動かしています。
クレジット
DB-IP による IP ジオロケーション。ip_geolocation は、CC BY 4.0 ライセンスの無料データベース DB-IP「IP to City Lite」を使用しており、@ip-location-db/dbip-city-mmdb パッケージとしてインストールされます。このクレジットは、ツールの説明と Markdown 出力にも記載されています。
データベースにはタイムゾーン情報がないため、座標から @photostructure/tz-lookup(CC0)を使って time_zone を推定します。
ライセンス
MIT © Marco Orta
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。