Bridge不要のProtonMail MCPサーバーを作った
著者: Ichiburn
EST. 1 分で読了
課題
既存のProtonMail MCPサーバーは全てProton Bridge(有料デスクトップアプリ)が必要。
無料のProtonMailユーザーはAIアシスタントとメールを連携する手段がない。
GitHubで11個のProtonMail MCPプロジェクトを調査した。
全てBridge必須だった。
解決策
protonmail-mcp を構築した。
Protonの公式オープンソースライブラリのみを使い、APIと直接通信するGo製MCPサーバー:
- go-proton-api — Proton Bridge自体が使用するライブラリ
- go-srp — SRP認証
- gopenpgp — PGP暗号化/復号
サードパーティAPIラッパーは不使用。
パスワードや秘密鍵を扱う未知のパッケージによるサプライチェーンリスクなし。
機能
- ログイン — SRP認証 + 2FA(TOTP)対応
- 読取 — PGP暗号化メールの復号・閲覧
- 検索 — 送信者、件名、キーワードでフィルタ
- 送信 — サーバーサイドトークンによる2段階確認(プロンプトインジェクション対策)
セキュリティ: 8ラウンドの敵対的レビュー
Writer/Reviewer分離(Claude実装 → Codexレビュー)で8ラウンドの敵対的セキュリティレビューを実施。
| ラウンド | CRITICAL | HIGH | MEDIUM | 修正 |
|---|---|---|---|---|
| 1 | 3 | 4 | 5 | 3 |
| 2 | 0 | 2 | 4 | 7 |
| 3 | 0 | 5 | 0 | 5 |
| 4 | 0 | 2 | 0 | 2 |
| 5 | 0 | 0 | 4 | 4 |
| 6 | 0 | 0 | 2 | 2 |
| 7 | 0 | 0 | 1 | 1 |
| 8 | 0 | 0 | 0 | 0 |
24件の問題を発見・修正。
主な発見事項:
- プロンプトインジェクション回避 — 悪意あるメールがAIにメール送信を指示可能だった。
サーバーサイド確認トークンで修正。 - PGP鍵素材のメモリ残留 — ソルト付き鍵パスフレーズが使用後にゼロクリアされていなかった。
即時ゼロフィルで修正。 - 2FAセッションリーク — 認証失敗時に部分的に認証されたセッションがクリーンアップされなかった。
- SMTPヘッダーインジェクション — 不正なメールアドレスでヘッダー注入が可能だった。
厳密なバリデーションで修正。
最終状態: gosec、govulncheck、staticcheck 全てクリーン。
仕組み
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"
}
}
}
}
