tutamcp

Servidor MCP que otorga a Claude acceso a Tuta mail, calendario, contactos y drive. Soporta modos de correo (dedicado/compartido/carpeta), filtrado de remitentes de confianza con verificación E2E y configuración basada en Docker.

Documentación

tutamcp

Servidor MCP que le da a Claude acceso a una cuenta de Tuta: correo, calendario, contactos y drive. Cada módulo se habilita de forma independiente. Construido sobre el TutaClient de tutaproxy — sin llamadas directas a la API de Tuta.

30 herramientas MCP en 4 módulos. Requiere tutaproxy-public ≥ v1.3.10.

Inicio rápido — Docker

La configuración más sencilla: sin dependencias locales más allá de Docker. La imagen incluye tutaproxy en el momento de la compilación.

git clone https://github.com/peix2/tutamcp-public.git
cd tutamcp-public
docker build -t tutamcp .

Fija una versión específica de tutaproxy (por defecto: v1.3.15):

docker build --build-arg TUTAPROXY_REF=v1.3.15 -t tutamcp .

Nota sobre 2FA: iniciar sesión en una cuenta con autenticación de dos factores requiere tutaproxy ≥ v1.3.15. Las referencias más antiguas fallarán en el desafío del segundo factor.

Crea un archivo de credenciales (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

Regístrate en Claude Code (.mcp.json o ~/.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"
      ]
    }
  }
}

Sin Docker

Requiere Python 3.11 y un clon 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

Regístrate en 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 Claude Desktop, usa el mismo bloque en ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows).

Configuración

Consulta config.example.env para todas las variables. Opciones clave:

Modos de correo

ModoDescripción
dedicatedLa cuenta pertenece solo a Claude. Acceso completo, envío habilitado por defecto.
sharedCuenta compartida con el usuario. Acceso completo de lectura/escritura; la política de envío está controlada por TUTAMCP_MAIL_SEND.
folderCuenta compartida; Claude solo ve la carpeta configurada en TUTAMCP_MAIL_FOLDER. El envío es siempre solo de respuesta.

Política de envío

TUTAMCP_MAIL_SEND=reply_only — solo se registra tuta_mail_reply; los destinatarios se derivan únicamente del correo original, no se aceptan direcciones arbitrarias.

TUTAMCP_MAIL_SEND=full — también registra tuta_mail_send para iniciar nuevos hilos.

Por defecto: dedicated → full, shared → reply_only, folder → siempre reply_only.

Remitentes de confianza

Se usan para el manejo autónomo del correo (por ejemplo, un sondeo en segundo plano que despierta a Claude para procesar comandos entrantes).

VariableDescripción
TUTAMCP_OWNER_EMAILSiempre de confianza.
TUTAMCP_COMMAND_WHITELISTLista separada por comas de direcciones de confianza adicionales.
TUTAMCP_TRUST_REQUIRE_E2E1 (por defecto) — la confianza requiere cifrado de extremo a extremo (Tuta→Tuta, TutaCrypt). Protege contra cabeceras From falsificadas en correos externos; el propietario y la lista blanca deben usar cuentas de Tuta. Configúralo en 0 para confiar solo por dirección.
TUTAMCP_MAIL_CC_OWNER1 — envía automáticamente una copia al propietario en cada correo saliente.

tuta_mail_list y tuta_mail_read devuelven trusted_sender: bool y e2e: bool en cada mensaje. Pasa only_trusted=True a tuta_mail_list para filtrar solo a remitentes de confianza.

Autenticación de dos factores (2FA / TOTP)

Si la cuenta de Tuta tiene un segundo factor habilitado, añade su secreto TOTP a tus credenciales para que tutamcp pueda completar el desafío de inicio de sesión:

TUTA_EMAIL=your@tuta.com
TUTA_PASSWORD=yourpassword
TUTA_TOTP_SECRET=jbsw y3dp ehpk 3pxp
  • TUTA_TOTP_SECRET es el secreto base32 que muestra la aplicación de Tuta cuando configuras un autenticador (la misma cadena detrás del código QR). Los espacios y las mayúsculas/minúsculas se ignoran, así que puedes pegarlo tal como se muestra.
  • También se puede pasar como una variable de entorno simple en lugar de mediante el archivo de credenciales. El valor se integra en el inicio de sesión y nunca se registra.
  • tutamcp calcula el código RFC 6238 de 6 dígitos en el momento del inicio de sesión — no necesitas registrar una aplicación de autenticador separada para ello.
