Introduction

A read-only MCP server for reading your mail over IMAP, provider-agnostic by design.

rubit-mcp-mail

A read-only MCP server for reading your mail. Provider-agnostic: it speaks IMAP, so it works with Outlook.com, Gmail, Fastmail, iCloud, or a self-hosted server — the provider is a line of config, not a code change.

Read-only by construction. Folders are opened with EXAMINE, never SELECT, and bodies are fetched with BODY.PEEK, so reading a message does not even mark it as read. There are no send, move, delete, or flag code paths, and a test asserts none are ever added. See Security for the full story.

What you get

Six tools your assistant can call, all of them reads:

ToolWhat it does
list_accountsConfigured accounts and whether each is authenticated
list_foldersFolders with normalized roles and unread counts
list_messagesBrowse a folder, newest first, paginated
search_messagesServer-side search by text, sender, subject, date range, unread
read_messageFull headers, body text, attachment metadata
get_attachmentSave one attachment into the download directory

Full signatures, arguments and return shapes are in the Tools reference.

Where to start

Install

One file, nothing to install first. It configures your mailbox and registers itself with Claude.

Connect a mailbox

Outlook needs an Azure app registration; everything else needs an app password.

CLI reference

serve, install, auth, doctor, gui, permissions, uninstall.

Troubleshooting

Logs, the stripped-environment keyring problem, and how to reproduce it.

Requirements

  • Using the installer: nothing. Python and every dependency are inside the one file.
  • From source: Python 3.11 or newer.
  • Platforms: Windows and Linux installers are published. macOS is build-from-source only.