imap-mail-mcp
README.md
# imap-mail-mcp
An MCP (Model Context Protocol) server that lets Claude read, search, and send
email over standard IMAP/SMTP. Works with any provider that supports
username/password authentication over IMAP and SMTP — IONOS, GMX, Web.de, and
most other non-Gmail/non-Microsoft providers.
## Tools
| Tool | Description |
| --- | --- |
| `list_mailboxes` | List all folders (INBOX, Sent, Drafts, Trash, custom folders, ...) |
| `list_messages` | List the most recent messages in a mailbox |
| `search_messages` | Search by sender, recipient, subject, body text, or date range |
| `get_message` | Fetch the full text/HTML body and attachment metadata of one message |
| `mark_message` | Mark a message as read/unread or flagged/unflagged |
| `send_mail` | Send a new email or reply to an existing one |
## Setup
1. Install dependencies and build:
```bash
npm install
npm run build
```
2. Copy `.env.example` to `.env` and fill in your mailbox credentials (only
needed for local testing via `npm start` — see below for how credentials
are supplied when running through Claude Desktop).
3. If your provider supports 2FA / app-specific passwords, use one of those
instead of your main account password.
## Using it with Claude Desktop
Add an entry to your `claude_desktop_config.json`
(`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
```json
{
"mcpServers": {
"imap-mail": {
"command": "node",
"args": ["/absolute/path/to/imap-mail-mcp/dist/index.js"],
"env": {
"EMAIL_USER": "you@example.com",
"EMAIL_PASSWORD": "your-password-or-app-password",
"IMAP_HOST": "imap.example.com",
"IMAP_PORT": "993",
"SMTP_HOST": "smtp.example.com",
"SMTP_PORT": "587"
}
}
}
}
```
Restart Claude Desktop fully (quit and reopen) after editing the config.
## Environment variables
| Variable | Required | Default | Notes |
| --- | --- | --- | --- |
| `EMAIL_USER` | yes | — | Mailbox login (usually your email address) |
| `EMAIL_PASSWORD` | yes | — | Password or app-specific password |
| `IMAP_HOST` | yes | — | e.g. `imap.ionos.de` |
| `IMAP_PORT` | no | `993` | IMAP over implicit TLS |
| `SMTP_HOST` | yes | — | e.g. `smtp.ionos.de` |
| `SMTP_PORT` | no | `587` | STARTTLS; use `465` for implicit TLS |
For backwards compatibility, `IONOS_EMAIL`, `IONOS_PASSWORD`,
`IONOS_IMAP_HOST`, `IONOS_IMAP_PORT`, `IONOS_SMTP_HOST`, and
`IONOS_SMTP_PORT` are also accepted as aliases.
## Security notes
- Credentials are only ever read from environment variables. They are never
logged, written to disk, or included in any response text beyond what the
IMAP/SMTP server itself returns.
- Claude Desktop's `mcpServers` config stores the `env` block in plain text
on your machine. Anyone with access to your user account can read it, same
as any other locally saved password.
- `.env` is git-ignored — never commit real credentials.
## Requirements
- Node.js 18+
TDQS
A3.7/5.0
Scored across 6 tools
Disambiguation5/5
Each tool targets a distinct action: flagging, sending, listing mailboxes, listing messages, searching, and fetching. No overlaps or ambiguity.
Naming Consistency5/5
All tool names follow a consistent verb_noun pattern with lowercase and underscores (e.g., list_mailboxes, send_mail). No mixing of styles.
Tool Count5/5
Six tools is well-scoped for an email server, covering essential operations without being too few or overly numerous.
Completeness4/5
Covers core email tasks (list, send, search, read, flag) but lacks operations like delete/move messages or manage mailboxes, which are minor gaps.
Maintenance
ActivityStale
ResponsivenessNo issues