Proton Mail MCP

Un servidor del Protocolo de Contexto de Modelo exclusivo para macOS que expone tu cuenta de Proton Mail a Claude Desktop y Claude Code mediante llamadas a herramientas protegidas con Touch ID.

Documentación

proto-mcp

Dale a Claude tu bandeja de entrada — sin perder el control.

Un puente firmado, notarizado y protegido con Touch ID entre Proton Mail y Claude, que se ejecuta íntegramente en tu Mac. Claude lee, busca, organiza, redacta y envía tu correo — y lee tu calendario — a través de 34 herramientas del https://modelcontextprotocol.io — y cada mensaje que sale necesita tu huella dactilar en un aviso que nombra al destinatario real.

Nada sale de tu portátil excepto el propio correo.

platform: macOS Go 1.26.5+ signed & notarized MCP license: GPLv3


Cómo se siente

Hablas con Claude. Claude habla con tu buzón. Tú te mantienes al tanto de lo que importa.

"¿Qué me perdí del grupo de escalada esta semana?" → Claude busca en el espejo local, lee el hilo y lo resume. Sin aviso — leer es seguro.

"Archiva todos los boletines en Reading y márcalos como leídos." → Claude los mueve y los marca. Organizar está restringido, pero es silencioso.

"Responde a Alice que estoy dentro para el sábado, y envíalo." → Aparece un aviso de Touch ID: Para: alice@example.com · Asunto: Re: lista de equipo. Tocas. Se envía. Tú no lo escribiste.

Cada lectura se sirve desde un espejo SQLite local, así que es rápido y funciona sin conexión. Cada escritura se rige por una política por herramienta. Cada envío vuelve a solicitar confirmación, cada vez, mostrando los destinatarios literales — ese toque de huella es la línea entre "Claude lo redactó" y "Claude lo envió".

Inicio rápido

brew tap just-an-oldsalt/proto-mcp
brew install --cask proto-mcp

protonmcp setup

Eso es todo. setup te inicia sesión, copia el índice de tu buzón en una base de datos local, inicia el servicio en segundo plano y conecta ambos clientes de Claude — explicando cada paso sobre la marcha. Reinicia Claude después y las herramientas aparecerán bajo protonmcp en /mcp.

Es seguro volver a ejecutarlo: los pasos completados se omiten, así que también sirve como comando de reparación.

¿Prefieres ejecutar los cuatro pasos tú mismo?
protonmcp login            # Proton SRP password + 2FA + key unlock
protonmcp backfill         # one-time: pull your message envelopes into the local mirror
protonmcp daemon install   # register + start the background daemon
protonmcp install          # connect it to Claude Desktop + Claude Code

Binarios firmados y notarizados — sin advertencia de Gatekeeper, sin listener de red.

¿Algo no funciona? protonmcp doctor comprueba cada pieza de la instalación y te dice el único comando que lo arregla:

[  ok  ] protonmcpd             version 1.0.2
[  ok  ] login                  session present in keychain
[ FAIL ] local mirror           exists but holds no messages
[  ok  ] daemon                 running (pid 4875), socket healthy

To fix:
  local mirror
      protonmcp backfill

Después de brew upgrade --cask proto-mcp, ejecuta protonmcp daemon restart para que el daemon recoja la nueva compilación.

¿Prefieres compilarlo tú mismo? Consulta Compilar desde el código fuente.

Lo que Claude puede hacer

34 herramientas, agrupadas por lo que tocan. Las lecturas son libres; todo lo que cambia el estado está denegado por defecto y protegido con Touch ID.

📖 Leer y buscarListar, búsqueda de texto completo, leer mensajes, reconstruir hilos, listar adjuntos, listar etiquetas/carpetas, sincronizar.
🗂️ OrganizarMarcar como leído/no leído, mover, etiquetar, enviar a la papelera.
🏷️ Etiquetas y carpetasCRUD completo con validación de paleta de colores.
✍️ BorradoresCrear, actualizar, eliminar, listar.
📤 EnviarEnviar, responder, responder a todos, reenviar, enviar borrador — cada uno vuelve a solicitar confirmación.
📎 AdjuntosDescifrar y descargar, guardar en disco.
📅 CalendarioListar calendarios, explorar/buscar eventos por rango de fechas, leer el detalle completo del evento. Solo lectura.

Lista completa con descripciones: docs/cli-reference.md.

Por qué es seguro

proto-mcp está construido para que un LLM que maneja tu buzón sea una conveniencia, nunca una responsabilidad. Las garantías que lo hacen posible:

  • 🔐 Tu huella en cada envío. Cada escritura dispara un aviso nativo que muestra los destinatarios literales y el asunto. mail_send tiene un TTL de cero, así que vuelve a solicitar confirmación cada vez. Sin aprobaciones genéricas para envíos.
  • 🛡️ Denegado por defecto por construcción. Las herramientas desconocidas no se ejecutan, y el daemon se niega a iniciar si cualquier herramienta registrada carece de una entrada de política explícita — no puedes enviar accidentalmente una escritura sin protección.
  • 🍎 Firmado, notarizado y autoverificable. Binarios con runtime endurecido, firmados con Developer ID y notarizados por Apple, más una comprobación de integridad SHA-256 al inicio que se niega a ejecutar un daemon sustituido.
  • 🔒 Se bloquea cuando te alejas. El bloqueo de pantalla, el sueño o un temporizador de inactividad ponen a cero la sesión en memoria; reanudar requiere Touch ID.
  • 🧾 Registro de auditoría honesto y redactado. Cada llamada se registra — secretos eliminados, cuerpos reducidos a {sha256, bytes}, destinatarios mantenidos literales para que la cadena de verificación siga siendo veraz.
  • 🏠 Solo local. El daemon escucha en un socket Unix 0600, nunca en un puerto de red. El contenido del correo va a Proton a través de TLS; nada más sale.

