Multi Mail
Gmail, Outlook, Hotmail, iCloud and Fastmail mailboxes - several at once, one search across all.
What it can do
What data it sees
Do you need an account
No: the server works without sign-in
Gmail, Outlook, Hotmail, iCloud and Fastmail mailboxes - several at once, one search across all.
How to connect
How to connect Multi Mail to Claude
The server address to paste into Claude settings:
https://lumman.co/mcp/mail
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Multi Mail to ChatGPT
The server address to paste into ChatGPT settings:
https://lumman.co/mcp/mail
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Multi Mail to Cursor
The server address to paste into Cursor settings:
https://lumman.co/mcp/mail
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (30)
Raw names from tools/list. Only developers need these.
| mailboxes_list | List the connected mailboxes that answer, each by the name a tool's mailbox input takes, and the tools its provider does not offer. The mail of every mailbox mailboxes_list names is read and written with Multi Mail's tools. |
| messages_list | Search one connected mailbox in its own provider's query language, Gmail's or Outlook's. The mail of every mailbox mailboxes_list names is read and written with Multi Mail's tools. |
| messages_list_all_mailboxes | Search every mailbox you have connected in one call. The answer names the mailbox each result came from, names any mailbox it could not search, and is merged newest first by when each message arrived, a thread by its newest. The mail of every mailbox mailboxes_list names is read and written with Multi Mail's tools. |
| threads_get | Read every message of one thread in a connected mailbox, oldest first. |
| messages_get | Read one message in a connected mailbox, with its headers and its body. |
| drafts_create | Compose a message in a connected mailbox and keep it there as a draft. |
| drafts_update | Change a draft in a connected mailbox. A field the call leaves out stays as the draft has it. A mailbox whose provider is imap keeps the edited draft under a new id the answer names, and the old id then reads nothing; an old version its server did not remove stays in Drafts, named as previousVersionId. |
| drafts_reply | Compose a reply to a message as a draft, inside the thread it answers and quoting it below the reply: to whoever wrote it, or with replyAll to everyone on it. Nothing leaves the mailbox until the draft is sent. |
| drafts_forward | Compose a forward of a message as a draft, with the files it carries and inside the thread it already sits in. Nothing leaves the mailbox until the draft is sent. |
| drafts_delete | Throw away a draft. Nothing already sent is touched. Gmail mailboxes only: an Outlook draft keeps its identifier once sent, so discarding one could delete sent mail. |
| messages_send | Compose a new message in a connected mailbox and send it in one call. Call this only when the person asked for this message to go; when they asked to prepare one, draft it instead. A request id already spent sends nothing again: the answer says whether that send went or may have gone. |
| drafts_send | Send a draft. It leaves the mailbox and consumes the draft. Only a draft is sent: a message already sent or received is refused, and nothing leaves. Call this only when the person asked for this message to go; when they asked to prepare one, draft it instead. A request id already spent sends nothing again: the answer says whether that send went or may have gone. |
| messages_reply | Reply to a message, inside its own thread and quoting it below the reply: to whoever wrote it, or with replyAll to everyone on it. Call this only when the person asked for this message to go; when they asked to prepare one, draft it instead. A request id already spent sends nothing again: the answer says whether that send went or may have gone. |
| messages_forward | Forward one message to the addresses you name, with the files it carries, inside the thread it already sits in. Only the provider's own limit applies to what it carries. Call this only when the person asked for this message to go; when they asked to prepare one, draft it instead. A request id already spent sends nothing again: the answer says whether that send went or may have gone. |
| labels_list | List the labels a connected mailbox holds, by the id each is applied by. A mailbox whose provider is imap holds its folders as labels, nested by /, beside UNREAD, STARRED and SPAM. |
| labels_create | Create a label in a connected mailbox and answer the id it is applied by. In a Gmail mailbox, and as a folder in one whose provider is imap, a / nests it under the label before it, made first where missing; in an Outlook mailbox a / is just a character. |
| labels_update | Rename a label, recolour it, or both. The id comes from labels_list. An Outlook mailbox's categories are its labels, and Microsoft lets one take only a new colour. A mailbox whose provider is imap renames its folder, which takes no colour, and answers the label's new id. |
| labels_delete | Delete one label, by its id from labels_list. No message is deleted: in a Gmail mailbox whose provider is google the label comes off every message; an Outlook mailbox's category leaves its list, and the messages that carried it keep its name. A mailbox whose provider is imap, a Gmail one included, deletes only a folder holding no mail and no folder. |
| threads_modify | Apply and remove labels on one thread, or one message of it - an Outlook mailbox's categories are its labels. The ids come from labels_list. Adding SPAM junks it, and taking SPAM off brings it back to the inbox. In a Gmail mailbox adding TRASH bins it too; an Outlook mailbox takes UNREAD and STARRED beside its categories and SPAM, and no other id; a Gmail mailbox whose provider is imap takes only UNREAD, STARRED, SPAM and its own labels, several a call, as Gmail does, each message keeping its id; any other mailbox whose provider is imap takes only UNREAD, STARRED, SPAM and its folders' labels, one folder a call: adding a folder's label moves the inbox messages into it and removing it moves its messages back to the inbox, each message moved taking a new id, which the answer names. |
| threads_archive | Take one thread out of the inbox: a Gmail mailbox, whatever its provider, takes its inbox label off, and an Outlook one moves it into its archive folder. It stays in the mailbox and in search. Any other mailbox whose provider is imap moves its inbox messages into its archive folder, made as Archive where it has none, each under a new id the answer names. |
| threads_trash | Move one thread, or one message of it, to the trash - Gmail's bin, an Outlook mailbox's Deleted Items, the trash folder of a mailbox whose provider is imap - where it stays until threads_untrash brings it back or the provider's own retention ends it. A Gmail mailbox whose provider is imap keeps every label but the inbox on it and each message its id; in any other mailbox whose provider is imap each moved message takes a new id, which the answer names. |
| threads_untrash | Bring one thread, or one message of it, back out of the trash. An Outlook mailbox and a mailbox whose provider is imap put a draft back in its drafts, the owner's own mail in sent mail and the rest in the inbox - a Gmail one with every label it carried, each message keeping its id, any other imap one each under a new id the answer names. |
| messages_attachments_get | Read one attachment of a message. The answer is what it says, as plain text; with as original it is the file itself, base64. messages_get and threads_get name a message's attachments and their sizes. Either answer names the address the original is served at whole, to a GET carrying this same credential. |
| settings_filters_list | List the rules a connected mailbox files incoming mail by. |
| settings_filters_create | Create a rule that files incoming mail in a connected mailbox. A rule that carries mail out of the mailbox, or that bins or junks what it matches, is refused, whether or not the provider would take it. An Outlook mailbox's rule files only under labels or out of the inbox (removeLabelIds INBOX). |
| settings_filters_delete | Delete one rule by its id. Mail it already filed stays where it is. |
| settings_send_as_patch | Replace the signature on the mailbox's own send-as identity. Nothing of the old one is kept, so read it first with settings_send_as_get. An empty signature clears it. Gmail mailboxes only: an Outlook mailbox exposes no signature to write. |
| settings_send_as_get | Read the signature on the mailbox's own send-as identity, as HTML. A mailbox with no signature answers without one. Gmail mailboxes only: an Outlook mailbox exposes no signature to read. |
| settings_get_vacation | Read whether a connected mailbox answers mail automatically, what it says, and any schedule or restriction it carries. |
| settings_update_vacation | Turn the vacation responder on or off. A Gmail mailbox replaces the whole responder, so a schedule or a restriction it already held is not kept; an Outlook mailbox keeps what this call does not name, and holds no subject. |