mcpField
P
Proton Safe MCP

Proton Safe MCP

ローカル
fbossiere.github.ioコミュニケーション6今日更新

Proton Safe MCP について

Proton Safe MCPは、公式のProton Mail Bridge経由でメールを読み、確認済みの下書きを作成するローカルサーバーです。送信、削除、移動の機能を設けず、書き込み操作を制限しています。

主な機能

  1. 01メールの検索と閲覧
  2. 02長さを制限した添付テキスト抽出
  3. 03検証済み添付ファイルの一時登録
  4. 04明示確認後の下書き作成
  5. 05送信・削除・移動ツールなし

活用シーン

  1. 01既読にせずメールを検索
  2. 02PDF、TXT、CSV添付のテキストを確認
  3. 03手動確認と送信用の下書きを準備

MCP 対応

ローカルSTDIO経由で、メールの読み取り、添付ファイル処理、確認済み下書き作成のツールをMCPクライアントに公開します。下書きはProton Mailで手動確認・送信する必要があり、送信ツールはありません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"fbossiere-proton-safe": {
"command": "uvx",
"args": [
"proton-safe-mcp"
],
"env": {
"PROTON_BRIDGE_USER": "<PROTON_BRIDGE_USER>",
"PROTON_IMAP_PORT": "<PROTON_IMAP_PORT>"
}
}
}
}
起動コマンドuvx proton-safe-mcp
設定が必要な環境変数
PROTON_BRIDGE_USERProton address configured in Proton Mail Bridge
PROTON_IMAP_PORTLocal IMAP port shown by Proton Mail Bridge

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiproton-safe-mcp2.3.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Proton Safe MCP

ウェブサイトとダウンロード · フランス語

CI ドキュメント mcpservers.org に掲載 Python 3.11–3.14 ライセンス:MIT mypy でチェック済み Ruff

Proton Safe MCP — 人間の承認が必要な、下書き専用のメールツール

公式の Proton Mail Bridge を通じて Proton Mail を利用する、クライアントに依存しない FastMCP サーバーです。メールの読み取りや検索、添付ファイル付きの下書きの作成ができます。意図的にメールを送信することはできません。Proton Mail で各下書きを確認し、自分で送信ボタンを押します。

サーバーは STDIO 経由でローカル実行され、MCP 対応クライアント(Claude Desktop、Claude Code、その他 MCP を使用するあらゆるクライアント)で利用できます。受信した PDF、TXT、CSV の添付ファイルは、サイズ上限付きのテキスト抽出で内容を確認でき、生のバイトデータを公開しません。送信する添付ファイルは、サイズ上限付きの base64 チャンクとしてアップロードされるため、サーバーがクライアントのファイルシステムパスを受け取ったり読み取ったりすることはありません。

セットアップ、設定、ツールの入力項目、セキュリティ上の境界、トラブルシューティングについては、ドキュメント全文をご覧ください。

なぜ「安全」なのか?

メールは攻撃者が制御できる入力です。どの送信者もメッセージ本文に敵対的な指示を含めることができます。メールを読み取ると同時に書き込み可能なツールを持つ AI エージェントは、プロンプトインジェクションによって、頼んでいない操作を実行してしまう可能性があります。このプロジェクトは、設計上、被害の範囲を制限しています。

  • 送信不可。 コードベースには SMTP クライアントも send_message ツールもありません。これを検証するテストもあります。
  • 削除も移動も不可。 受信した添付ファイルを生のままダウンロードするツールもありません。
  • 人間が介在。 下書きの作成には、会話内で内容を明示的に確認する必要があります。さらに Proton Mail でも、手動で確認して送信する必要があります。
  • クライアントのファイルシステムにはアクセス不可。 添付ファイルのバイトデータは、宣言されたサイズと SHA-256 の検証を伴ってチャンク単位でストリーミングされます。パスは拒否されます。
  • ループバック接続のみ。 トランスポートは STDIO で、リッスンソケットはなく、Bridge のホストは 127.0.0.1 にハードコードされています。

