tutamcp
Servidor MCP que dá ao Claude acesso ao Tuta mail, calendário, contatos e drive. Suporta modos de e-mail (dedicado/compartilhado/pasta), filtragem de remetentes confiáveis com verificação E2E e configuração baseada em Docker.
Documentação
tutamcp
Servidor MCP que dá ao Claude acesso a uma conta Tuta: e-mail, calendário, contatos e drive. Cada módulo é habilitado independentemente. Construído sobre o TutaClient do tutaproxy — sem chamadas diretas à API do Tuta.
30 ferramentas MCP em 4 módulos. Requer tutaproxy-public ≥ v1.3.10.
Início rápido — Docker
A configuração mais fácil: nenhuma dependência local além do Docker. A imagem inclui o tutaproxy no momento da compilação.
git clone https://github.com/peix2/tutamcp-public.git
cd tutamcp-public
docker build -t tutamcp .
Fixe uma versão específica do tutaproxy (padrão: v1.3.15):
docker build --build-arg TUTAPROXY_REF=v1.3.15 -t tutamcp .
Nota sobre 2FA: fazer login em uma conta com autenticação de dois fatores requer tutaproxy ≥ v1.3.15. Referências mais antigas falharão no desafio do segundo fator.
Crie um arquivo de credenciais (chmod 600):
TUTA_EMAIL=your@tuta.com
TUTA_PASSWORD=yourpassword
# only for accounts with 2FA enabled — base32 secret from the Tuta app (spaces ignored):
#TUTA_TOTP_SECRET=jbsw y3dp ehpk 3pxp
Registre no Claude Code (.mcp.json ou ~/.claude.json):
{
"mcpServers": {
"tutamcp": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "/path/to/credentials.env:/creds.env:ro",
"-e", "TUTAMCP_CREDENTIALS_FILE=/creds.env",
"-e", "TUTAMCP_ENABLE_MAIL=1",
"-e", "TUTAMCP_MAIL_MODE=dedicated",
"-e", "TUTAMCP_OWNER_EMAIL=you@tuta.com",
"tutamcp"
]
}
}
}
Sem Docker
Requer Python 3.11 e um clone local de tutaproxy-public.
git clone https://github.com/peix2/tutamcp-public.git
cd tutamcp-public
pip install --target=.venv/lib/python3.11/site-packages -r requirements.txt
Registre no Claude Code:
{
"mcpServers": {
"tutamcp": {
"command": "python3.11",
"args": ["/path/to/tutamcp-public/run.py", "/path/to/tutamcp-public/server.py"],
"env": {
"TUTAPROXY_PATH": "/path/to/tutaproxy-public",
"TUTAMCP_CREDENTIALS_FILE": "/path/to/credentials.env",
"TUTAMCP_ENABLE_MAIL": "1",
"TUTAMCP_MAIL_MODE": "dedicated",
"TUTAMCP_OWNER_EMAIL": "you@tuta.com",
"TUTAMCP_DOWNLOAD_DIR": "/tmp/tutamcp"
}
}
}
}
Para o Claude Desktop, use o mesmo bloco em ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows).
Configuração
Consulte config.example.env para todas as variáveis. Opções principais:
Modos de e-mail
| Modo | Descrição |
|---|---|
dedicated | Conta pertence apenas ao Claude. Acesso total, envio habilitado por padrão. |
shared | Conta compartilhada com o usuário. Acesso total de leitura/escrita; política de envio controlada por TUTAMCP_MAIL_SEND. |
folder | Conta compartilhada; Claude vê apenas a pasta definida em TUTAMCP_MAIL_FOLDER. O envio é sempre somente resposta. |
Política de envio
TUTAMCP_MAIL_SEND=reply_only — apenas tuta_mail_reply é registrado; os destinatários são derivados apenas do e-mail original, nenhum endereço arbitrário é aceito.
TUTAMCP_MAIL_SEND=full — também registra tuta_mail_send para iniciar novas conversas.
Padrão: dedicated → full, shared → reply_only, folder → sempre reply_only.
Remetentes confiáveis
Usado para tratamento autônomo de e-mail (por exemplo, um poller em segundo plano que acorda o Claude para processar comandos recebidos).
| Variável | Descrição |
|---|---|
TUTAMCP_OWNER_EMAIL | Sempre confiável. |
TUTAMCP_COMMAND_WHITELIST | Lista separada por vírgulas de endereços confiáveis adicionais. |
TUTAMCP_TRUST_REQUIRE_E2E | 1 (padrão) — a confiança exige criptografia de ponta a ponta (Tuta→Tuta, TutaCrypt). Protege contra cabeçalhos From falsificados em e-mails externos; o proprietário e a lista de permissões devem usar contas Tuta. Defina como 0 para confiar apenas pelo endereço. |
TUTAMCP_MAIL_CC_OWNER | 1 — copia automaticamente o proprietário em todo e-mail enviado. |
tuta_mail_list e tuta_mail_read retornam trusted_sender: bool e e2e: bool em cada mensagem. Passe only_trusted=True para tuta_mail_list para filtrar apenas remetentes confiáveis.
Autenticação de dois fatores (2FA / TOTP)
Se a conta Tuta tiver um segundo fator habilitado, adicione o segredo TOTP às suas credenciais para que o tutamcp possa concluir o desafio de login:
TUTA_EMAIL=your@tuta.com
TUTA_PASSWORD=yourpassword
TUTA_TOTP_SECRET=jbsw y3dp ehpk 3pxp
TUTA_TOTP_SECRETé o segredo base32 mostrado pelo aplicativo Tuta quando você configura um autenticador (a mesma string por trás do código QR). Espaços e maiúsculas/minúsculas são ignorados, então você pode colá-lo exatamente como exibido.- Ele também pode ser passado como uma variável de ambiente simples em vez de via arquivo de credenciais. O valor é integrado ao login e nunca é registrado.
- O tutamcp calcula o código RFC 6238 de 6 dígitos no momento do login — você não registra um aplicativo autenticador separado para isso.
| Requisito | Detalhe |
|---|---|
| Versão do tutaproxy | ≥ v1.3.15 (defina TUTAPROXY_REF de acordo para Docker) |
| Fator suportado | Somente TOTP. Chaves de hardware U2F/WebAuthn não são suportadas para login programático. |
| Habilitar/desabilitar 2FA | Feito no aplicativo Tuta oficial — Configurações → Login → 2º fator. O tutamcp apenas consome o segredo; ele não pode adicionar ou remover fatores. |
| Segredo ausente | Se a conta exigir 2FA, mas TUTA_TOTP_SECRET não estiver definido, o login falha com um erro claro set TUTA_TOTP_SECRET em vez de travar. |
Trate o segredo como uma senha: mantenha-o no arquivo de credenciais chmod 600, fora do controle de versão.
Ferramentas
Status
| Ferramenta | Descrição |
|---|---|
tuta_status | Informações do servidor: versão, módulos habilitados, modo de e-mail/política de envio, estado da sessão |
| Ferramenta | Descrição |
|---|---|
tuta_mail_list_folders | Listar todas as pastas |
tuta_mail_list | Listar e-mails sem corpo. Suporta only_trusted, unread, paginação |
tuta_mail_read | Ler e-mail completo com corpo descriptografado e metadados de anexos |
tuta_mail_get_attachment | Baixar anexo para TUTAMCP_DOWNLOAD_DIR |
tuta_mail_send | Enviar novo e-mail (requer mail_send=full) |
tuta_mail_reply | Responder ao e-mail; destinatários derivados apenas do original |
tuta_mail_move | Mover para pasta |
tuta_mail_delete | Excluir permanentemente ou mover para a lixeira |
tuta_mail_mark | Marcar como lido/não lido |
tuta_mail_folder_create | Criar pasta personalizada |
tuta_mail_folder_rename | Renomear pasta personalizada |
tuta_mail_folder_delete | Excluir pasta personalizada |
tuta_mail_list_labels | Listar rótulos |
tuta_mail_apply_labels | Adicionar/remover rótulos em um e-mail |
Calendário
| Ferramenta | Descrição |
|---|---|
tuta_calendar_list_events | Listar eventos em um intervalo de datas (eventos recorrentes sempre incluídos) |
tuta_calendar_create_event | Criar evento com recorrência RRULE opcional |
tuta_calendar_update_event | Atualizar evento |
tuta_calendar_delete_event | Excluir evento |
Nota: editar uma única ocorrência de uma série recorrente não é suportado.
Contatos
| Ferramenta | Descrição |
|---|---|
tuta_contacts_list | Listar/pesquisar contatos por nome, empresa ou e-mail |
tuta_contacts_get | Obter detalhes completos do contato |
tuta_contacts_create | Criar contato |
tuta_contacts_update | Atualizar campos do contato |
tuta_contacts_delete | Excluir contato |
Drive
| Ferramenta | Descrição |
|---|---|
tuta_drive_list | Listar conteúdo da pasta por caminho |
tuta_drive_download | Baixar arquivo para TUTAMCP_DOWNLOAD_DIR |
tuta_drive_upload | Enviar arquivo local |
tuta_drive_mkdir | Criar pasta |
tuta_drive_rename | Renomear arquivo ou pasta |
tuta_drive_move | Mover arquivo ou pasta |
tuta_drive_delete | Excluir arquivo ou pasta |
O Drive requer uma conta Tuta paga. Contas gratuitas recebem um erro informativo em vez de uma falha.
Segurança
- As credenciais nunca são registradas. O servidor avisa se as permissões do arquivo de credenciais forem mais amplas que
600. - Todo o registro vai para
stderrou um arquivo de log.stdouté reservado para o protocolo MCP. - O registro de ferramentas é condicional: um módulo desabilitado não registra ferramentas — o Claude não as vê de forma alguma.
- No modo
folder, todas as operações são limitadas à pasta configurada; tentativas de acessar fora dela são rejeitadas no nível da ferramenta. - A política de somente resposta é aplicada estruturalmente:
tuta_mail_sendsimplesmente não é registrado, não é bloqueado em tempo de execução. - A travessia de caminho em downloads de anexos/drive é bloqueada (saneamento do nome base + regex).
Licença
AGPL-3.0 — veja LICENSE.