Skip to main content
Glama
README.md
# Multi Mail

Gmail, Outlook, Hotmail, iCloud and Fastmail at once: search, read, draft, send and organise mail.

Multi Mail is a remote MCP server run by Lumman Ltd, London. It puts every mailbox you connect - Gmail, Outlook.com, Hotmail, Microsoft 365, iCloud and Fastmail - behind one connector, so an AI client can search all of them in one call and read, draft, send and organise mail in each. This repository holds what clients install: the manifests for Claude Code, Cursor and Gemini CLI, four skills and their evals. The server itself is not in it.

## Before you start

You need a Lumman account with at least one mailbox connected at https://lumman.co/mcp/account/multi-mail. Sign in there with Google, Microsoft, a passkey or an emailed code. Outlook, Hotmail and Microsoft 365 mailboxes connect with Microsoft sign-in, iCloud and Fastmail with an app password, and Gmail with Google sign-in while Google's preview has room; once it is full, a gmail.com or googlemail.com mailbox connects with an app password and a Google Workspace one waits for room. Each mailbox's permissions - reading, drafts, sending, organising and settings - are set on the same page.

## Add it to your client

### Claude

Open Multi Mail in Claude's connectors directory, https://claude.ai/directory/connectors/multi-mail, and press Connect. The listing connects at https://lumman.co/mcp/mail.

### Claude Code

```
/plugin marketplace add lumman-lab/multi-mail
/plugin install multi-mail@multi-mail
```

The plugin adds the connector at https://lumman.co/mcp/mail and the four skills below. The first time a skill reaches the connector, Claude Code asks you to sign in; if it does not, run `/mcp` and choose the multi-mail server.

### Cursor

Add the connector to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "multi-mail": { "url": "https://mail.lumman.co/mcp" }
  }
}
```

### VS Code

Run `MCP: Add Server`, choose `HTTP`, paste `https://mail.lumman.co/mcp` and name it `multi-mail`. Or add it to your user `mcp.json`:

```json
{
  "servers": {
    "multi-mail": { "type": "http", "url": "https://mail.lumman.co/mcp" }
  }
}
```

### Gemini CLI

```
gemini extensions install https://github.com/lumman-lab/multi-mail
```

The extension adds the connector at https://mail.lumman.co/mcp and the four skills below. Its first call opens Lumman's sign-in in your browser; `/mcp auth multi-mail` opens it again.

### ChatGPT

1. For iCloud or Fastmail, add the mailbox first in your account, under Another mailbox.
2. Open chatgpt.com/plugins, press +, then Add custom MCP server.
3. Name it Multi Mail, paste `https://mail.lumman.co/mcp`, choose OAuth, tick the box and press Create as a plugin.
4. Install it. On the Lumman page, sign in, add a mailbox if none is connected, and approve.
5. In a chat, type @ and choose Multi Mail.

### Any other client

Add a remote MCP server at `https://mail.lumman.co/mcp`: Streamable HTTP, OAuth 2.1 with dynamic client registration. No key or client id is needed.

## Signing in

The connector answers a client's first call with where to sign in. The client registers itself with Lumman's authorisation server and opens a Lumman page that names it: sign in, add a mailbox if none is connected, and approve. Every client you approve is listed under Connected AI clients at https://lumman.co/mcp/account/multi-mail, where its access can be taken back.

## Skills

Claude Code and Gemini CLI load four skills with the connector, and pick one by themselves when a request matches it. In Claude Code each is also a command, such as `/multi-mail:triage`.

- `triage` - what is waiting across every mailbox: what needs a reply, what needs a decision, what can wait. Changes nothing.
- `attachments` - what a PDF (scanned pages included), Word, Excel or PowerPoint attachment says, read as text.
- `drafting` - a new message, reply or forward written as a draft and shown to you, then sent only after you say yes to that draft.
- `labels` - duplicate labels (Outlook categories), and in Gmail unused ones, found and a merge proposed, with nothing changed until you agree.

Examples:

- "What in my Outlook and Gmail still needs a reply?"
- "What total does the invoice Dana sent to my Hotmail come to?"
- "Reply to Sam in Outlook that Friday works, and show me before it goes."

## Tools

