Skip to main content
Glama
email-mcp-server

email-mcp-server

Email MCP Server

An MCP (Model Context Protocol) server that lets your AI assistant send emails via SMTP.

Features

  • send_simple_email — Send a quick email (text or HTML); accepts optional smtp_config

  • send_custom_email — Full control: CC/BCC, attachments; accepts optional smtp_config

  • test_smtp_connection — Verify your SMTP settings before sending; accepts optional smtp_config

Related MCP server: MCP Email Server with SendGrid

Quick Start

# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh

cd email-mcp-server
uv sync --extra dev

Configure SMTP (see next section), then run:

# stdio transport (for MCP clients)
uv run python -m email_mcp_server.server

# Streamable HTTP transport (port 8000)
uv run python -m email_mcp_server.server --http

Run tests:

uv run pytest

SMTP Configuration

You can configure SMTP credentials in two ways — use one or both.

Option A: Environment variables

Copy the example and fill in your credentials:

cp env.example .env
# Required
SMTP_HOST=smtp.gmail.com
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
SMTP_FROM=your-email@gmail.com

# Optional (defaults shown)
# SMTP_PORT=587
# SMTP_SECURE=false

Alternatively, pass them via the client's env block (see Client Configuration below).

Option B: Per-call payload

Pass smtp_config directly in any tool call — environment variables are ignored for that call:

{
  "smtp_config": {
    "host": "smtp.gmail.com",
    "port": 587,
    "secure": false,
    "username": "your-email@gmail.com",
    "password": "your-app-password",
    "from_email": "your-email@gmail.com"
  }
}

Field

Type

Description

host

string

SMTP server hostname

port

integer

SMTP server port (usually 587)

secure

boolean

Use SSL/TLS (false for STARTTLS)

username

string

Auth username

password

string

Auth password

from_email

string

Sender email address

Client Configuration

Claude Code

# stdio
claude mcp add email-server -- uv --directory /absolute/path/to/email-mcp-server run python -m email_mcp_server.server

# streamable HTTP (start the server first with --http)
claude mcp add --transport http email-server http://localhost:8000/mcp

JSON-based clients (Claude Desktop, Cursor, VS Code, Windsurf, Zed)

Use the generic example below and adjust the top-level key and config file path for your client:

{
  "<top-level-key>": {
    "email-server": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/email-mcp-server", "run", "python", "-m", "email_mcp_server.server"],
      "env": {
        "SMTP_HOST": "smtp.gmail.com",
        "SMTP_PORT": "587",
        "SMTP_SECURE": "false",
        "SMTP_USER": "your-email@gmail.com",
        "SMTP_FROM": "your-email@gmail.com",
        "SMTP_PASS": "your-app-password"
      }
    }
  }
}

Client

Config file path

Top-level key

Notes

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json

mcpServers

Windows: %APPDATA%\Claude\...

Cursor

~/.cursor/mcp.json

mcpServers

Or .cursor/mcp.json (project)

VS Code

.vscode/mcp.json

servers

Add "type": "stdio" inside the server entry

Windsurf

~/.codeium/windsurf/mcp_config.json

mcpServers

Zed

~/.config/zed/settings.json

context_servers

Streamable HTTP (any client)

Start the server with uv run python -m email_mcp_server.server --http, then:

Client

Config

Claude Code

claude mcp add --transport http email-server http://localhost:8000/mcp

Claude Desktop

{ "type": "http", "url": "http://localhost:8000/mcp" }

Cursor

{ "url": "http://localhost:8000/mcp" }

VS Code

{ "type": "http", "url": "http://localhost:8000/mcp" }

Windsurf

{ "serverUrl": "http://localhost:8000/mcp" }

Zed

{ "url": "http://localhost:8000/mcp" }

Provider Settings

Provider

Host

Notes

Gmail

smtp.gmail.com

Requires app password with 2FA enabled

Outlook

smtp-mail.outlook.com

Regular password or app password

Yahoo

smtp.mail.yahoo.com

Requires app password with 2FA enabled

iCloud

smtp.mail.me.com

Requires app password with 2FA enabled

All providers use port 587 with SMTP_SECURE=false (STARTTLS).

License

MIT License

Available Tools

3 tools
send_custom_emailA

Send a custom email with full configuration options.

    Args:
        email: Email message details including:
            - to: Recipient email address(es) (string or list)
            - cc: CC email address(es) (optional, string or list)
            - bcc: BCC email address(es) (optional, string or list)
            - subject: Email subject
            - text: Plain text email body (optional)
            - html: HTML email body (optional)
            - attachments: List of attachments (optional), each with:
                - path: Local file path to attach (preferred)
                - content: Base64-encoded file content (alternative to path)
                - filename: Override filename (auto-derived from path if omitted)
                - mime_type: MIME type override (optional)
        smtp_config: Optional SMTP configuration override with:
            - host: SMTP server hostname
            - port: SMTP server port
            - secure: Use SSL/TLS
            - username: Auth username
            - password: Auth password
            - from_email: Sender email address

    Returns:
        Success message or error message
    

Inputs: email (required), smtp_config. Returns: result

send_simple_emailB

Send a simple email.

    Args:
        to: Recipient email address
        subject: Email subject
        body: Email body content
        is_html: Whether body is HTML (default: False)
        smtp_config: Optional SMTP configuration override with:
            - host: SMTP server hostname
            - port: SMTP server port
            - secure: Use SSL/TLS
            - username: Auth username
            - password: Auth password
            - from_email: Sender email address
            Falls back to environment variables if not provided.

    Returns:
        Success message or error message
    

Inputs: to (required), subject (required), body (required), is_html, +1 more. Returns: result

test_smtp_connectionB

Test SMTP connection.

    Args:
        smtp_config: Optional SMTP configuration override with:
            - host: SMTP server hostname
            - port: SMTP server port
            - secure: Use SSL/TLS
            - username: Auth username
            - password: Auth password
            - from_email: Sender email address
            Falls back to environment variables if not provided.

    Returns:
        Connection test result or error message
    

Inputs: smtp_config. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 3 tools

    Disambiguation4/5

    send_custom_email and send_simple_email both send emails, but their names and argument differences clearly distinguish a full-featured version from a simple one. test_smtp_connection is entirely separate.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern in snake_case: send_custom_email, send_simple_email, test_smtp_connection.

    Tool Count4/5

    With 3 tools, the server is focused on sending emails and testing connections. While minimal, it covers the core functionality without unnecessary bloat.

    Completeness3/5

    The server covers sending (two variants) and connection testing, but lacks tools for receiving, listing, or managing emails, which are typical for an email server.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      D
      maintenance
      An MCP server that enables AI assistants to send emails through SMTP protocol by providing server credentials, recipient information, subject, and message content.
      1
      31 npm
      1
      Apache 2.0
    • F
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that enables AI applications to send text, HTML, and template-based emails using SendGrid. It supports file attachments, CC/BCC recipients, and easy deployment via Python or Docker.
      -
    • A
      license
      A
      quality
      C
      maintenance
      An MCP server for EmailJS that enables AI agents to send emails, validate configurations, and query email history through natural language.
      3
      15 npm
      2
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A production-ready MCP server that empowers AI agents to securely send emails via SMTP, supporting plain text, HTML, and attachments.
      MIT