これらの制御によってリスクは軽減されますが、メールが信頼できるものになるわけではありません。無人のエージェントワークフローで、無関係な書き込み可能ツールを併用しないでください。

アーキテクチャ

STDIO 経由で proton-safe-mcp に接続した MCP クライアントが、ループバック限定の IMAP を使って Proton Mail に確認済みの下書きを作成し、ユーザーが各下書きを確認して送信ボタンを押す様子を示したアーキテクチャ図

セキュリティ特性

  • STDIO のみ:サーバーはリッスン用ネットワークソケットを開きません。
  • Proton Bridge のホストは 127.0.0.1 にハードコードされています(PROTON_BRIDGE_HOST は意図的にサポートしていません)。
  • SMTP クライアント、送信ツール、削除ツール、移動ツール、生の受信添付ファイルをダウンロードするツールはありません。
  • メッセージと添付ファイルの読み取りには BODY.PEEK を使用します。添付ファイルの検査では、サイズを制限した抽出テキスト、メタデータ、SHA-256 ダイジェストを返し、生のバイト列やファイルは返しません。
  • 添付ファイルの入力は、宣言されたサイズと SHA-256 検証を伴う分割 base64 形式です。
  • アップロードできる添付ファイルは、PDF、DOCX、XLSX、PPTX、TXT、CSV、PNG、JPEG のみです。
  • 添付ファイルトークンはランダムで、有効期間が短く、1回限り使用でき、下書き作成前に再検証されます。
  • 下書きの作成には、ユーザーが会話内で宛先、件名、本文、添付ファイルを正確に確認したことをクライアントが明示的に表明する必要があります。
  • Bridge が生成した IMAP パスワードは、オペレーティングシステムのキーリングに保存されます。
  • 下書き本文はプレーンテキストと、サーバーが生成する HTML 形式の代替本文として保存されます。HTML 形式では確認済みの本文を HTML エスケープするため、引用されたマークアップがレンダリングされることはありません。返信の引用を含め、サーバー側で本文に追記されることは一切ありません。
  • Proton Bridge は、保存した下書きで返信のスレッド情報を保持しません。返信先が指定された場合は、ユーザーが別の下書きになる可能性を明示的に了承しない限り拒否します。返信が了承された場合、ヘッダーのみを送信します。宛先が返信元のメッセージから導出されることはありません。IMAP 書き込み時にそのメッセージの Message-ID を再検証し、どちらの識別子も自身のヘッダーに引き継がれないよう、両方を検証します。
  • 宛先、件名、フォルダーの入力は、ヘッダーや条件へのインジェクションを防ぐために検証されます。
  • 状態ファイルはアカウントごとに分離されます。Linux では、ディレクトリに 0700、ファイルに 0600 の権限を設定し、O_NOFOLLOW を使用します。Windows では、所有ユーザーとシステムアカウントのみを許可する保護された DACL を設定し、O_NOFOLLOW の代わりに再解析ポイントを拒否します。

要件

  • 公式の Proton Mail Bridge をインストールし、サインインして実行している Linux(Ubuntu で開発・テスト済み)。
  • Bridge をサポートする Proton プラン。
  • コマンドラインインストールには Python 3.11–3.14(CI でテスト済み)が必要です。デスクトップインストーラーには同梱されています。
  • コマンドラインインストールには uv が必要です。
  • 利用可能な Secret Service キーリング(gnome-keyring または互換製品)。

このリポジトリでは Windows 11 x64 のサポートを実装していますが、リリースされていません。自動チェックは Windows Server で実行していますが、Windows 11 でのエンドツーエンドの受け入れテストは未実施です。Windows インストーラーの注意事項と受け入れテストシートをご覧ください。

インストール

デスクトップアシスタント — Ubuntu 24.04、x86_64

インストーラーをダウンロードし、Ubuntu のパッケージインストーラーで開いてから、Proton Safe を起動します。アシスタントが、互換性のあるローカル版 ChatGPT デスクトップまたは Codex のインストール環境で、Bridge への接続とプラグインの有効化を案内します。Python と uv が含まれているため、ターミナルでのセットアップは不要です。

