IMAP Email MCP Server
# IMAP Email MCP Server
A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that provides email capabilities to Claude Code, Claude Desktop, Cursor, and other MCP-compatible AI tools. Connect to any IMAP/SMTP email provider to read, search, compose, and manage emails directly from your AI assistant.
## Quick Start
### Claude Code (CLI)
**Important:** Claude Code CLI uses `claude mcp add`, not config files.
```bash
claude mcp add imap-email -s user \
-e IMAP_USER=you@example.com \
-e IMAP_PASSWORD='your-app-password' \
-e IMAP_HOST=imap.example.com \
-- npx -y imap-email-mcp
```
> **Note:** If your password contains special shell characters (`%`, `^`, `*`, `$`, `!`, etc.), wrap it in single quotes as shown above.
> **Note:** Restart Claude Code after adding an MCP for the new tools to become available.
Verify with:
```bash
claude mcp list
claude mcp get imap-email
```
Remove with:
```bash
claude mcp remove imap-email -s user
```
### Cursor
Add new MCP server:
- **Name:** `imap-email`
- **Type:** `command`
- **Command:** `npx -y imap-email-mcp`
Then set environment variables in Cursor's MCP settings:
```
IMAP_USER=your-email@example.com
IMAP_PASSWORD=your-app-password
IMAP_HOST=imap.example.com
```
### Claude Desktop
Add to your config file:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"imap-email": {
"command": "npx",
"args": ["-y", "imap-email-mcp"],
"env": {
"IMAP_USER": "your-email@example.com",
"IMAP_PASSWORD": "your-app-password",
"IMAP_HOST": "imap.example.com"
}
}
}
}
```
## Features
- **Read emails** - List and read emails from any folder
- **Search** - Search by subject, sender, or body content
- **Compose** - Create and save email drafts
- **Send** - Send emails directly via SMTP
- **Manage drafts** - List, read, update, and delete drafts
- **Delete emails** - Remove unwanted messages
- **Multi-provider support** - Works with Gmail, Outlook, Yahoo, Fastmail, and any standard IMAP provider
## Configuration
### Required Environment Variables
| Variable | Description |
|----------|-------------|
| `IMAP_USER` | Your email address |
| `IMAP_PASSWORD` | App password (not your main password!) |
| `IMAP_HOST` | IMAP server hostname |
### Optional Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `IMAP_PORT` | `993` | IMAP port |
| `IMAP_TLS` | `true` | Use TLS |
| `SMTP_HOST` | Same as IMAP_HOST | SMTP server hostname |
| `SMTP_PORT` | `465` | SMTP port |
| `SMTP_SECURE` | `true` | Use secure SMTP |
### Provider Settings
| Provider | IMAP_HOST | SMTP_HOST | Notes |
|----------|-----------|-----------|-------|
| **Gmail** | `imap.gmail.com` | `smtp.gmail.com` | [Create App Password](https://myaccount.google.com/apppasswords) |
| **Outlook** | `outlook.office365.com` | `smtp.office365.com` | Use port 587, SMTP_SECURE=false |
| **Yahoo** | `imap.mail.yahoo.com` | `smtp.mail.yahoo.com` | Generate App Password in settings |
| **Fastmail** | `imap.fastmail.com` | `smtp.fastmail.com` | App Password from Privacy & Security |
| **iCloud** | `imap.mail.me.com` | `smtp.mail.me.com` | [Generate App Password](https://appleid.apple.com/) |
## Available Tools
| Tool | Description |
|------|-------------|
| `list_folders` | List all email folders/mailboxes |
| `list_emails` | List emails with optional filtering |
| `get_email` | Get full email content by UID |
| `search_emails` | Search by subject, sender, or body |
| `list_drafts` | List all draft emails |
| `get_draft` | Get a specific draft by UID |
| `create_draft` | Create a new email draft |
| `update_draft` | Update an existing draft |
| `send_email` | Send an email directly |
| `delete_email` | Delete an email by UID |
## Usage Examples
Once configured, use natural language:
- "Check my inbox for unread emails"
- "Search for emails from john@example.com"
- "Create a draft email to sarah@example.com about the meeting tomorrow"
- "Show me my drafts folder"
## Security Best Practices
1. **Use App Passwords** - Never use your main account password
2. **Environment Variables** - Store credentials in env vars, not in code
3. **Review Before Sending** - Use `create_draft` instead of `send_email` to review first
## Troubleshooting
**Authentication failed**
- Verify your app password is correct
- Ensure IMAP access is enabled in your email provider's settings
**Drafts folder not found**
- The server tries common names (`Drafts`, `INBOX.Drafts`, `[Gmail]/Drafts`)
- Your provider may use a different folder name
**Connection timeout**
- Check your `IMAP_HOST` is correct
- Verify port 993 is not blocked by firewall
## Alternative Installation
### Install globally
```bash
npm install -g imap-email-mcp
imap-email-mcp
```
### Clone and run
```bash
git clone https://github.com/jdickey1/imap-email-mcp.git
cd imap-email-mcp
npm install
node index.js
```
## License
MIT License - see [LICENSE](LICENSE) for details.
## Links
- [npm package](https://www.npmjs.com/package/imap-email-mcp)
- [GitHub repo](https://github.com/jdickey1/imap-email-mcp)
- [MCP Protocol](https://modelcontextprotocol.io/)
TDQS
Scored across 10 tools
Every tool has a clearly distinct purpose with no ambiguity. For example, list_emails retrieves emails from a folder, while search_emails filters by content, and get_email fetches full content of a specific email. The draft-related tools (create_draft, get_draft, list_drafts, update_draft) are well-separated from email management tools, ensuring agents can easily select the right tool for each task.
All tool names follow a consistent verb_noun pattern using snake_case, such as list_folders, create_draft, and send_email. This predictability makes the tool set easy to navigate and understand, with no deviations in naming conventions across the ten tools.
With 10 tools, the server is well-scoped for email management via IMAP. Each tool earns its place by covering essential operations like listing, creating, retrieving, updating, and deleting emails and drafts, without being overly sparse or bloated for the domain.
The tool surface provides strong coverage for core email workflows, including CRUD operations for emails and drafts, folder management, and sending. A minor gap is the lack of tools for moving emails between folders or marking them as read/unread, but agents can work around this with the existing tools for basic email handling.