Labsco
peix2 logo

tutamcp

from peix2

MCP server giving Claude access to Tuta mail, calendar, contacts and drive. Supports mail modes (dedicated/shared/folder), trusted sender filtering with E2E verification, and Docker-based setup.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeQuick setup

tutamcp

MCP server giving Claude access to a Tuta account: mail, calendar, contacts, and drive. Each module is enabled independently. Built on top of tutaproxy's TutaClient β€” no direct Tuta API calls.

30 MCP tools across 4 modules. Requires tutaproxy-public β‰₯ v1.3.10.

Without Docker

Requires Python 3.11 and a local clone of 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

Register in 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"
      }
    }
  }
}

For Claude Desktop, use the same block in ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows).

Tools

Status

ToolDescription
tuta_statusServer info: version, enabled modules, mail mode/send policy, session state

Mail

ToolDescription
tuta_mail_list_foldersList all folders
tuta_mail_listList emails without body. Supports only_trusted, unread, pagination
tuta_mail_readRead full email with decrypted body and attachment metadata
tuta_mail_get_attachmentDownload attachment to TUTAMCP_DOWNLOAD_DIR
tuta_mail_sendSend new email (requires mail_send=full)
tuta_mail_replyReply to email; recipients derived from original only
tuta_mail_moveMove to folder
tuta_mail_deleteDelete permanently or move to trash
tuta_mail_markMark as read/unread
tuta_mail_folder_createCreate custom folder
tuta_mail_folder_renameRename custom folder
tuta_mail_folder_deleteDelete custom folder
tuta_mail_list_labelsList labels
tuta_mail_apply_labelsAdd/remove labels on a mail

Calendar

ToolDescription
tuta_calendar_list_eventsList events in a date range (recurring events always included)
tuta_calendar_create_eventCreate event with optional RRULE recurrence
tuta_calendar_update_eventUpdate event
tuta_calendar_delete_eventDelete event

Note: editing a single occurrence of a recurring series is not supported.

Contacts

ToolDescription
tuta_contacts_listList/search contacts by name, company, or email
tuta_contacts_getGet full contact details
tuta_contacts_createCreate contact
tuta_contacts_updateUpdate contact fields
tuta_contacts_deleteDelete contact

Drive

ToolDescription
tuta_drive_listList folder contents by path
tuta_drive_downloadDownload file to TUTAMCP_DOWNLOAD_DIR
tuta_drive_uploadUpload local file
tuta_drive_mkdirCreate folder
tuta_drive_renameRename file or folder
tuta_drive_moveMove file or folder
tuta_drive_deleteDelete file or folder

Drive requires a paid Tuta account. Free accounts receive an informative error rather than a crash.

Security

  • Credentials are never logged. The server warns if the credentials file permissions are wider than 600.
  • All logging goes to stderr or a log file. stdout is reserved for the MCP protocol.
  • Tool registration is conditional: a disabled module registers no tools β€” Claude doesn't see them at all.
  • In folder mode, all operations are scoped to the configured folder; attempts to access outside it are rejected at the tool level.
  • Reply-only policy is enforced structurally: tuta_mail_send is simply not registered, not blocked at runtime.
  • Path traversal on attachment/drive downloads is blocked (basename sanitization + regex).