Proton Mail Bridge、互換性のある Proton プラン、セッションキーリングは引き続き必要です。前提条件、スクリーンショット、修復方法については、デスクトップガイドをご覧ください。チェックサムとビルドの来歴情報はリリースにあります。

デスクトップアシスタント — Windows 11、x64

まだ利用できません。インストーラー、Windows プラットフォームレイヤー、ビルドパイプラインは用意されていますが、Windows で受け入れテストのシナリオは実行されておらず、ダウンロードもできません。外部依存関係として、フルパスが認定された Windows AI クライアントと、CI から使用できる署名 ID の2点が未解決です。

コマンドラインによるインストール — その他の MCP クライアント

uv を使って、レビュー済みのリリースを PyPI からインストールします。

uv tool install proton-safe-mcp==2.3.1

代わりに、ソースから開発する場合:

git clone https://github.com/fbossiere/proton-safe-mcp.git
cd proton-safe-mcp
uv sync --extra dev

MCP プロセスの環境変数に Proton のアドレスと Bridge の IMAP ポートを設定します。ここで認証情報を設定することはありません。

export PROTON_BRIDGE_USER="[email protected]"
export PROTON_IMAP_PORT="1143"

同じアカウントの別の Proton アドレスとして下書きを作成するには、同じ環境変数に、カンマ区切りのアドレスのみで省略可能な送信者許可リストを追加します。

export PROTON_BRIDGE_ALIASES="[email protected],[email protected]"

Proton アカウントのパスワードではなく、Bridge が生成した IMAP パスワード(Bridge の UI に表示されます)を保存します。

proton-safe-mcp setup

Bridge に表示される値はインストールごとに異なり、ローカルの Bridge に対してのみ使用できます。

MCP クライアントに登録する

以下の論理フィールドを使って、ローカルの STDIO サーバーを設定します。クライアントがシェルの PATH を引き継がない場合は、command -v proton-safe-mcp を使ってコマンドの絶対パスを取得します。

{
  "name": "proton-safe",
  "transport": "stdio",
  "command": "/absolute/path/to/proton-safe-mcp",
  "args": ["serve"],
  "env": {
    "PROTON_BRIDGE_USER": "[email protected]",
    "PROTON_IMAP_PORT": "1143"
  }
}

下書きで複数の From アドレスを使用する場合は、PROTON_BRIDGE_ALIASES を同じ env ブロックに設定します。送信者アドレスを参照してください。

クライアントの設定に PROTON_BRIDGE_PASSWORD を記載しないでください。サーバーは setup によって設定された OS のキーリングからこの値を読み取ります。

Claude Code、Cursor、VS Code 向けのコピー&ペースト手順を利用できます。 AI コーディングエージェントは、安全性を重視した llms-install.md ガイドに従ってください。

認証情報、アドレス、メールボックスのデータを表示せずに、ローカル環境全体を検証します。

proton-safe-mcp doctor

OpenAI プラグイン

このリポジトリには、ChatGPT と Codex 向けの非公開でローカル優先の Proton Safe プラグインが含まれています。同じ制限付き MCP サーバーを使った、安全性重視のメール確認と下書き作成のワークフローをパッケージ化しています。

  • ChatGPT デスクトップ版と Codex は、トンネルや専用サーバーを使わず、Bridge が動作するマシン上で、同梱の STDIO 設定を直接起動できます。
  • パッケージ化されたワークフロースキルが不要な場合は、直接 MCP に登録する方法も引き続き利用できます。
  • ChatGPT ウェブ版や別のマシン上のクライアントからは、受信用ポートを開放せずに OpenAI Secure MCP Tunnel 経由で Bridge ホストに接続することもできます。
  • リモート環境にデプロイする場合も、proton-safe-mcp と Proton Mail Bridge は同じ環境に配置し、IMAP は 127.0.0.1 に固定します。

ローカルの ChatGPT デスクトップ版/Codex へのインストール、直接 MCP への登録、オプションのリモートトンネルについては、OpenAI プラグインガイドを参照してください。

