# Proton Safe MCP

Connects your agent to Proton Mail via the local desktop Bridge to search mail and draft replies. The server has no send capabilities by design.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 6
- Author: fbossiere
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/fbossiere/proton-safe-mcp
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/proton-safe-mcp

## What it does

This server bridges local agents with Proton Mail over STDIO, communicating strictly with `127.0.0.1` through the official Proton Mail Bridge. It searches mailboxes, extracts plain text from incoming attachments, and writes draft messages. Before creating any draft, the server requires explicit confirmation of the recipient and message contents directly in the agent dialogue.

Outgoing delivery is omitted entirely: the codebase lacks SMTP facilities, message deletion, and moving tools. This design protects the workspace against prompt injections hidden inside incoming mail. Without an active Bridge instance and an unlocked system keyring, the server cannot establish an IMAP session.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `PROTON_BRIDGE_USER`, `PROTON_IMAP_PORT` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env PROTON_BRIDGE_USER=<PROTON_BRIDGE_USER> --env PROTON_IMAP_PORT=<PROTON_IMAP_PORT> --transport stdio proton-safe-mcp -- uvx proton-safe-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from proton-safe-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add proton-safe-mcp --env PROTON_BRIDGE_USER=<PROTON_BRIDGE_USER> --env PROTON_IMAP_PORT=<PROTON_IMAP_PORT> -- uvx proton-safe-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from proton-safe-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "proton-safe-mcp": {
            "command": "uvx",
            "args": [
                "proton-safe-mcp"
            ],
            "env": {
                "PROTON_BRIDGE_USER": "<PROTON_BRIDGE_USER>",
                "PROTON_IMAP_PORT": "<PROTON_IMAP_PORT>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from proton-safe-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "proton-safe-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "proton-safe-mcp"
            ],
            "env": {
                "PROTON_BRIDGE_USER": "<PROTON_BRIDGE_USER>",
                "PROTON_IMAP_PORT": "<PROTON_IMAP_PORT>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from proton-safe-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e PROTON_BRIDGE_USER=<PROTON_BRIDGE_USER> -e PROTON_IMAP_PORT=<PROTON_IMAP_PORT> proton-safe-mcp uvx proton-safe-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from proton-safe-mcp <command>

## When to use it
- search inbox messages inside Proton Mail
- extract readable text from received documents
- prepare draft responses with human review before dispatch
- attach approved local files via chunked base64 transfer

## Example prompts
- Find the latest emails from billing in Proton Mail.
- Read the attached invoice text from the most recent thread.
- Create a draft reply to contact@example.com confirming our meeting time.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 392262
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89609
- [mcp](https://affpapa.org/en/nevibecode/mcp/kubeshark-mcp.md) — MCP server · ★ 12110
- [Robin: AI-Powered Dark Web OSINT](https://affpapa.org/en/nevibecode/mcp/robin-ai-powered-dark-web-osint.md) — MCP server · ★ 7718
- [jshookmcp](https://affpapa.org/en/nevibecode/mcp/jshookmcp.md) — MCP server · ★ 2066
- [OpenOSINT](https://affpapa.org/en/nevibecode/mcp/openosint.md) — MCP server · ★ 1816

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
