mcpField
E
Email MCP Server

Email MCP Server

Local
github.com/egyptianego17Communication27Updated 36w ago

About Email MCP Server

Email MCP Server is an MCP server that lets an AI assistant send emails and attachments over SMTP. It suits developers who want email sending inside conversations or automated workflows, with SMTP settings supplied by environment variables or per call.

Key features

  1. 01Simple email sending with text or HTML body
  2. 02Custom emails with CC, BCC and attachments
  3. 03SMTP connection test before sending
  4. 04Configuration via environment variables or per-call payload

Use cases

  1. 01AI assistant sends a notification email after a task
  2. 02Sending a report with attachments to a client
  3. 03Verifying SMTP settings before sending mail

MCP support

Exposes the tools send_simple_email, send_custom_email and test_smtp_connection over MCP, using stdio or Streamable HTTP transport.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

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

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
[email protected]
SMTP_PASS=your-app-password
[email protected]

# 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": "[email protected]",
    "password": "your-app-password",
    "from_email": "[email protected]"
  }
}
FieldTypeDescription
hoststringSMTP server hostname
portintegerSMTP server port (usually 587)
securebooleanUse SSL/TLS (false for STARTTLS)
usernamestringAuth username
passwordstringAuth password
from_emailstringSender 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": "[email protected]",
        "SMTP_FROM": "[email protected]",
        "SMTP_PASS": "your-app-password"
      }
    }
  }
}
ClientConfig file pathTop-level keyNotes
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonmcpServersWindows: %APPDATA%\Claude\...
Cursor~/.cursor/mcp.jsonmcpServersOr .cursor/mcp.json (project)
VS Code.vscode/mcp.jsonserversAdd "type": "stdio" inside the server entry
Windsurf~/.codeium/windsurf/mcp_config.jsonmcpServers
Zed~/.config/zed/settings.jsoncontext_servers
Streamable HTTP (any client)

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

ClientConfig
Claude Codeclaude 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

ProviderHostNotes
Gmailsmtp.gmail.comRequires app password with 2FA enabled
Outlooksmtp-mail.outlook.comRegular password or app password
Yahoosmtp.mail.yahoo.comRequires app password with 2FA enabled
iCloudsmtp.mail.me.comRequires app password with 2FA enabled

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

License

MIT License

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.