universal-mail-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@universal-mail-mcphow many unread emails do I have?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
Related MCP server: mcp-imap-server
Features
Email Reading & Search
Tool | Description |
| List all configured email accounts |
| List mailboxes/folders for an account |
| Get messages from a mailbox with filters |
| Search emails by subject, sender, or both |
| Get full details of a specific email |
| Get unread counts by account |
| Get flagged emails |
Email Management
Tool | Description |
| Mark messages as read/unread |
| Flag/unflag messages |
| Bulk delete emails from specific senders |
Direct Mail Links
All message-returning tools include message_url for opening emails directly:
{
"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
git clone https://github.com/oscar23445/universal-mail-mcp.git
cd universal-mail-mcp2. Install the package
pip install -e .Or install dependencies directly:
pip install mcp keyring3. Configure your email accounts
Run the interactive setup:
universal-mail-mcp --setupThis 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
universal-mail-mcpYou 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:
{
"mcpServers": {
"universal-mail": {
"command": "universal-mail-mcp"
}
}
}Or if using Python directly:
{
"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:
Go to Google Account Security
Enable 2-Step Verification if not already enabled
Go to App Passwords
Create a new App Password for "Mail"
Use this 16-character password in the setup
iCloud Setup
iCloud requires an App-Specific Password:
Go to Apple ID
Sign in and go to Security
Under "App-Specific Passwords", click "Generate Password"
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.jsonWindows:
%APPDATA%/universal-mail-mcp/accounts.jsonLinux:
~/.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:
universal-mail-mcp --setup"Credentials not found"
Re-run setup to store credentials:
universal-mail-mcp --setupChoose 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:
# Ubuntu/Debian
sudo apt install gnome-keyring
# Fedora
sudo dnf install gnome-keyringPrivacy & 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
└── LICENSERunning from source
# 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.serverRunning tests
pytestContributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Make your changes
Run tests (
pytest)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
MIT License - see LICENSE file for details.
Author
OES Software LLC
Related Projects
apple-mail-mcp-server - macOS-only Apple Mail integration using AppleScript
Model Context Protocol by Anthropic
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/oscar23445/universal-mail-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server