universal-mail-mcp
by oscar23445
README.md
# Universal Mail MCP Server
> **⚠️ BETA SOFTWARE:** This project is in beta and has not been fully tested. Use at your own risk. Please report any issues on GitHub.
A cross-platform MCP (Model Context Protocol) server that provides Claude with email access via IMAP. Works on **macOS, Windows, and Linux** with any IMAP-compatible email provider.
## Platform Support
| Platform | Supported | Notes |
|----------|-----------|-------|
| macOS | ✅ Yes | Full support |
| Windows | ✅ Yes | Full support |
| Linux | ✅ Yes | Full support |
### Supported Email Providers
| Provider | IMAP Server | Notes |
|----------|-------------|-------|
| Gmail | imap.gmail.com | Requires App Password if 2FA enabled |
| Outlook/Microsoft 365 | outlook.office365.com | Works with work/personal accounts |
| iCloud | imap.mail.me.com | Requires App-Specific Password |
| Yahoo | imap.mail.yahoo.com | Requires App Password |
| Any IMAP server | Custom | Enter server details manually |
## Features
### Email Reading & Search
| Tool | Description |
|------|-------------|
| `mail_list_accounts` | List all configured email accounts |
| `mail_list_mailboxes` | List mailboxes/folders for an account |
| `mail_get_messages` | Get messages from a mailbox with filters |
| `mail_search` | Search emails by subject, sender, or both |
| `mail_get_message_detail` | Get full details of a specific email |
| `mail_unread_count` | Get unread counts by account |
| `mail_get_important` | Get flagged emails |
### Email Management
| Tool | Description |
|------|-------------|
| `mail_mark_read` | Mark messages as read/unread |
| `mail_flag_message` | Flag/unflag messages |
| `mail_delete_by_sender` | Bulk delete emails from specific senders |
### Direct Mail Links
All message-returning tools include `message_url` for opening emails directly:
```json
{
"id": "12345",
"message_id": "<abc123@mail.gmail.com>",
"message_url": "message://%3Cabc123%40mail.gmail.com%3E",
"subject": "Your order has shipped",
"sender": "orders@amazon.com"
}
```
## Requirements
- **Python** 3.10 or later
- **pip** (Python package manager)
- **Claude Desktop** or Claude Code CLI
## Installation
### 1. Clone the repository
```bash
git clone https://github.com/oscar23445/universal-mail-mcp.git
cd universal-mail-mcp
```
### 2. Install the package
```bash
pip install -e .
```
Or install dependencies directly:
```bash
pip install mcp keyring
```
### 3. Configure your email accounts
Run the interactive setup:
```bash
universal-mail-mcp --setup
```
This will:
- Prompt for account details (name, email, IMAP server)
- Store passwords securely in your system's keyring
- Test the connection
**Example setup:**
```
Account name: personal
Email address: you@gmail.com
Provider: gmail
Password or App Password: xxxx-xxxx-xxxx-xxxx
✓ Account 'personal' saved successfully!
```
### 4. Test the server
```bash
universal-mail-mcp
```
You should see: `Universal Mail MCP Server running on stdio`
Press `Ctrl+C` to stop.
### 5. Configure Claude Desktop
Edit your Claude Desktop config file:
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
**Linux:** `~/.config/Claude/claude_desktop_config.json`
Add the server:
```json
{
"mcpServers": {
"universal-mail": {
"command": "universal-mail-mcp"
}
}
}
```
Or if using Python directly:
```json
{
"mcpServers": {
"universal-mail": {
"command": "python",
"args": ["-m", "universal_mail_mcp.server"]
}
}
}
```
### 6. Restart Claude Desktop
Quit and reopen Claude Desktop. The mail tools will be available.
## Gmail Setup
Gmail requires an **App Password** if you have 2-Factor Authentication enabled:
1. Go to [Google Account Security](https://myaccount.google.com/security)
2. Enable 2-Step Verification if not already enabled
3. Go to [App Passwords](https://myaccount.google.com/apppasswords)
4. Create a new App Password for "Mail"
5. Use this 16-character password in the setup
## iCloud Setup
iCloud requires an **App-Specific Password**:
1. Go to [Apple ID](https://appleid.apple.com)
2. Sign in and go to Security
3. Under "App-Specific Passwords", click "Generate Password"
4. Use this password in the setup
## Credential Storage
Passwords are stored securely using your system's native keyring:
| Platform | Keyring Backend |
|----------|-----------------|
| macOS | Keychain |
| Windows | Windows Credential Manager |
| Linux | Secret Service (GNOME Keyring, KWallet) |
Account configurations (non-sensitive) are stored in:
- macOS: `~/Library/Application Support/universal-mail-mcp/accounts.json`
- Windows: `%APPDATA%/universal-mail-mcp/accounts.json`
- Linux: `~/.config/universal-mail-mcp/accounts.json`
## Usage Examples
### Basic queries
- "How many unread emails do I have?"
- "Show me unread emails from my work account"
- "Search for emails from Amazon"
- "What are my flagged emails?"
### Email management
- "Mark that email as read"
- "Flag that email for follow-up"
- "Delete all emails from spam@example.com"
### Multi-account
- "List my email accounts"
- "Show unread count for each account"
- "Search for 'invoice' across all accounts"
## Troubleshooting
### "No email accounts configured"
Run the setup wizard:
```bash
universal-mail-mcp --setup
```
### "Credentials not found"
Re-run setup to store credentials:
```bash
universal-mail-mcp --setup
```
Choose option 1 to add the account again.
### Gmail: "Invalid credentials"
- Ensure you're using an App Password, not your regular password
- Check that "Less secure app access" is enabled (if not using App Password)
- Verify 2FA status at https://myaccount.google.com/security
### Connection timeout
- Verify your IMAP server and port are correct
- Check your firewall allows outbound connections on port 993
- Some corporate networks block IMAP
### Linux: Keyring issues
Install the secret service:
```bash
# Ubuntu/Debian
sudo apt install gnome-keyring
# Fedora
sudo dnf install gnome-keyring
```
## Privacy & Security
- All processing happens locally on your machine
- No emails are sent to external servers
- Credentials are stored in your system's secure keyring
- Claude only sees what you explicitly request
- Destructive operations (`mail_delete_by_sender`) are clearly marked
## Development
### Project Structure
```
universal-mail-mcp/
├── src/
│ └── universal_mail_mcp/
│ ├── __init__.py
│ ├── server.py # MCP server
│ ├── credentials.py # Secure credential storage
│ └── backends/
│ ├── __init__.py
│ └── imap.py # IMAP backend
├── pyproject.toml
├── README.md
└── LICENSE
```
### Running from source
```bash
# Clone
git clone https://github.com/oscar23445/universal-mail-mcp.git
cd universal-mail-mcp
# Install in development mode
pip install -e ".[dev]"
# Run
python -m universal_mail_mcp.server
```
### Running tests
```bash
pytest
```
## Contributing
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Run tests (`pytest`)
5. Commit your changes (`git commit -m 'Add amazing feature'`)
6. Push to the branch (`git push origin feature/amazing-feature`)
7. Open a Pull Request
## License
MIT License - see [LICENSE](LICENSE) file for details.
## Author
OES Software LLC
## Related Projects
- [apple-mail-mcp-server](https://github.com/oscar23445/apple-mail-mcp-server) - macOS-only Apple Mail integration using AppleScript
- [Model Context Protocol](https://modelcontextprotocol.io/) by Anthropic
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues