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

ModoDescrição
dedicatedConta pertence apenas ao Claude. Acesso total, envio habilitado por padrão.
sharedConta compartilhada com o usuário. Acesso total de leitura/escrita; política de envio controlada por TUTAMCP_MAIL_SEND.
folderConta 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ávelDescrição
TUTAMCP_OWNER_EMAILSempre confiável.
TUTAMCP_COMMAND_WHITELISTLista separada por vírgulas de endereços confiáveis adicionais.
TUTAMCP_TRUST_REQUIRE_E2E1 (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_OWNER1 — 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.
RequisitoDetalhe
Versão do tutaproxy≥ v1.3.15 (defina TUTAPROXY_REF de acordo para Docker)
Fator suportadoSomente TOTP. Chaves de hardware U2F/WebAuthn não são suportadas para login programático.
Habilitar/desabilitar 2FAFeito no aplicativo Tuta oficial — Configurações → Login → 2º fator. O tutamcp apenas consome o segredo; ele não pode adicionar ou remover fatores.
Segredo ausenteSe 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

FerramentaDescrição
tuta_statusInformações do servidor: versão, módulos habilitados, modo de e-mail/política de envio, estado da sessão

E-mail

FerramentaDescrição
tuta_mail_list_foldersListar todas as pastas
tuta_mail_listListar e-mails sem corpo. Suporta only_trusted, unread, paginação
tuta_mail_readLer e-mail completo com corpo descriptografado e metadados de anexos
tuta_mail_get_attachmentBaixar anexo para TUTAMCP_DOWNLOAD_DIR
tuta_mail_sendEnviar novo e-mail (requer mail_send=full)
tuta_mail_replyResponder ao e-mail; destinatários derivados apenas do original
tuta_mail_moveMover para pasta
tuta_mail_deleteExcluir permanentemente ou mover para a lixeira
tuta_mail_markMarcar como lido/não lido
tuta_mail_folder_createCriar pasta personalizada
tuta_mail_folder_renameRenomear pasta personalizada
tuta_mail_folder_deleteExcluir pasta personalizada
tuta_mail_list_labelsListar rótulos
tuta_mail_apply_labelsAdicionar/remover rótulos em um e-mail

Calendário

FerramentaDescrição
tuta_calendar_list_eventsListar eventos em um intervalo de datas (eventos recorrentes sempre incluídos)
tuta_calendar_create_eventCriar evento com recorrência RRULE opcional
tuta_calendar_update_eventAtualizar evento
tuta_calendar_delete_eventExcluir evento

Nota: editar uma única ocorrência de uma série recorrente não é suportado.

Contatos

FerramentaDescrição
tuta_contacts_listListar/pesquisar contatos por nome, empresa ou e-mail
tuta_contacts_getObter detalhes completos do contato
tuta_contacts_createCriar contato
tuta_contacts_updateAtualizar campos do contato
tuta_contacts_deleteExcluir contato

Drive

FerramentaDescrição
tuta_drive_listListar conteúdo da pasta por caminho
tuta_drive_downloadBaixar arquivo para TUTAMCP_DOWNLOAD_DIR
tuta_drive_uploadEnviar arquivo local
tuta_drive_mkdirCriar pasta
tuta_drive_renameRenomear arquivo ou pasta
tuta_drive_moveMover arquivo ou pasta
tuta_drive_deleteExcluir 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 stderr ou 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_send simplesmente 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.