email-guard-mcp について
email-guard-mcpは、AIエージェントの受信メールと送信メールを検査するMCPサーバーです。パターンベースのインジェクション検知、送信者とドメインの確認に加え、秘密情報や個人データ、配信上の問題も調べます。
主な機能
- 01受信メールのインジェクションや乗っ取りパターンを検知
- 02送信者認証、ドメイン、リンクを確認
- 03送信メールの秘密情報と個人データをスキャン
- 04配信上の問題と無効な宛先を警告
- 05SPF、DMARC、MX、ドメイン状態を確認
活用シーン
- 01エージェントがメールを処理する前のリスク評価
- 02送信前の情報漏えいチェック
- 03ドメイン認証と宛先状態の確認
MCP 対応
MCPクライアントに `scan_inbound`、`scan_outbound`、`check_domain_auth` を提供します。エージェントはメールやドメインを渡し、処理や送信前に構造化された安全確認を受けられます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| body | string | いいえ | プレーンテキスト本文。 |
| from | string | いいえ | 送信者ヘッダー。例:"Jane Doe" <[email protected]>。 |
| html | string | いいえ | HTML 本文。 |
| string | いいえ | 生の RFC822 メール(ヘッダー + 本文)。Authentication-Results、Reply-To、Return-Path を含むのはこの形式のみです。 | |
| subject | string | いいえ | 件名。 |
詳細
email-guard-mcp
メールの安全性を確保する MCP サーバーです。エージェントが受信メールに基づいて動作する前と、送信メールを送る前にチェックします。決定論的で、LLM を使用せず、無料です。
エージェントがメールの読み取りと送信をできるようになると、受信トレイが攻撃対象になります。受信メッセージの本文に埋め込まれた指示でエージェントを乗っ取ろうとする場合があり、これは AI エージェントフィッシングと呼ばれ始めています。送信時には、エージェントが秘密情報を漏らしたり、送信元ドメインがスパムとして判定されるようなメールを送ったりする可能性があります。
インストール
{ "mcpServers": { "email-guard": { "command": "npx", "args": ["-y", "email-guard-mcp"] } } }
ツール
scan_inbound:メッセージに基づいて動作する前に実行します。既知のインジェクションや乗っ取りパターン(ゼロ幅文字、双方向テキスト、隠し HTML を使った手口を含む)を照合し、送信者ヘッダー(受信サーバーが報告する SPF、DKIM、DMARC の結果、reply-to と return-path の不一致、表示名と照合する 24 件のブランド名リスト)を比較し、DNS と RDAP で送信者のドメインを検索し(使い捨てドメイン、または過去 30 日以内に登録されたドメインかを確認)、リンクをスコアリングします。判定と固定形式のメタデータを返すため、エージェントは改ざんされている可能性のある生のテキストではなく、それらに基づいて動作します。scan_outbound:送信前に実行します。件名、本文、HTML に対して 22 種類の秘密情報パターン(AWS、GitHub、OpenAI、Anthropic、Google、Slack、Stripe、Twilio、npm、JWT、PEM 秘密鍵ブロック、Azure ストレージキーと SAS トークン、GCP サービスアカウントのキー ID、データベースと ODBC の接続文字列のパスワード、SendGrid、GitLab、Hugging Face、引用符で囲まれたapi_key/secret/password/tokenの代入)と、3 種類の個人識別情報(メールアドレス、米国の SSN、Luhn アルゴリズムで有効と判定されるカード番号)をスキャンし、秘匿化したコピーを返します。また、送信者のレピュテーションを損なう配信上の問題や、配信不能な宛先(使い捨てドメイン、または MX レコードがなく、確実にバウンスする宛先)にもフラグを立てます。check_domain_auth:ドメインまたはアドレスについて、SPF、DMARC、MX、ドメインの登録期間、使い捨てドメインかどうかを確認します。弱い設定か強制設定かを返します。
これらで対応できないこと
インジェクション検出は分類器ではなく、パターン照合です。ルールが作られていない言い回しは検出されません。
ブランドリストでは、表示名に対して部分文字列の照合を行います。"PayPal Security" <[email protected]> は、ドメインに「paypal」が含まれるため検出されません。リストにないブランドも検出されません。
情報漏えいスキャンが認識するのは 15 種類の形式だけで、それ以外は検出しません。DigitalOcean や SendGrid のキー、ベアラー・トークン単体、引用符で囲まれていない password=supersecret123 は、すべて問題なしとして通過します。メールアドレスのルールは逆方向に過剰検出します。本文にアドレスが 1 つでもあると、メッセージは要確認になります。そのため、要確認の結果を情報漏えいと見なす前に、leak.findings を確認してください。
scan_inbound の構造化出力は固定形式ですが、その中の情報はサニタイズされていません。subject、sender.display、sender.from、sender.replyTo、sender.domain、links[].url、links[].host、injection.findings[].match、sender.spoofFlags と reasons の注記文字列は、すべてメールからコピーされています。ここで生成されるのは、判定、スコア、ルール ID、アドバイス文字列のみです。それ以外は攻撃者のテキストのままです。データとして扱ってください。
データは、DNS(SPF、DMARC、MX)、ドメインの登録期間を調べる RDAP、使い捨てドメインリスト、インジェクションおよび秘密情報のルールセットから取得されます。
ルールの更新
このサーバーは約1日に1回、ルールフィードに新しいルールセットがあるか確認し、あれば適用します。リクエストには、問い合わせ元のサーフェス(ここでは facade)と、インストール済みのルールのバージョンの2つが含まれます。マシン ID、ユーザー ID、ファイル名、スキャンした内容などは送信されません。
バンドルは Ed25519 で署名され、このパッケージにコンパイルされた公開鍵を使って検証されるため、どのミラーから配信されたかは関係ありません。署名、スキーマ、または ReDoS チェックに失敗したバンドルは破棄され、既存のルールがそのまま維持されます。--offline を指定すると更新が無効になり、AGENT_GUARDS_NO_FEED=1 または ~/.agent-guards/config.json 内の {"feed": false} でも同様です。バンドル形式と手動での検証方法については、こちらをご覧ください:https://github.com/mlawsonking/MCP/blob/main/rules/README.md
メール認証について、率直に説明します。SPF、DKIM、DMARC の結果は、受信メールサーバーが書き込んだ Authentication-Results ヘッダーから読み取ります。このツールは DKIM 署名を検証せず、DKIM の DNS レコードも参照しません。セレクターはドメイン名だけでは特定できないためです。つまり、この値の信頼性はヘッダーを書き込んだ側に依存します。自分のサーバーが受信したメールの場合は有用な指標ですが、信頼できない送信元からの生の .eml ファイルでは、攻撃者が dkim=pass と書き込むだけで済みます。どのケースに該当するかを示す注記が、すべての応答に付いています。同じ入力には常に同じ出力が返されます。https://email-guard-api.vercel.app を呼び出します(変更する場合は EMAIL_GUARD_API を設定してください)。このリポジトリにある6つのエージェントガードのうちの1つです。MIT。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。