プラグインをインストールしたのに Proton ツールが表示されない場合 同梱の MCP 設定は、Codex の起動元の環境から PROTON_BRIDGE_USER と PROTON_IMAP_PORT を引き継ぎますが、値そのものは定義しません。Ubuntu では、~/.config/environment.d/*.conf に正しいファイルを配置していても、ユーザーマネージャーの再読み込みが必要な場合があります。また、GNOME やすでに起動しているターミナルには、以前の環境が残っていることがあります。メニューから再起動してもツールが表示されない場合は、ファイルを読み込んだ状態のターミナルから ChatGPT を一度起動してください。ターミナルからの起動は診断のためであり、毎回必要な操作ではありません。トラブルシューティングガイドには、ユーザーごとに設定できる永続的なメニューランチャーの手順も記載されています。何かを再インストールする前に、プライバシーに配慮したUbuntu の復旧手順またはよくある質問を確認してください。

オンボーディングのテストにご協力ください。 Linux と Proton Mail Bridge のユーザーは、10 分間の外部テストを実施し、プライバシーに配慮したインストールに関するフィードバックを送信できます。

利用可能な MCP ツール

カテゴリツール備考
読み取り専用メールmailbox_statusBridge の接続状態と INBOX の件数
list_folders
list_sender_addresses下書きで使用できる固定の From 許可リスト
list_messagesメッセージを既読にしません
search_messagesインジェクション対策済みの IMAP TEXT 検索
read_message範囲を制限したプレーンテキスト。添付ファイルのバイトデータは含みません
extract_attachment_text範囲を制限した PDF/TXT/CSV のテキスト。生のバイトデータやファイルは含みません
get_reply_context返信先の候補、Re: 件名、範囲を制限した引用文を返します。すべて提案です
添付ファイルのステージングbegin_attachment_uploadファイル名、種類、サイズ、SHA-256 を宣言します
upload_attachment_chunk順序どおりの base64 チャンク
finish_attachment_uploadハッシュを検証し、1 回限りのトークンを返します
discard_attachment
下書きcreate_confirmed_draft正確な確認が必要です。返信先を指定する場合は、別個の下書きになる可能性があることへの同意も必要です

意図的に send_message ツールは用意していません。

添付ファイルと下書きのワークフロー

MCP クライアントに必要なのは、ファイルのバイトデータを取得してツールを呼び出す機能だけです。特定のクライアント、サービス、ローカルディレクトリには依存しません。

  1. ファイルの正確なバイト長と SHA-256 を計算します。
  2. begin_attachment_upload(filename, content_type, size_bytes, sha256_hex) を呼び出します。
  3. 連続するバイナリチャンクを、返された max_chunk_bytes 以下のサイズで Base64 エンコードします。
  4. インデックスを 0, 1, 2… の順に指定して、upload_attachment_chunk(upload_id, chunk_index, data_base64) を呼び出します。
  5. finish_attachment_upload(upload_id) を呼び出し、返された attachment_token を保持します。
  6. 宛先、件名、本文全体、添付ファイルの一覧をユーザーに提示します。
  7. 会話内で明示的な確認を受けた後、 create_confirmed_draft(..., user_confirmed=true, attachment_tokens=[token]) を呼び出します。
  8. Proton Mail を開き、下書きを確認して、手動で送信します。

ステップ 8 が人間による確認の関門であり、重要なのはこの手順だけです。サーバーには SMTP の実装がないため、作成された下書きがアカウントの外に送信されることはありません。Proton Mail で「送信」を押す必要があります。アップロードされた添付ファイルは、下書きに使用されない場合、30 分後に期限切れになります。

ローカル管理

proton-safe-mcp doctor   # check the local setup without printing private data
proton-safe-mcp setup    # store the Bridge-generated IMAP password in the OS keyring
proton-safe-mcp serve    # run the MCP server over STDIO

設定リファレンス

変数デフォルト用途
PROTON_BRIDGE_USER必須Bridge で設定された Proton アドレス
PROTON_BRIDGE_ALIASES空下書きで使用できる追加の From アドレス。カンマ区切りです
PROTON_IMAP_PORT1143ローカル Bridge IMAP ポート
PROTON_MCP_STATE_DIR~/.local/state/proton-safe-mcp添付ファイルのステージング状態を保存するプライベートディレクトリ
PROTON_MCP_MAX_ATTACHMENT_BYTES20971520ファイルごとおよび下書きごとの最大サイズ。上限は 25 MiB です
PROTON_MCP_MAX_RECEIVED_ATTACHMENT_BYTES10485760受信ファイルの抽出における最大サイズ。上限は 25 MiB です
PROTON_MCP_MAX_CHUNK_BYTES393216デコード後のチャンクの最大サイズ。上限は 1 MiB です
PROTON_MCP_UPLOAD_TTL_SECONDS1800添付ファイルのステージング期間
PROTON_MCP_MAX_BODY_CHARS100000送信する下書き本文の最大文字数

PROTON_BRIDGE_HOST は意図的にサポートしていません。

Secret Service のキーリングがない隔離コンテナでは、Bridge が生成した IMAP パスワードを PROTON_BRIDGE_PASSWORD に設定できます。デスクトップ MCP クライアントの設定では、この代替手段を避けてください。環境変数の値がクライアントのプロセスや診断情報から見える可能性があります。

開発

uv sync --extra dev
uv run pytest --cov      # tests with coverage
uv run ruff check .      # lint
uv run ruff format .     # format
uv run mypy              # strict type checking

開発に Proton Bridge は必要ありません。テストスイートでは IMAP レイヤーをモックしています。テストでは、パスの拒否、MIME 制限、受信添付ファイルのサイズと形式の拒否、範囲を制限した PDF/テキストの抽出、順序どおりのチャンク、サイズとハッシュの検証、トークンの消費、ヘッダーインジェクション、下書きの確認、宛先と添付ファイルの数の制限、HTML からテキストへのサニタイズを検証します。

レビューで適用される設計ルールについては、CONTRIBUTING.md を参照してください。

脅威モデルの限界

自律型ワークフローでこのサーバーに依存する前に、以下をお読みください。

  • モデルは、読み取るメールや作成またはアップロードする添付ファイルを必ず認識します。
  • 抽出された添付ファイルのテキストは攻撃者が制御できるため、プロンプトインジェクションを含む可能性があります。サーバーは返されるテキストの長さを制限しますが、その内容を信頼できるものにするわけではなく、OCR やマルウェアスキャンも行いません。
  • アップロードされた添付ファイルのデータは、Unix アカウントからのみ読み取り可能なファイルに一時保存されます。フルディスク暗号化を使用してください。
  • サーバーは周囲の会話を確認できません。user_confirmed: true はクライアントによる申告であるため、確認手順が機能するかどうかは、クライアントがルールを守ることに依存します。これにより誤操作は減りますが、攻撃者の影響下にあるクライアントに対する防御境界にはなりません。
  • このサーバーが作成する下書きは、送信するまでは何も実行しませんが、あなたが書いたように見える内容に仕立てられる可能性はあります。送信前に Proton Mail で下書きを読み、特に宛先を確認してください。
  • Secure MCP Tunnel によりサーバーはパブリックインターネットに公開されませんが、OpenAI 製品に返されるメールの内容は、ローカル Bridge の境界を越えてその製品で処理されます。
  • ツールのアノテーションや会話内で確認を促す指示は、クライアント向けのガイダンスであり、認可制御ではありません。サーバーが強制するのは、入力の検証と、送信、削除、移動機能が存在しないことです。
  • Proton Bridge の自己署名 TLS 証明書は検証されません。接続先ホストが変更できない 127.0.0.1 であるため、この場合に限り許容できます。

セキュリティ

脆弱性を報告するには、GitHub の非公開脆弱性報告を利用してください。公開 issue は作成しないでください。SECURITY.mdもご覧ください。

ライセンス

MIT © 2026 Francois Bossiere。

このプロジェクトは Proton AG とは提携しておらず、同社から推奨を受けているものでもありません。「Proton Mail」と「Proton Mail Bridge」は Proton AG の商標です。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。