Skip to main content
Glama
mcp-emailjs

mcp-emailjs

mcp-emailjs

An MCP (Model Context Protocol) server for EmailJS — lets AI agents like Claude send emails, validate configurations, and query email history directly through EmailJS.

⚠️ Required: enable non-browser API access

EmailJS blocks API calls from non-browser environments by default. Since this MCP server runs as a server process (not a browser), you must enable API access or send_email will fail with:

403: API access from non-browser environments is currently disabled.

To enable it:

  1. Go to EmailJS Account → Security

  2. Turn on "Allow EmailJS API for non-browser applications"

  3. Save

get_email_history works without this, but send_email and validate_config require it.

Related MCP server: email-mcp

Tools

Tool

Description

send_email

Send an email using an EmailJS template with dynamic parameters

validate_config

Validate credentials and template ID before sending

get_email_history

Retrieve history of emails sent via your EmailJS account

Known limitations

Templates cannot be created or edited programmatically. EmailJS does not expose a public API for template management — templates must be created and edited through the EmailJS dashboard. This MCP can only use existing templates (by their template_id), not create them.

If you'd like EmailJS to add a template-management API, please 👍 and comment on the feature request: emailjs-sdk#70.

Installation

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "emailjs": {
      "command": "npx",
      "args": ["-y", "mcp-emailjs"],
      "env": {
        "EMAILJS_SERVICE_ID": "your_service_id",
        "EMAILJS_PUBLIC_KEY": "your_public_key",
        "EMAILJS_PRIVATE_KEY": "your_private_key"
      }
    }
  }
}

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Cursor / other MCP clients

{
  "mcpServers": {
    "emailjs": {
      "command": "npx",
      "args": ["-y", "mcp-emailjs"],
      "env": {
        "EMAILJS_SERVICE_ID": "your_service_id",
        "EMAILJS_PUBLIC_KEY": "your_public_key",
        "EMAILJS_PRIVATE_KEY": "your_private_key"
      }
    }
  }
}

Environment Variables

Variable

Required

Description

EMAILJS_SERVICE_ID

Yes*

Your EmailJS service ID

EMAILJS_PUBLIC_KEY

Yes*

Your EmailJS public key

EMAILJS_PRIVATE_KEY

No

Your EmailJS private key (required for get_email_history)

*Can be passed per tool call as parameters instead of env vars.

Credential Priority

Credentials are resolved in this order:

  1. Parameter passed in the tool call (overrides everything)

  2. Environment variable

  3. Error with a descriptive message

This allows using multiple EmailJS accounts in the same session.

Usage Examples

Send an email

Send an email using template "template_contact" with:
- to_name: "Alice"
- to_email: "alice@example.com"
- message: "Hello from Claude!"

Validate your config

Validate my EmailJS configuration for service "service_gmail" and template "template_welcome"

Check email history

Show me the last 10 emails I sent via EmailJS

Where to find your credentials

  1. Go to EmailJS Dashboard

  2. Service ID → Email Services → your service

  3. Public Key → Account → API Keys → Public Key

  4. Private Key → Account → API Keys → Private Key

Local Development

git clone https://github.com/ElizioMartins/mcp-emailjs
cd mcp-emailjs
npm install
npm run build

# Test with MCP Inspector
npm run inspector

License

MIT

Available Tools

3 tools
get_email_historyA

Retrieve the history of emails sent via EmailJS. Requires EMAILJS_PUBLIC_KEY and EMAILJS_PRIVATE_KEY (accessToken) for authentication.

Inputs: page, count, user_id, accessToken.

send_emailB

Send an email using an EmailJS template. Credentials can be passed as parameters or read from EMAILJS_SERVICE_ID, EMAILJS_PUBLIC_KEY, and EMAILJS_PRIVATE_KEY environment variables.

Inputs: template_id (required), template_params, service_id, user_id, +1 more.

validate_configA

Validate EmailJS credentials and template ID. WARNING: EmailJS has no dry-run endpoint, so this performs a real send with empty template params — it consumes send quota and may deliver an email if the template has no required variables. Returns a clear message indicating which part of the configuration is invalid.

Inputs: template_id (required), service_id, user_id, accessToken.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool serves a distinct purpose: retrieving history, sending emails, and validating configuration. No overlap or ambiguity.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun snake_case pattern (get_email_history, send_email, validate_config).

    Tool Count5/5

    Three tools is well-scoped for an email service, covering the core operations without unnecessary bloat.

    Completeness4/5

    The set covers sending, history, and config validation. Minor gap: lacks template management or cancellation, but core workflow is complete.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      An MCP server that enables AI assistants to send emails via SMTP, supporting simple and custom emails with attachments and CC/BCC, plus connection testing.
      3
      28
      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
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that provides AI agents with a persistent, agent-native email mailbox for sending, receiving, and managing emails through bounded-context retrieval, idempotent operations, and explicit acknowledgement.
      MIT