SMTP Email MCP Server logo

SMTP Email MCP Server

by samihalawa

An MCP server providing email sending capabilities for Claude and other MCP-compatible AI assistants. It allows configuration of multiple SMTP servers and email templates for dynamic and bulk email sending.

View on GitHub

Last updated: N/A

SMTP Email MCP Server

A Model Context Protocol (MCP) server that provides email sending capabilities for Claude and other MCP-compatible AI assistants.

Features

  • Multiple SMTP Configurations: Configure and manage multiple SMTP servers
  • Email Templates: Create, update, and use reusable email templates
  • Bulk Email Sending: Send emails to multiple recipients with batching and rate limiting
  • HTML Support: Full HTML support for rich email content
  • Logging: Comprehensive logging of all email activities
  • Template Variables: Dynamic content using template variables

Installation

# Clone the repository
git clone https://github.com/samihalawa/mcp-server-smtp.git
cd mcp-server-smtp

# Install dependencies
npm install

# Build the server
npm run build

Usage

Starting the Server

npm start

Configuration

Add the server to your MCP configuration:

{
  "servers": {
    "smtp-email-server": {
      "command": "/path/to/node",
      "args": ["/path/to/mcp-server-smtp/build/index.js"],
      "enabled": true,
      "port": 3007,
      "environment": {
        "NODE_PATH": "/path/to/node_modules",
        "PATH": "/usr/local/bin:/usr/bin:/bin"
      }
    }
  }
}

Available Tools

send-email

Send an email to one or more recipients.

Parameters:

  • to: Array of recipients with email and optional name
  • subject: Email subject
  • body: Email body (HTML supported)
  • from: (Optional) Sender email and name
  • cc: (Optional) CC recipients
  • bcc: (Optional) BCC recipients
  • templateId: (Optional) ID of a template to use
  • templateData: (Optional) Data to populate template variables
  • smtpConfigId: (Optional) ID of the SMTP configuration to use
send-bulk-emails

Send emails to multiple recipients in batches.

Parameters:

  • recipients: Array of recipients with email and optional name
  • subject: Email subject
  • body: Email body (HTML supported)
  • from: (Optional) Sender email and name
  • cc: (Optional) CC recipients
  • bcc: (Optional) BCC recipients
  • templateId: (Optional) ID of a template to use
  • templateData: (Optional) Data to populate template variables
  • batchSize: (Optional) Number of emails to send in each batch
  • delayBetweenBatches: (Optional) Delay in milliseconds between batches
  • smtpConfigId: (Optional) ID of the SMTP configuration to use
get-smtp-configs

Get all configured SMTP servers.

Parameters: None

add-smtp-config

Add a new SMTP server configuration.

Parameters:

  • name: Name for the configuration
  • host: SMTP server hostname
  • port: SMTP server port
  • secure: Whether to use SSL/TLS
  • auth: Authentication credentials (user and pass)
  • isDefault: (Optional) Whether this is the default configuration
update-smtp-config

Update an existing SMTP server configuration.

Parameters:

  • id: ID of the configuration to update
  • name: Name for the configuration
  • host: SMTP server hostname
  • port: SMTP server port
  • secure: Whether to use SSL/TLS
  • auth: Authentication credentials (user and pass)
  • isDefault: (Optional) Whether this is the default configuration
delete-smtp-config

Delete an SMTP server configuration.

Parameters:

  • id: ID of the configuration to delete
get-email-templates

Get all email templates.

Parameters: None

add-email-template

Add a new email template.

Parameters:

  • name: Template name
  • subject: Email subject template
  • body: Email body template (HTML supported)
  • isDefault: (Optional) Whether this is the default template
update-email-template

Update an existing email template.

Parameters:

  • id: ID of the template to update
  • name: Template name
  • subject: Email subject template
  • body: Email body template (HTML supported)
  • isDefault: (Optional) Whether this is the default template
delete-email-template

Delete an email template.

Parameters:

  • id: ID of the template to delete
get-email-logs

Get logs of sent emails.

Parameters: None

Example Usage

  1. Configure an SMTP server:

    add-smtp-config(
      name: "Gmail",
      host: "smtp.gmail.com",
      port: 587,
      secure: false,
      auth: {
        user: "[email protected]",
        pass: "your-app-password"
      },
      isDefault: true
    )
    
  2. Create an email template:

    add-email-template(
      name: "Welcome Email",
      subject: "Welcome to {{company}}!",
      body: "<h1>Hello {{name}},</h1><p>Welcome to {{company}}!</p>",
      isDefault: false
    )
    
  3. Send an email using a template:

    send-email(
      to: [{ email: "[email protected]", name: "John Doe" }],
      templateId: "welcome-email",
      templateData: {
        name: "John",
        company: "ACME Corp"
      }
    )
    
  4. Send bulk emails:

    send-bulk-emails(
      recipients: [
        { email: "[email protected]", name: "User 1" },
        { email: "[email protected]", name: "User 2" }
      ],
      subject: "Important Announcement",
      body: "<p>This is an important announcement.</p>",
      batchSize: 10,
      delayBetweenBatches: 1000
    )
    

Requirements

  • Node.js 14+
  • Nodemailer for email sending
  • Access to an SMTP server

License

MIT