| Tool | Name | What it does |
|---|---|---|
| `mailboxes_list` | List mailboxes | The mailboxes this account holds, by name |
| `messages_list` | Search a mailbox | One mailbox, in its provider's search terms |
| `messages_list_all_mailboxes` | Search every mailbox | Every mailbox at once, newest first |
| `threads_get` | Read a thread | Every message in one thread |
| `messages_get` | Read a message | One message, with its headers and body |
| `messages_attachments_get` | Read an attachment | What one attachment holds |
| `drafts_create` | Draft a message | Composes a message kept as a draft |
| `drafts_update` | Edit a draft | Replaces what a draft says |
| `drafts_reply` | Draft a reply | A reply, drafted inside its thread |
| `drafts_forward` | Draft a forward | A forward with its files, as a draft |
| `drafts_delete` | Discard a draft | Throws a draft away, nothing sent is touched |
| `messages_send` | Send a message | Composes a new message and sends it |
| `drafts_send` | Send a draft | Sends a draft out of the mailbox |
| `messages_reply` | Reply to a message | Sends a reply inside the message's thread |
| `messages_forward` | Forward a message | Sends a message on, with its files |
| `labels_list` | List labels | The labels the mailbox holds, with their ids |
| `labels_create` | Create a label | Creates a label and returns its id |
| `labels_update` | Edit a label | Renames or recolours a label |
| `labels_delete` | Delete a label | Deletes a label, every message stays |
| `threads_modify` | Label a thread | Adds or removes the labels a thread holds |
| `threads_archive` | Archive a thread | Out of the inbox, still in search |
| `threads_trash` | Move a thread to the trash | Into the trash, where the provider keeps it |
| `threads_untrash` | Restore a thread from the trash | Back out of the trash |
| `settings_filters_list` | List filters | The rules incoming mail is filed by |
| `settings_filters_create` | Create a filter | Files incoming mail - no forward, bin or junk |
| `settings_filters_delete` | Delete a filter | Deletes a rule, filed mail stays put |
| `settings_send_as_patch` | Edit the signature | Replaces the mailbox's own signature |
| `settings_send_as_get` | Read the signature | The mailbox's own signature, as it stands |
| `settings_get_vacation` | Read the vacation responder | Whether it replies, and what it says |
| `settings_update_vacation` | Set the vacation responder | Turns it on or off, and what it says |

## Where your mail goes

Claude and Claude Code send every call to https://lumman.co/mcp/mail, every other client to https://mail.lumman.co/mcp - two addresses of one server, run by Lumman. Signing in runs through the authorisation server those addresses name. Lumman keeps no copy of your mail: each message and attachment is fetched from its provider when a client asks, its words are screened for prompt attacks by Google Cloud's Model Armor - an attachment asked for as the original file is not - and the mail is passed on only to the client you approved. What the connector passes on, and to whom, is in the privacy policy: https://lumman.co/privacy.

The drafting skill asks the client to show a draft and wait for your yes. What the connector itself enforces is each mailbox's permission to send, set at https://lumman.co/mcp/account/multi-mail: with sending off, nothing is sent, whatever a client asks.

## Limits

- Gmail sign-in is in Google's preview, which admits a fixed number of accounts; once its places are spent, a gmail.com or googlemail.com mailbox connects with an app password, and a Google Workspace one waits for room.
- Discarding a draft, and reading or setting a signature, work only in Gmail mailboxes connected with Google sign-in.
- Microsoft lets an Outlook category take a new colour, never a new name.
- Mailboxes connected with an app password - iCloud, Fastmail and Gmail - take every tool except filters, the vacation responder, the signature and discarding a draft. iCloud and Fastmail labels are their folders, as your own mail app shows them, and the labels skill leaves them alone.
- Each account has a daily allowance of tool calls; past it, a call is refused with the time the next one is available.
- Mail whose words screen as a prompt attack is refused rather than passed on, and a call whose screening cannot finish is closed.

## Evals

`claude plugin eval .` runs four cases, one per skill, against invented Hotmail and Gmail mailboxes answered from fixed mock files under `evals/`.

To see what the skills add, every case ran in two setups with the connector's tools in place: once with the plugin as shipped, once with its `skills/` folder removed (`claude plugin eval <copy> --ablation none`). Run on 18 October 2026 with Claude Code 2.1.292, model claude-sonnet-5-5 and the CLI's default Haiku judge, three runs per case each way:

- triage - lists the two threads waiting for a reply and nothing else: 3 of 3 with the skills and 3 of 3 without. The skill adds nothing measurable here.
- attachments - gives the total and due date read off the invoice PDF: 3 of 3 with and without. The skill adds nothing measurable here.
- drafting - saves the reply as a draft, shows it and asks before sending: 3 of 3 with, 0 of 3 without; without the skills Claude sent the reply at once in every run.
- labels - proposes the merge and asks before changing anything: 3 of 3 with, 0 of 3 without; without them Claude re-labelled messages before asking in every run.

Overall score 1.00 with the skills and 0.74 without. Three runs per case is a small sample, and the mocks answer the same whatever Claude changes.

## Security

Report a vulnerability privately through GitHub, as [SECURITY.md](SECURITY.md) describes.

## Support

Write to the address under Contact Us in Lumman's privacy policy: https://lumman.co/privacy.

## Licence

The files in this repository are under the MIT licence in [LICENSE](LICENSE). The Multi Mail service they connect to is provided under Lumman's terms: https://lumman.co/terms.