RequisitoDetalle
Versión de tutaproxy≥ v1.3.15 (configura TUTAPROXY_REF en consecuencia para Docker)
Factor compatibleSolo TOTP. Las claves de hardware U2F/WebAuthn no son compatibles con el inicio de sesión programático.
Habilitar/deshabilitar 2FASe hace en la aplicación oficial de Tuta — Configuración → Inicio de sesión → Segundo factor. tutamcp solo consume el secreto; no puede añadir ni eliminar factores.
Secreto faltanteSi la cuenta requiere 2FA pero TUTA_TOTP_SECRET no está configurado, el inicio de sesión falla con un error claro de set TUTA_TOTP_SECRET en lugar de quedarse colgado.

Trata el secreto como una contraseña: mantenlo en el archivo de credenciales chmod 600, fuera del control de versiones.

Herramientas

Estado

HerramientaDescripción
tuta_statusInformación del servidor: versión, módulos habilitados, modo de correo/política de envío, estado de la sesión

Correo

HerramientaDescripción
tuta_mail_list_foldersLista todas las carpetas
tuta_mail_listLista correos sin cuerpo. Compatible con only_trusted, unread, paginación
tuta_mail_readLee el correo completo con el cuerpo descifrado y los metadatos de los adjuntos
tuta_mail_get_attachmentDescarga el adjunto a TUTAMCP_DOWNLOAD_DIR
tuta_mail_sendEnvía un nuevo correo (requiere mail_send=full)
tuta_mail_replyResponde al correo; los destinatarios se derivan solo del original
tuta_mail_moveMueve a una carpeta
tuta_mail_deleteElimina permanentemente o mueve a la papelera
tuta_mail_markMarca como leído/no leído
tuta_mail_folder_createCrea una carpeta personalizada
tuta_mail_folder_renameRenombra una carpeta personalizada
tuta_mail_folder_deleteElimina una carpeta personalizada
tuta_mail_list_labelsLista etiquetas
tuta_mail_apply_labelsAñade/elimina etiquetas en un correo

Calendario

HerramientaDescripción
tuta_calendar_list_eventsLista eventos en un rango de fechas (los eventos recurrentes siempre se incluyen)
tuta_calendar_create_eventCrea un evento con recurrencia RRULE opcional
tuta_calendar_update_eventActualiza un evento
tuta_calendar_delete_eventElimina un evento

Nota: no se admite editar una única ocurrencia de una serie recurrente.

Contactos

HerramientaDescripción
tuta_contacts_listLista/busca contactos por nombre, empresa o correo
tuta_contacts_getObtiene los detalles completos del contacto
tuta_contacts_createCrea un contacto
tuta_contacts_updateActualiza los campos de un contacto
tuta_contacts_deleteElimina un contacto

Drive

HerramientaDescripción
tuta_drive_listLista el contenido de una carpeta por ruta
tuta_drive_downloadDescarga un archivo a TUTAMCP_DOWNLOAD_DIR
tuta_drive_uploadSube un archivo local
tuta_drive_mkdirCrea una carpeta
tuta_drive_renameRenombra un archivo o carpeta
tuta_drive_moveMueve un archivo o carpeta
tuta_drive_deleteElimina un archivo o carpeta

Drive requiere una cuenta de Tuta de pago. Las cuentas gratuitas reciben un error informativo en lugar de un fallo.

Seguridad

  • Las credenciales nunca se registran. El servidor advierte si los permisos del archivo de credenciales son más amplios que 600.
  • Todo el registro va a stderr o a un archivo de registro. stdout está reservado para el protocolo MCP.
  • El registro de herramientas es condicional: un módulo deshabilitado no registra herramientas — Claude no las ve en absoluto.
  • En el modo folder, todas las operaciones están limitadas a la carpeta configurada; los intentos de acceder fuera de ella se rechazan a nivel de herramienta.
  • La política de solo respuesta se aplica estructuralmente: tuta_mail_send simplemente no está registrado, no se bloquea en tiempo de ejecución.
  • El recorrido de rutas en las descargas de adjuntos/drive está bloqueado (saneamiento del nombre base + regex).

Licencia

AGPL-3.0 — consulta LICENSE.