[2026.04.02] #OSS #AI-AUTOMATION

Bridge不要のProtonMail MCPサーバーを作った

著者: Ichiburn EST. 1 分で読了

課題

既存のProtonMail MCPサーバーは全てProton Bridge(有料デスクトップアプリ)が必要。
無料のProtonMailユーザーはAIアシスタントとメールを連携する手段がない。

GitHubで11個のProtonMail MCPプロジェクトを調査した。
全てBridge必須だった。

解決策

protonmail-mcp を構築した。
Protonの公式オープンソースライブラリのみを使い、APIと直接通信するGo製MCPサーバー:

サードパーティAPIラッパーは不使用。
パスワードや秘密鍵を扱う未知のパッケージによるサプライチェーンリスクなし。

機能

  • ログイン — SRP認証 + 2FA(TOTP)対応
  • 読取 — PGP暗号化メールの復号・閲覧
  • 検索 — 送信者、件名、キーワードでフィルタ
  • 送信 — サーバーサイドトークンによる2段階確認(プロンプトインジェクション対策)

セキュリティ: 8ラウンドの敵対的レビュー

Writer/Reviewer分離(Claude実装 → Codexレビュー)で8ラウンドの敵対的セキュリティレビューを実施。

ラウンドCRITICALHIGHMEDIUM修正
13453
20247
30505
40202
50044
60022
70011
80000

24件の問題を発見・修正。
主な発見事項:

  • プロンプトインジェクション回避 — 悪意あるメールがAIにメール送信を指示可能だった。
    サーバーサイド確認トークンで修正。
  • PGP鍵素材のメモリ残留 — ソルト付き鍵パスフレーズが使用後にゼロクリアされていなかった。
    即時ゼロフィルで修正。
  • 2FAセッションリーク — 認証失敗時に部分的に認証されたセッションがクリーンアップされなかった。
  • SMTPヘッダーインジェクション — 不正なメールアドレスでヘッダー注入が可能だった。
    厳密なバリデーションで修正。

最終状態: gosecgovulncheckstaticcheck 全てクリーン。

仕組み

1. SRP認証 (go-srp)
2. 鍵アンロック (ソルト付きパスフレーズ → PGPキーリング)
3. メッセージ取得 (APIから暗号化データ)
4. ローカル復号 (gopenpgp)
5. ドラフト → 確認フローで送信 (トークンベース)

暗号化・復号は全てローカルで実行。
認証情報はディスクに保存されない。

使い方

go install github.com/ichiburn/protonmail-mcp@latest

Claude Code の .mcp.json に追加:

{
  "mcpServers": {
    "protonmail": {
      "command": "protonmail-mcp",
      "env": {
        "PROTON_USER": "[email protected]",
        "PROTON_PASS": "your-password"
      }
    }
  }
}

ソースコード: github.com/ichiburn/protonmail-mcp