About proton-mail-mcp
proton-mail-mcp is an MCP server for operating Proton Mail, Pass, and Drive through local Bridge and CLI components; Calendar is currently a stub. It supports local stdio and authenticated HTTP, with approval required for write, delete, and credential operations.
Key features
- 01Read, search, send, and organize mail
- 02Manage Pass entries without exposing values
- 03List, transfer, and organize Drive files
- 04Dry-run agent workflows by default
- 05Require terminal approval for changes
- 06Offer stdio and authenticated HTTP transports
Use cases
- 01Review and organize a Proton Mail inbox
- 02Audit password strength and duplicates
- 03Inspect or organize Proton Drive files
- 04Deploy MCP access through an HTTP proxy
MCP support
The server exposes product-dependent tools for Proton Mail, Pass, Drive, and Calendar status to MCP clients. It supports stdio and streamable HTTP; changes require approval from the terminal.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @alexendros/proton-mail-mcpPROTON_BRIDGE_HOSTHostname or IP of the Proton Mail Bridge (default: 127.0.0.1 for local, or container hostname in compose).PROTON_IMAP_PORTIMAP port exposed by Proton Mail Bridge (default: 1143).PROTON_SMTP_PORTSMTP port exposed by Proton Mail Bridge (default: 1025).PROTON_USERNAMEBridge username (your Proton Mail address).PROTON_PASSWORDSecretBridge-generated app password (NOT your Proton account password).Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEProton Suite Agent
Propósito de este documento
- Objetivos: Orientar el pulso del repo, el quickstart y el enrutado a los documentos canónicos.
- Estructura: Ficha → pulso → mapa de lectura → instalación, tools, agente, calidad.
- Contenido a integrar según contexto: Stack TypeScript/MCP, frontera Bridge, dry-run por defecto, Makefile fachada.
Abrir cuando: Orientación, pulso y enrutado. Aprobado: 15 de agosto de 2026 Audiencia: Agente, Dirección, Usuarios Autoridad: Lectura Clase: Obligatorio Días para revisión: 14 En repo: Sí Estado: Vigente Orden: 1 Propósito: Punto de entrada: pulso, quickstart y qué leer después. Reforma: Operativa Responsable: Alexendros Revisión: 29 de agosto de 2026 Rol: Entrada Ruta: ./README.md
📌Propósito
Punto de entrada de lectura. Te dice el pulso, cómo arrancar y qué documento abrir después. Lo no negociable vive en CONSTITUTION.md.
Estado en una mirada
Pulso: 24 de septiembre de 2026 · v1.4.0
Fase activa: Fase 1 (Pass / agente / DX) checklist cerrada · siguiente: Fase 2 (Calendar, bloqueada). Ver ROADMAP.md.
Métricas: 47 tools por defecto (50 con Calendar experimental) · 965 tests · cobertura ~98% (gate 95%).
| Capa | Estado |
|---|---|
| Mail (Bridge IMAP/SMTP) | Operativo |
Pass (pass / gopass) | Operativo |
Drive (proton-drive CLI) | Operativo (ADR-006) |
| Calendar | Stub hasta CalDAV en Bridge (ADR-005) |
| Documentación canónica | Subfase 0 completada |
MCP server multi-producto para Proton Suite: Mail, Pass, Drive y Calendar (stub). Un agente opera el buzón, gestiona contraseñas y sincroniza archivos — local, sin exfiltrar contenido E2E.
| Modo | Descripción |
|---|---|
| stdio (default) | Sin exponer red. Ideal para agentes IA locales. |
| streamable HTTP | Bearer auth + origin allowlist. Docker / reverse proxy. |
Qué leer a continuación
| Si necesitas | Abre | Aún no |
|---|---|---|
| Lo no negociable | CONSTITUTION.md | ROADMAP entero |
| Orden de trabajo y fases | ROADMAP.md | Código |
| Implementar como agente | AGENTS.md | ARCHITECTURE completo |
| Capas y flujos | ARCHITECTURE.md | Código |
| Threat model | SECURITY.md | — |
| Contribuir / PR | CONTRIBUTING.md | — |
| Contrato de tools MCP | docs/api/mcp-tools.md | — |
| Decisiones (por qué) | docs/adr/ | — |
| Índice de guías | docs/README.md | — |
| Playbooks + prompts | playbooks/README.md | — |
Primera sesión: este README → AGENTS.md §§ TL;DR + ficha → fase activa en ROADMAP.md → ADR/ancla citada.
Quickstart
Prerrequisitos: Node ≥ 22, pnpm, Proton Mail Bridge en local, pass o gopass + gpg para contraseñas.
1. Instalar y compilar
git clone https://github.com/Soluciones-Alexendros/protonsuite-tools.git
cd protonsuite-tools
pnpm install && pnpm build && pnpm run smoke
2. Configurar variables de entorno
export [email protected]
export PROTON_BRIDGE_PASS=your-bridge-password
export [email protected]
3. Conectar tu cliente MCP
{
"mcpServers": {
"protonsuite": {
"command": "npx",
"args": ["-y", "@alexendros/protonsuite-agent", "protonsuite-mcp"],
"env": {
"MCP_TRANSPORT": "stdio",
"PROTON_BRIDGE_USER": "[email protected]",
"PROTON_BRIDGE_PASS": "your-bridge-password",
"PROTON_MAIL_FROM": "[email protected]",
"PROTON_BRIDGE_TLS_INSECURE": "true",
"PROTON_PASS_ENABLED": "true",
},
},
},
}
Seguridad: usa
PROTON_PASS_BRIDGE_PATH=proton/bridge/passwordo el wrapper JIT enconnectors/stdio-wrapper.sh.examplepara no dejar el bridge password en disco.
4. Organizar el buzón (dry-run)
AGENT_DRY_RUN=true pnpm exec protonsuite-agent organize
# o: npx -y @alexendros/protonsuite-agent organize
El agente analiza el inbox y presenta un plan sin aplicar cambios. Desactiva AGENT_DRY_RUN solo tras revisión.
Tools MCP
El inventario depende de qué productos estén habilitados: un producto apagado no registra ni anuncia sus herramientas.
| Configuración | Tools |
|---|---|
| Por defecto (Mail + Drive) | 39 |
+ Pass y Calendar (PROTON_PASS_ENABLED=true, PROTON_CALENDAR_ENABLED=true) | 47 |
+ Calendar experimental (PROTON_CALENDAR_EXPERIMENTAL=true) | 50 |
| Todos los productos apagados | 5 (solo proton_suite_status y proton_ecosystem_*) |
Lectura: response_format: "markdown" | "json".
| Producto | Tools | Resumen |
|---|---|---|
| 14 | List, search, read, send, reply, forward, flag, move, delete, attachments | |
| Pass | 4+ | List, get (sin valores), generate, health; audit vía agente |
| Drive | 8+ | Status, list, download, upload, share, audit, organize |
| Calendar | stub | {available: false} hasta CalDAV vía Bridge (ADR-005) |
| Suite / Bridge / Ecosystem / Agent | resto | Estado unificado, Bridge, binarios, plan de agente |
Contrato generado: docs/api/mcp-tools.md. Guía: docs/agent-quickstart.md.
Escribir requiere tu aprobación
Leer no pide nada. Escribir, borrar o tocar credenciales no se ejecuta: el servidor deja una solicitud y te la enseña.
protonsuite-agent pending # qué espera aprobación, con los campos sensibles tachados
protonsuite-agent approve <id> # lo autorizas
protonsuite-agent reject <id> # lo deniegas
Después de aprobar, repite exactamente la misma llamada. Si cambias un destinatario o una letra del cuerpo, la aprobación ya no vale y habrá que aprobar otra vez.
Aprobar solo se puede desde tu terminal: no hay forma de hacerlo por MCP ni pidiéndoselo al modelo. Detalles en ADR-0009.
Agente
| Goal | Pipeline |
|---|---|
setup | Verifica Bridge (IMAP + SMTP) |
organize | Clasifica inbox, carpetas/etiquetas, amenazas |
monitor / alert | Solo lectura — alertas |
pass-audit | Fortaleza, duplicados y plan de rotación. Solo lectura: nunca escribe en el store. |
suite-status | Reporte cross-producto |
discover / check-imap | Conectividad |
| Drive goals | drive-audit, drive-organize, … |
Drive CLI
sudo wget -q 'https://proton.me/download/drive/cli/linux/proton-drive' \
-O /usr/local/bin/proton-drive && sudo chmod +x /usr/local/bin/proton-drive
proton-drive auth login
Requiere DRIVE_ENABLED=true (default). Ver docs/drive-audit.md.
Despliegue
docker compose up -d
Ver docs/deployment-http-docker.md. Instalador: scripts/install.sh.
Interfaz local
SPA estática en apps/web (ADR-0007): landing y panel de estado. No forma parte del proceso MCP. pnpm run build la genera en apps/web/dist. Se abre sin Bridge; el panel usa el adaptador local «datos de ejemplo» y no pide credenciales. Calendar sigue en stub.
Documentación
| Documento | Para quién | Qué cubre |
|---|---|---|
CONSTITUTION.md | Todos | No negociables |
ROADMAP.md | Dirección / agente | Fases y criterios de salida |
AGENTS.md | Agentes IA | Contrato operativo |
docs/human-quickstart.md | Usuarios | Instalación paso a paso |
docs/agent-quickstart.md | Agentes IA | Tools y ejemplos |
docs/bridge-core.md | Operadores | Bridge headless |
docs/deployment-http-docker.md | DevOps | Docker, auth, Pass en compose |
docs/local-stdio-secrets.md | Operadores | Wrapper JIT |
docs/alerting.md | Operadores | Webhook, ntfy, logs |
docs/drive-audit.md | Operadores | Drive CLI |
ARCHITECTURE.md | Desarrolladores | Capas y flujos |
SECURITY.md | Auditores | Threat model |
CONTRIBUTING.md | Contribuidores | PRs, pnpm, tests |
SUPPORT.md | Usuarios | Canales de ayuda |
CODE_OF_CONDUCT.md | Comunidad | Conducta |
docs/ | Todos | architecture / guides / runbooks |
playbooks/ | Operadores | Workflows + prompts |
Calidad
Fachada canónica (Makefile): make lint, make test, make smoke, make validate.
make validate # lint + typecheck + test + build + smoke
pnpm run typecheck # TypeScript strict
pnpm test # Vitest (953+)
pnpm run coverage # Coverage v8 — gate 95%, objetivo ≥98%
pnpm run build # tsc → dist/ y SPA apps/web (tokens, contraste, vite)
pnpm run smoke # stdio initialize + tools/list
pnpm run knip # Unused deps/exports
pnpm docs:check # mcp-tools.md en sync
Seguridad (resumen)
- Bearer timing-safe, origin allowlist, rate-limit 120/min/token.
- HTTP per-session; idle eviction 30 min.
- Pass nunca expone valores — solo
{found: true}. - Dry-run por defecto en el agente (CONSTITUTION.md §4).
Progreso de cobertura
| Fecha | Statements | Branches | Tests | Notas |
|---|---|---|---|---|
| Ago 2026 | ~98% | ~95% | 953 | Subfase 0 + Fase 1 |
| Jul 2026 | 98.07% | 93.63% | 864 | Branch hunt |
| Jun 2026 | 61.7% | — | 258 | Base |
Conteo canónico: pnpm test 2>&1 | grep -E 'Test Files|Tests'.
Licencia
AGPL-3.0 — Copyright 2026 Alejandro Domingo Agustí (Alexendros). Sin afiliación a Proton AG.
Ver NOTICE.md para dependencias.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.