loading…
Search for a command to run...
loading…
Enables email management for a single mailbox via IMAP and SMTP protocols. Supports reading, searching, and sending emails with threading support through stdio
Enables email management for a single mailbox via IMAP and SMTP protocols. Supports reading, searching, and sending emails with threading support through stdio or HTTP transports.
Small personal MCP server for a single mailbox over IMAP + SMTP.
It is aimed at a private setup first:
This repo originally worked only in stdio mode. That is fine for local MCP clients, but ChatGPT web integration needs an HTTP MCP endpoint. The server now supports:
stdio for local/dev usestreamable-http for ChatGPT web app usesse for compatibilityI also fixed a mail-threading issue:
reply_to parameter only set the Reply-To headerIn-Reply-To and Referencesread_email now returns those headers so they can be passed back into send_emailAnd I improved read_email output by returning:
This version supports both reading and sending attachments.
read_email(uid=..., folder="INBOX")attachments listattachment_index with get_attachment(...)get_attachment(...) returns:
filenamecontent_typesize_bytescontent_base64send_email(...) accepts an attachments list.
Each item can be one of:
{"path": "/path/to/file.pdf"}
{"filename": "note.txt", "content_text": "hello from MCP"}
{"filename": "report.pdf", "content_base64": "JVBERi0x...", "content_type": "application/pdf"}
After SMTP send succeeds, the same MIME message is appended to your IMAP sent folder.
By default that folder name is:
Sent
You can override it if your mailbox uses a different IMAP folder name:
export SENT_FOLDER="Sent"
# or
export MAILBOX_SENT_FOLDER="Sent"
If sent mail does not show up, first run list_folders() and use the exact folder name returned by your mailbox.
server.py — MCP tool definitions and transport startupmail_ops.py — IMAP/SMTP implementationrequirements.txt — Python dependenciesRequired:
export MAILBOX_EMAIL="[email protected]"
export MAILBOX_PASSWORD="your-app-password"
Optional provider settings:
export IMAP_HOST="imap.yandex.com"
export IMAP_PORT="993"
export SMTP_HOST="smtp.yandex.com"
export SMTP_PORT="465"
Optional sent-folder setting:
export SENT_FOLDER="Sent"
Optional MCP server settings:
export MCP_TRANSPORT="stdio"
export MCP_HOST="0.0.0.0"
export MCP_PORT="8000"
Aliases also supported for convenience:
export YANDEX_EMAIL="[email protected]"
export YANDEX_APP_PASSWORD="..."
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python server.py
This is the right mode for local MCP clients that spawn the process directly.
ChatGPT web needs a public HTTPS MCP endpoint. Start the server in HTTP mode:
python server.py --transport streamable-http --host 0.0.0.0 --port 8000
Then expose that port through a public HTTPS tunnel or reverse proxy, and register the resulting MCP URL in ChatGPT.
list_folders()Lists available IMAP folders.
search_emails(folder="INBOX", text=None, unseen_only=False, since_date=None, limit=30)Searches messages by IMAP criteria.
Returns items like:
uidsubjectfromtodateflagssize_bytesread_email(uid, folder="INBOX")Fetches a full message without marking it read.
Returns:
message_idin_reply_toreferencesattachmentsbody_plainbody_htmlget_attachment(uid, folder="INBOX", attachment_index=None, filename=None)Fetches a single attachment and returns it as base64.
send_email(...)Sends a message through SMTP.
Important parameters:
reply_to_header — sets the Reply-To headerin_reply_to — threading headerreferences — threading headerattachments — optional list of attachment specsFor a real reply, use in_reply_to and usually also references.
Typical Yandex defaults are:
imap.yandex.com:993 over SSL/TLSsmtp.yandex.com:465 over SSL/TLSUse an app password, not your main account password.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"email-mcp-server": {
"command": "npx",
"args": []
}
}
}Read, send and search emails from Claude
Send, search and summarize Slack messages
No-code MCP client for team chat platforms, such as Slack, Microsoft Teams, and Discord.
A community discord server dedicated to MCP by [Frank Fiegel](https://github.com/punkpeye)