Así es como se ve un aviso real:

┌──────────────────────────────────────────────┐
│ Send mail_send?                              │
│                                              │
│ To: alice@example.com                        │
│ CC: charlie@example.com                      │
│ Subject: Re: gear list                       │
│                                              │
│ [ Cancel ]              [ Send & Touch ID ]  │
└──────────────────────────────────────────────┘

El modelo de amenazas completo — incluidos los riesgos contra los que proto-mcp no defiende — está en docs/security.md. Léelo antes de apuntar esto a un buzón real.

Cómo funciona

Un daemon en segundo plano mantiene tu sesión desbloqueada con Touch ID y sirve cada herramienta a través de un socket local. Claude Desktop y Claude Code se conectan mediante un pequeño reenviador, así que comparten una sola sesión: desbloquea una vez, úsalo en todas partes; bloquea una vez, todo se bloquea.

Claude Desktop ─┐                          ┌─ go-proton-api + GPG
Claude Code ────┼─ shim ─ socket ─ protonmcpd ┼─ SQLite mirror + FTS5
                ┘     (0600)               └─ Touch ID + policy + audit

El diseño completo — cada binario, paquete y el espejo local — está en docs/architecture.md.

Configuración

Ajusta la política por herramienta, los límites de velocidad, los destinatarios permitidos, el temporizador de bloqueo por inactividad y el TTL del cuerpo en caché con un único archivo YAML. Por ejemplo, para limitar los envíos impulsados por LLM y restringirlos a un dominio:

tools:
  mail_send:
    decision: prompt
    rate_limit: 5/hour
    allowed_recipients: ["@mydomain.com"]
idle_lock_minutes: 30

Referencia completa, además de bloqueo y comandos de auditoría/observabilidad: docs/configuration.md.

Compilar desde el código fuente

Requiere macOS 13+, Go 1.26.5+ y Xcode Command Line Tools (para swiftc).

git clone https://github.com/just-an-oldsalt/proto-mcp.git
cd proto-mcp
make all                          # builds bin/* + the Swift helpers
./bin/protonmcp setup

make all compila para tu propia arquitectura. make universal compila arm64 + x86_64 y los lipo en bin/universal/ — eso es lo que publica una versión, así que el cask funciona tanto en Apple silicon como en Intel.

Las compilaciones desde el código fuente están firmadas ad-hoc por defecto y funcionan completamente (la puerta de Touch ID, la política, la auditoría y el bloqueo/desbloqueo funcionan igual). Para una compilación firmada localmente, consulta scripts/signing-setup.md.

Para tener en cuenta

  • Solo macOS. El almacén de claves y los helpers biométricos usan Security.framework, LAContext y AppKit. Las compilaciones de Linux compilan para pruebas, pero el flujo de autenticación no funcionará.
  • Sé un buen ciudadano de Proton. proto-mcp envía actualmente el encabezado AppVersion de Proton Bridge mientras se solicita un identificador dedicado a Proton (consulta docs/proton-appversion-request.md). No abuses de las tasas, no hagas scraping ni ejecutes automatización multi-cuenta a través de él — cualquier cosa que viole los Términos de Proton no deja de ser una violación por tomar prestado el encabezado de Bridge.
  • Los cuerpos en caché son texto plano en SQLite. Los cuerpos de mensajes descifrados se almacenan en caché localmente (con TTL limitado, secure_delete activado). En un disco robado o con imagen, eso es texto claro recuperable hasta que se purga. El cifrado de sobre (SQLCipher) es un elemento posterior a la versión 1.0. protonmcp purge --older-than 7d --vacuum reduce la ventana ahora.
  • Uso personal. Construido para una persona y su buzón en su Mac.

Documentación

DocumentoContenido
docs/architecture.mdEl modelo de daemon, binarios, paquetes y el espejo local.
docs/security.mdCapas de seguridad + el modelo de amenazas completo y honesto.
docs/configuration.mdYAML de políticas, bloqueo, observabilidad, purga.
docs/cli-reference.mdCada comando CLI y las 34 herramientas MCP.
SECURITY.mdPolítica de seguridad + registro de correcciones por defecto / pista de auditoría.
TESTING.mdManual de validación de extremo a extremo.

Los problemas, defectos y la hoja de ruta se rastrean en Jira (proyecto PROTO), la fuente de verdad. TODO.html y DEFECTS.html se conservan como registros de diseño históricos de la construcción.

Contribuciones

Se aceptan PRs, pero abre primero un issue — la mayor parte de la dirección arquitectónica está decidida, y los PRs de gran alcance no solicitados probablemente no se acepten. .github/CODEOWNERS define los revisores requeridos para las rutas críticas de seguridad (internal/redact/, internal/keystore/, internal/policy/, internal/approval/, helpers/touchid/, helpers/lockwatch/).

Licencia y agradecimientos

GPLv3 — consulta LICENSE. proto-mcp depende transitivamente de proton-bridge (también GPLv3) a través de go-proton-api.

  • Proton AG por proton-bridge y go-proton-api, sobre los que descansa toda la capa de criptografía y transporte.
  • Anthropic por el Model Context Protocol y los clientes de Claude a los que este servidor se dirige.
  • Cada defecto que tomó la forma que tomó porque cmd-r, claude-review, claude-security-review o una sesión de pruebas en vivo miraron el código con más cuidado de lo que yo habría hecho solo.