Proton Mail MCP
Um servidor local-only do Protocolo de Contexto de Modelo para macOS que expõe sua conta do Proton Mail ao Claude Desktop e ao Claude Code por meio de chamadas de ferramentas protegidas por Touch ID.
Documentação
proto-mcp
Dê sua caixa de entrada ao Claude — sem abrir mão do controle.
Uma ponte assinada, notarizada e protegida por Touch ID entre o Proton Mail e o Claude, rodando inteiramente no seu Mac. O Claude lê, pesquisa, organiza, redige e envia seus e-mails — e lê seu calendário — por meio de 34 ferramentas do https://modelcontextprotocol.io — e toda mensagem enviada exige sua impressão digital em um prompt que mostra o destinatário real.
Nada sai do seu laptop, exceto o próprio e-mail.
Como é a experiência
Você conversa com o Claude. O Claude conversa com sua caixa de entrada. Você acompanha tudo o que importa.
"O que eu perdi do grupo de escalada esta semana?" → O Claude pesquisa o espelho local, lê a conversa e resume. Sem prompt — leitura é segura.
"Arquive todos os boletins em Leitura e marque como lidos." → O Claude move e marca. Organizar é controlado, mas silencioso.
"Responda à Alice que estou dentro para sábado e envie." → Um prompt de Touch ID aparece: Para: alice@example.com · Assunto: Re: lista de equipamentos. Você toca. Envia. Você não digitou.
Toda leitura é servida de um espelho SQLite local, então é rápida e funciona offline. Toda gravação é regida por uma política por ferramenta. Todo envio reexige confirmação, todas as vezes, mostrando os destinatários literais — esse toque de impressão digital é a linha entre "o Claude redigiu" e "o Claude enviou".
Início rápido
brew tap just-an-oldsalt/proto-mcp
brew install --cask proto-mcp
protonmcp setup
É isso. setup faz login, copia o índice da sua caixa de entrada para um banco de dados local, inicia o serviço em segundo plano e conecta ambos os clientes do Claude — explicando cada etapa no caminho. Reinicie o Claude depois e as ferramentas aparecerão em protonmcp no /mcp.
É seguro reexecutar: etapas concluídas são puladas, então também funciona como comando de reparo.
Prefere executar as quatro etapas você mesmo?
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
Binários assinados e notarizados — sem aviso do Gatekeeper, sem listener de rede.
Algo não está funcionando? protonmcp doctor verifica cada parte da instalação e informa o único comando que corrige:
[ 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
Após brew upgrade --cask proto-mcp, execute protonmcp daemon restart para que o daemon use a nova versão.
Prefere compilar você mesmo? Veja Compilar a partir do código-fonte.
O que o Claude pode fazer
34 ferramentas, agrupadas pelo que acessam. Leituras são livres; tudo o que altera estado é negado por padrão e protegido por Touch ID.
| 📖 Ler e pesquisar | Listar, pesquisa de texto completo, ler mensagens, reconstruir conversas, listar anexos, listar rótulos/pastas, sincronizar. |
| 🗂️ Organizar | Marcar como lido/não lido, mover, rotular, mover para a lixeira. |
| 🏷️ Rótulos e pastas | CRUD completo com validação de paleta de cores. |
| ✍️ Rascunhos | Criar, atualizar, excluir, listar. |
| 📤 Enviar | Enviar, responder, responder a todos, encaminhar, enviar rascunho — cada um reexige confirmação. |
| 📎 Anexos | Descriptografar e baixar, salvar em disco. |
| 📅 Calendário | Listar calendários, navegar/pesquisar eventos por intervalo de datas, ler detalhes completos do evento. Somente leitura. |
Lista completa com descrições: docs/cli-reference.md.
Por que é seguro
O proto-mcp foi construído para que um LLM controlando sua caixa de entrada seja uma conveniência, nunca uma responsabilidade. As garantias que tornam isso verdade:
- 🔐 Sua impressão digital em todo envio. Cada gravação dispara um prompt nativo mostrando os destinatários literais e o assunto.
mail_sendtem TTL zero, então reexige confirmação todas as vezes. Sem aprovações genéricas para envios. - 🛡️ Negado por padrão por construção. Ferramentas desconhecidas não executam, e o daemon se recusa a iniciar se qualquer ferramenta registrada não tiver uma política explícita — você não pode acidentalmente enviar uma gravação sem proteção.
- 🍎 Assinado, notarizado e autoverificável. Binários com runtime endurecido, assinados com Developer ID e notarizados pela Apple, além de verificação de integridade SHA-256 na inicialização que se recusa a executar um daemon substituído.
- 🔒 Bloqueia quando você se afasta. Bloqueio de tela, suspensão ou temporizador de inatividade zeram a sessão em memória; retomar exige Touch ID.
- 🧾 Registro de auditoria honesto e editado. Toda chamada é registrada — segredos removidos, corpos reduzidos a
{sha256, bytes}, destinatários mantidos literais para que a cadeia de verificação permaneça fiel. - 🏠 Somente local. O daemon escuta em um socket Unix
0600, nunca em uma porta de rede. O conteúdo do e-mail vai para o Proton via TLS; nada mais sai.
Como é um prompt na prática:
┌──────────────────────────────────────────────┐
│ Send mail_send? │
│ │
│ To: alice@example.com │
│ CC: charlie@example.com │
│ Subject: Re: gear list │
│ │
│ [ Cancel ] [ Send & Touch ID ] │
└──────────────────────────────────────────────┘
O modelo de ameaças completo — incluindo os riscos contra os quais o proto-mcp não defende — está em docs/security.md. Leia antes de apontar isso para uma caixa de entrada ativa.
Como funciona
Um daemon em segundo plano mantém sua sessão desbloqueada por Touch ID e atende a todas as ferramentas por um socket local. O Claude Desktop e o Claude Code se conectam por um pequeno encaminhador, então compartilham uma sessão: desbloqueie uma vez, use em todos; bloqueie uma vez, tudo bloqueia.
Claude Desktop ─┐ ┌─ go-proton-api + GPG
Claude Code ────┼─ shim ─ socket ─ protonmcpd ┼─ SQLite mirror + FTS5
┘ (0600) └─ Touch ID + policy + audit
O design completo — cada binário, pacote e o espelho local — está em docs/architecture.md.
Configuração
Ajuste a política por ferramenta, limites de taxa, destinatários permitidos, o temporizador de bloqueio por inatividade e o TTL do corpo em cache com um único arquivo YAML. Por exemplo, para limitar envios orientados por LLM e restringi-los a um domínio:
tools:
mail_send:
decision: prompt
rate_limit: 5/hour
allowed_recipients: ["@mydomain.com"]
idle_lock_minutes: 30
Referência completa, além de bloqueio e comandos de auditoria/observabilidade: docs/configuration.md.
Compilar a partir do código-fonte
Requer macOS 13+, Go 1.26.5+ e 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 sua própria arquitetura. make universal compila para arm64 + x86_64 e lipo em bin/universal/ — é isso que uma versão publica, então o cask funciona tanto em Apple silicon quanto em Intel.
Compilações do código-fonte são assinadas ad-hoc por padrão e funcionam completamente (o gate de Touch ID, política, auditoria e bloqueio/desbloqueio rodam igual). Para uma compilação assinada localmente, veja scripts/signing-setup.md.
Bom saber
- Somente macOS. O keystore e os auxiliares biométricos usam
Security.framework,LAContexte AppKit. Compilações Linux funcionam para testes, mas o fluxo de autenticação não funcionará. - Seja um bom cidadão Proton. O proto-mcp atualmente envia o cabeçalho
AppVersiondo Proton Bridge enquanto um identificador dedicado é solicitado ao Proton (vejadocs/proton-appversion-request.md). Não abuse de taxas, não faça scraping nem automatize múltiplas contas — qualquer coisa que viole os Termos do Proton é igualmente uma violação por usar o cabeçalho do Bridge. - Corpos em cache são texto puro em SQLite. Corpos de mensagens descriptografados são armazenados em cache localmente (com TTL limitado,
secure_deleteativado). Em um disco roubado ou copiado, isso é texto claro recuperável até ser purgado. Criptografia de envelope (SQLCipher) é um item pós-1.0.protonmcp purge --older-than 7d --vacuumreduz a janela agora. - Uso pessoal. Construído para uma pessoa e sua caixa de entrada no seu Mac.
Documentação
| Documento | Conteúdo |
|---|---|
| docs/architecture.md | O modelo de daemon, binários, pacotes e espelho local. |
| docs/security.md | Camadas de segurança + o modelo de ameaças completo e honesto. |
| docs/configuration.md | YAML de política, bloqueio, observabilidade, purga. |
| docs/cli-reference.md | Todos os comandos CLI e todas as 34 ferramentas MCP. |
| SECURITY.md | Política de segurança + registro de correções por defeito / trilha de auditoria. |
| TESTING.md | Manual de validação de ponta a ponta. |
Problemas, defeitos e roadmap são rastreados no Jira (projeto PROTO), a fonte da verdade. TODO.html e DEFECTS.html são mantidos como registros históricos de design do desenvolvimento.
Contribuindo
PRs são bem-vindos, mas abra um issue primeiro — a maior parte da direção arquitetural está definida, e PRs grandes não solicitados provavelmente não serão aceitos. .github/CODEOWNERS define os revisores obrigatórios para os caminhos críticos de segurança (internal/redact/, internal/keystore/, internal/policy/, internal/approval/, helpers/touchid/, helpers/lockwatch/).
Licença e agradecimentos
GPLv3 — veja LICENSE. O proto-mcp depende transitivamente de proton-bridge (também GPLv3) via go-proton-api.
- Proton AG por
proton-bridgeego-proton-api, sobre os quais toda a camada de criptografia e transporte se apoia. - Anthropic pelo Model Context Protocol e pelos clientes Claude que este servidor tem como alvo.
- Cada defeito que tomou a forma que tomou porque
cmd-r,claude-review,claude-security-reviewou uma sessão de testes ao vivo olharam o código com mais cuidado do que eu teria sozinho.