# 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/)