mcp-email-client
MCP Email Client
A Model Context Protocol (MCP) server for sending and receiving emails, supporting IMAP/SMTP, with display name, reply, robust error handling, and full attachment support.
Features
Send emails (with display name and attachment support)
List inbox/sent emails (brief info, attachment count)
Read email details by UID (auto-save and list attachments)
Reply to emails (auto set headers, display name, attachments)
Environment variable based configuration
Robust error handling and IMAP/SMTP compatibility
Example JSON config for MCP/Claude/Inspector
This format is suitable for use with Claude Desktop, MCP Inspector, or any MCP client that supports multi-server JSON configuration:
{
"mcpServers": {
"mcp-email-client": {
"command": "uvx",
"args": [
"mcp-email-client"
],
"env": {
"MAIL_USER_NAME": "your@email.com",
"MAIL_PASS_WORD": "yourpassword",
"MAIL_SMTP_ADDR": "smtp.example.com:465",
"MAIL_IMAP_ADDR": "imap.example.com:993",
"MAIL_FROM_NAME": "Your Name",
"MAIL_FROM_ADDR": "your@email.com",
"MAIL_SAVE_PATH": "/absolute/path/to/attachments"
}
}
}
}You can add multiple servers under
mcpServers.This config can be loaded directly by Claude Desktop, MCP Inspector, or compatible tools.
Environment Variables
Name | Description | Example |
MAIL_USER_NAME | Email account (login username) | |
MAIL_PASS_WORD | Email account password/app token | yourpassword |
MAIL_SMTP_ADDR | SMTP host:port | smtp.example.com:465 |
MAIL_IMAP_ADDR | IMAP host:port | imap.example.com:993 |
MAIL_FROM_ADDR | (Optional) From email address | |
MAIL_FROM_NAME | (Optional) From display name | Alice |
MAIL_SAVE_PATH | (Optional) Path to save attachments | /absolute/path/to/dir |
Installation
uv pip install fastmcp
# or
pip install fastmcpUsage
Set environment variables (see above)
Run the server:
python server.pyAPI Endpoints (Tools)
send_email
Send an email, with optional attachments.
Args:
to: Recipient email addresssubject: Email subjectcontent: Email body (plain text)attachments: List of absolute file paths to attach (optional)
Returns:
{ "success": bool, "message": str }
reply_email
Reply to an email, with optional attachments.
Args:
uid: UID of the original email to reply tosubject: Email subjectcontent: Email body (plain text or HTML)attachments: List of absolute file paths to attach (optional)
Returns:
{ "success": bool, "message": str }
list_inbox / list_sent
List inbox or sent emails (brief info, attachment count).
Args:
limit: Maximum number of emails to return (default 10)start: Start index (0-based, from the latest email)
Returns:
{ "emails": [ { "uid", "subject", "snippet", "date", "seen", "attachment" } ] }attachment: Number of attachments in the email
read_email
Read full details of an email by UID, auto-save and list attachments.
Args:
uid: UID of the email
Returns:
{ "uid", "message_id", "from", "to", "subject", "date", "seen", "in_reply_to", "references", "snippet", "attachments" }attachments: List of all attachment filenames (auto-saved to MAIL_SAVE_PATH/uid/ if MAIL_SAVE_PATH is set)
Example .env
MAIL_USER_NAME=your@email.com
MAIL_PASS_WORD=yourpassword
MAIL_SMTP_ADDR=smtp.example.com:465
MAIL_IMAP_ADDR=imap.example.com:993
MAIL_FROM_NAME=Your Name
MAIL_FROM_ADDR=your@email.com
MAIL_SAVE_PATH=/absolute/path/to/attachmentsFAQ
Q: Why do I get 'Email content is empty'?
A: The UID may not exist, or the email was deleted/moved. Make sure to use a valid UID from list_inbox/list_sent.
Q: How to set display name?
A: Set MAIL_FROM_NAME in your environment variables.
Q: How to send HTML email?
A: Just include HTML tags in content, the server will auto-detect and set the correct MIME type.
Q: How to send attachments?
A: Pass a list of absolute file paths to the
attachmentsparameter in send_email or reply_email.
Q: How to auto-save received attachments?
A: Set MAIL_SAVE_PATH. All attachments will be saved to MAIL_SAVE_PATH/uid/ when reading emails.
License
MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/OptLTD/mcp-email-client'
If you have feedback or need assistance with the MCP directory API, please join our Discord server