MCP Connector

Send Emails via SMTP

An MCP server that lets an AI assistant send emails via SMTP, with per-call or environment-based credentials and attachment support.


96
Spark score
out of 100
Status Verified
Updated 5 months ago
Version 1.0.0
Models
universal

Add to Favorites

Why it matters

Enable AI assistants to send emails programmatically via SMTP. Supports plain text, HTML, attachments, CC/BCC, and multiple recipients.

Outcomes

What it gets done

01

Send plain text and HTML emails with attachments.

02

Configure and send emails using Gmail, Outlook, or custom SMTP servers.

03

Test SMTP connection and email sending functionality.

04

Send emails to multiple recipients with CC and BCC.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-email-smtp | bash

Capabilities

Tools your agent gets

send_email

Quick email sending using environment variable configuration with recipient, subject, and message text.

send_custom_email

Send emails with full control including multiple recipients, CC/BCC, file attachments, and HTML formatting.

test_smtp_connection_tool

Verify email settings and SMTP connection before sending important messages.

Overview

Email SMTP MCP Server

Gives an AI assistant three SMTP tools - simple send, full custom send with attachments/CC/BCC, and connection testing - configurable via environment variables or per-call credentials for Gmail, Outlook, Yahoo, or iCloud. Use when an assistant needs to send email through an existing SMTP account, including attachments; per-call smtp_config makes it suitable for sending from multiple accounts without server reconfiguration.

What it does

Email MCP Server lets an AI assistant send email via SMTP through three tools. send_simple_email sends a quick text or HTML email, accepting an optional smtp_config override. send_custom_email gives full control - CC, BCC, and attachments - also accepting an optional smtp_config. test_smtp_connection verifies SMTP settings before actually sending anything, letting credentials be checked without generating a real email.

SMTP credentials can be supplied two ways. Environment variables set SMTP_HOST, SMTP_USER, SMTP_PASS, and SMTP_FROM as required fields, with SMTP_PORT (default 587) and SMTP_SECURE (default false, meaning STARTTLS rather than implicit SSL/TLS) as optional overrides - these can live in a .env file or be passed through the MCP client's env block. Alternatively, a smtp_config object can be passed directly in any individual tool call, specifying host, port, secure, username, password, and from_email; when supplied this way, environment variables are ignored entirely for that call, which allows sending through different SMTP accounts per request without reconfiguring the server.

When to use - and when NOT to

Use this when an AI assistant needs to send transactional or ad hoc email - notifications, reports, or messages with attachments - directly through a standard SMTP account rather than a dedicated email API service. Documented provider settings cover Gmail (smtp.gmail.com, requiring an app password with 2FA enabled), Outlook (smtp-mail.outlook.com, accepting a regular or app password), Yahoo (smtp.mail.yahoo.com, requiring an app password with 2FA), and iCloud (smtp.mail.me.com, requiring an app password with 2FA) - all four use port 587 with STARTTLS rather than implicit TLS. Because credentials can be supplied per call, it also fits scenarios needing to send from multiple accounts without restarting or reconfiguring the server between requests.

Capabilities

The server supports two transports: stdio for direct MCP client integration, and streamable HTTP on port 8000 for clients that connect over HTTP rather than spawning the process. It ships with a pytest test suite, runnable via uv run pytest.

How to install

Setup uses uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

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

After configuring SMTP credentials, the server runs via uv run python -m email_mcp_server.server for stdio, or with a --http flag for streamable HTTP. Client-specific setup is documented for Claude Code (via claude mcp add), and JSON-based configuration for Claude Desktop, Cursor, VS Code, Windsurf, and Zed, each with its own config file path and top-level key (mcpServers, servers, or context_servers depending on the client).

Who it's for

Developers and teams who want an AI assistant to send email through an existing SMTP account - Gmail, Outlook, Yahoo, iCloud, or a custom SMTP server - including support for attachments and CC/BCC, without integrating a separate transactional email API.

Source 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
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).

FAQ

Common questions

Trust

How it checks out

Official By maintainer
Downloads 0

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.