Email MCP Server for Postale.io
An MCP server that gives Claude Desktop / Cowork access to your Postale.io email mailboxes. Supports multiple accounts, reading, searching, replying, drafts, deleting, and batch operations.
Features
| Tool | Description | |------|-------------| | list_accounts | Show all configured email accounts | | list_folders | Show folder structure of an account | | get_unread_emails | Fetch unread emails | | get_recent_emails | Fetch recent emails from the last X days | | read_email | Read a single email in full | | search_emails | Search emails (subject, sender, body) | | send_email | Send an email (with reply threading) | | save_draft | Save a draft (visible in Spark) | | move_email | Move an email to another folder | | delete_email | Move an email to trash | | batch_delete_emails | Delete multiple emails at once | | mark_as_read | Mark as read | | mark_as_unread | Mark as unread | | get_mailbox_stats | Stats: unread per folder | | get_all_unread_summary | Across ALL accounts: summarize unread |
Setup
1. Clone and install dependencies
git clone https://github.com/ssk-machines/email-mcp-postale.git
cd email-mcp-postale
pip install -r requirements.txt
# or with uv:
uv pip install -r requirements.txt
2. Create configuration
cp config.json.example config.json
Then edit config.json — add an account entry for each mailbox:
{
"accounts": [
{
"name": "My Account",
"email": "me@example.com",
"imap_host": "mail.postale.io",
"imap_port": 993,
"smtp_host": "mail.postale.io",
"smtp_port": 465,
"username": "me@example.com",
"password": "your-password"
},
{
"name": "Support",
"email": "support@example.com",
...
}
]
}
Tip: On Postale.io, the username is always the full email address.
3. Test
python server.py
If no errors appear, the server is running correctly in stdio mode.
4. Add to Claude Desktop
Open ~/Library/Application Support/Claude/claude_desktop_config.json and add:
With uv:
{
"mcpServers": {
"email": {
"command": "uv",
"args": [
"--directory", "/path/to/email-mcp-postale",
"run", "server.py"
]
}
}
}
Or with Python directly:
{
"mcpServers": {
"email": {
"command": "python3",
"args": ["/path/to/email-mcp-postale/server.py"],
"env": {
"EMAIL_MCP_CONFIG": "/path/to/email-mcp-postale/config.json"
}
}
}
}
Replace
/path/to/email-mcp-postalewith the actual path where you cloned the repo.
5. Restart Claude Desktop
After saving the config, fully quit and reopen Claude Desktop. The email connector should appear as active under "Connectors".
Scheduled Tasks (Cowork)
Morning Briefing (daily, 7:00 AM)
Every morning at 7:00 AM:
1. Call get_all_unread_summary to fetch all unread emails across all accounts.
2. Categorize each email as:
- 🔴 URGENT: Needs immediate reply (customers, partners, investors)
- 🟡 REPLY NEEDED: Needs a reply, but not time-critical
- 🟢 FYI: Just read, no action needed
- ⚪ UNIMPORTANT: Newsletters, marketing, spam
3. Draft a reply for each 🔴 and 🟡 email using save_draft.
4. Mark ⚪ emails as read with mark_as_read.
5. Create a clear summary as a briefing.
Cleanup Task (weekly, Friday 5:00 PM)
Every Friday at 5:00 PM:
1. Search all accounts for newsletter and marketing emails from the past week.
2. Create a list for batch deletion.
3. Show me the list for confirmation before deleting.
Security Notes
- Passwords are stored in plaintext in
config.json— protect the file withchmod 600 config.json - Alternatively: use Postale.io app passwords (if supported)
- Do NOT commit config.json to git
License
MIT











