Proton Suite Agent
MCP server multi-producto para Proton Suite: Mail (Bridge IMAP/SMTP), Pass (pass-cli), Drive (CLI oficial) y Calendar (CalDAV stub). Un agente puede operar el buzón, gestionar contraseñas, sincronizar archivos y clasificar correo — todo sin salir de tu máquina.
| Modo | Descripción |
|---|---|
| stdio (default) | Sin exponer nada a la red. Ideal para agentes IA locales. |
| streamable HTTP | Bearer auth + origin allowlist. Para despliegue con Docker. |
Quickstart
Prerrequisitos: Node ≥ 22, Proton Mail Bridge corriendo en local, pass + gpg para contraseñas.
1. Instalar y compilar
git clone https://github.com/Iniciativas-Alexendros/agent-protonsuite.git
cd agent-protonsuite
npm install && npm run build && npm run smoke
2. Configurar variables de entorno
export PROTON_BRIDGE_USER=you@proton.me
export PROTON_BRIDGE_PASS=your-bridge-password
export PROTON_MAIL_FROM=you@proton.me
3. Conectar tu cliente MCP
{
"mcpServers": {
"protonsuite": {
"command": "npx",
"args": ["-y", "@alexendros/protonsuite-agent", "protonsuite-mcp"],
"env": {
"MCP_TRANSPORT": "stdio",
"PROTON_BRIDGE_USER": "you@proton.me",
"PROTON_BRIDGE_PASS": "your-bridge-password",
"PROTON_MAIL_FROM": "you@proton.me",
"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 npx -y @alexendros/protonsuite-agent organize
El agente analiza el inbox y presenta un plan de carpetas, etiquetas y alertas sin aplicar cambios. Desactiva AGENT_DRY_RUN para ejecutar.
Tools MCP
25 tools organizadas por producto. Todas aceptan response_format: "markdown" | "json".
| Producto | Tools | Resumen |
|---|---|---|
| 14 | List, search, read, send, reply, forward, flag, move, delete, attachments | |
| Pass | 4 | List, get (sin exponer valores), generate, health |
| Drive | 8 | Status, list, download, upload, share, audit, organize, format report |
| Calendar | stub | Registradas pero {available: false} hasta CalDAV vía Bridge |
| Suite | 1 | Estado unificado de todos los productos |
Ver tabla completa en
docs/agent-quickstart.md.
Agente
| Goal | Pipeline |
|---|---|
setup | Verifica Bridge (IMAP + SMTP), envía email de prueba |
organize | Clasifica inbox, propone carpetas/etiquetas, detecta amenazas |
monitor | Solo lectura — presenta alertas sin modificar |
alert | Inspecciona amenazas de seguridad |
pass-audit | Fortaleza de contraseñas, duplicados, rotación |
suite-status | Reporte unificado cross-producto |
discover / check-imap | Verificación rápida de conectividad |
Drive CLI
# Instalar (opcional)
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 para configuración completa.
Despliegue
Docker
docker compose up -d
Ver docs/deployment-http-docker.md para auth, allowlist y healthcheck.
Instalador Ubuntu
bash scripts/install.sh
Ver scripts/install.sh para la instalación interactiva completa.
Documentación
| Documento | Para quién | Qué cubre |
|---|---|---|
docs/human-quickstart.md | Usuarios no técnicos | Instalación paso a paso, Bridge, Pass, primer uso |
docs/agent-quickstart.md | Agentes IA | Tools, formatos de respuesta, ejemplos |
docs/bridge-core.md | Todos | Bridge headless, puertos, vault, troubleshooting |
docs/deployment-http-docker.md | DevOps | Docker, auth, allowlist, healthcheck |
docs/local-stdio-secrets.md | Operadores | Wrapper stdio sin secretos en disco |
docs/alerting.md | Operadores | Alertas de contenido, webhook, logs |
docs/knowledge-base.md | Todos | Clasificación profesional y categorías |
docs/drive-audit.md | Operadores | Drive CLI, persistencia token, auditoría |
ARCHITECTURE.md | Desarrolladores | Capas internas, modelo de amenazas |
SECURITY.md | Auditores | Controles activos y threat model |
CONTRIBUTING.md | Contribuidores | Convenciones, PRs, tests |
Conectores
| Archivo | Uso |
|---|---|
connectors/stdio-npx.json | Config stdio genérica para cualquier cliente MCP |
connectors/stdio-wrapper.sh.example | Wrapper seguro con resolución JIT de secretos |
connectors/http-curl.sh.example | Handshake HTTP con curl |
Playbooks
playbooks/ — workflows predefinidos: onboarding, organize inbox, triage, fraud detection, pass audit, daily briefing, setup checklist.
Calidad
npm run typecheck # TypeScript strict
npm test # 745 tests (Vitest)
npm run coverage # Coverage (v8 — 98.05% statements)
npm run build # Compilación
npm run smoke # Verificación stdio
npm run knip # Unused deps/exports
Seguridad
- Bearer timing-safe, origin allowlist, rate-limit 120/min/token.
- Per-session HTTP transport, sesiones idle evicted a los 30 min.
- Sin credenciales ni cuerpos de request en logs.
- Pass nunca expone valores de secreto — solo
{found: true}. - Dry-run por defecto en el agente.
Próximo módulo objetivo (branches <95%) — agrupado por dominio:
- Agent:
agent/organizer.ts(74.20%),agent/executor.ts(87.20%) - MCP surface:
server/drive.ts(88.00%),server/mail.ts(89.60%) - Ecosystem:
ecosystem/discovery.ts(86.80%)
Progreso de cobertura
| Fecha | Statements | Branches | Tests | Archivos | Hitos |
|---|---|---|---|---|---|
| Jul 2026 (Branch hunt) | 98.07% | 93.63% | 864 | 43 | diagnostics.ts 84%→96%, addresses.ts 90%→100%, pass.ts 87%→95% — Branch hunt top-3 cerrado |
| Jul 2026 (Ronda 3b) | 93.72% | — | 745 | 42 | server/drive.ts 89%→99%, http.ts +10 tests CORS/auth |
| Jul 2026 (Ronda 2) | 92.68% | — | 692 | 41 | server.ts 73%→96%, smtp.ts 79%→98%, alerts/index.ts 76%→98% |
| Jul 2026 (post-merge) | 90.65% | 86.46% | 619 | 38 | Repo renombrado, PRs #65 y #66 fusionados |
| Jul 2026 (previo) | 90.67% | — | 640 | 42 | server/agent 64%→100%, organizer 68%→98%, http 69%→81%, rules 71%→100% |
| Jun 2026 (base) | 61.7% | — | 258 | 21 | Reporte inicial |
Conteo de tests canónico: npx vitest run 2>&1 | grep -E 'Test Files|Tests'. Los modos vitest run --coverage y vitest list pueden diferir ligeramente por su modelo de carga (transform/collect timing).
Licencia
AGPL-3.0 — Copyright 2026 Alejandro Domingo Agustí (Alexendros). Sin afiliación a Proton AG.
Ver NOTICE.md para dependencias y compatibilidad de licencias.
评论
加载中…