io.github.samihalawa/email-smtp-imap-mcp

Registre officiel Recherche et web

Multi-account SMTP/IMAP email tools: search, read, send, reply, forward, flags and folders.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NPM package email-smtp-imap-mcp
Claude Code
claude mcp add email-smtp-imap-mcp -e 'EMAIL_ACCOUNTS_JSON=<your email_accounts_json>' -e 'DEFAULT_EMAIL_ACCOUNT=<DEFAULT_EMAIL_ACCOUNT>' -- npx -y email-smtp-imap-mcp@2.2.2
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "email-smtp-imap-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "email-smtp-imap-mcp@2.2.2"
            ],
            "env": {
                "EMAIL_ACCOUNTS_JSON": "<your email_accounts_json>",
                "DEFAULT_EMAIL_ACCOUNT": "<DEFAULT_EMAIL_ACCOUNT>"
            }
        }
    }
}

Variables d'environnement

  • EMAIL_ACCOUNTS_JSON obligatoire secret JSON object keyed by account name with SMTP and IMAP settings and credentials; see the repository setup guide.
  • DEFAULT_EMAIL_ACCOUNT Default account name from EMAIL_ACCOUNTS_JSON; optional when the first account should be used.

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. Email SMTP/IMAP MCP
  2. Why this server
  3. Quick start
  4. Tools
  5. Verify your setup
  6. Provider settings
  7. Development
  8. Contributing
  9. License
  10. Security and release assurance

Email SMTP/IMAP MCP

One local MCP server for every inbox: search, read, send, reply, forward, and organize email across multiple accounts.

Why this server

For third-party notices, licence enquiries and the version 2.2.2 supplement, see the open source licence compliance programme.

  • No account-count cap — add work, personal, support, or client inboxes and switch with account_name.
  • SMTP + IMAP together — send and receive through one small MCP server.
  • Complete everyday workflow — search, read, reply, forward, attach files, flag, archive, move, and list folders.
  • Provider-agnostic — works with Gmail, iCloud Mail, Fastmail, Outlook, self-hosted mail, and other standard SMTP/IMAP providers.
  • Local stdio transport — no hosted relay and no separate control panel.

Quick start

1. Create your .env

Copy .env.example to a private location and add as many named accounts as you need:

EMAIL_ACCOUNTS_JSON='{
  "work": {
    "smtp": {
      "host": "smtp.gmail.com",
      "port": 587,
      "secure": false,
      "user": "work@example.com",
      "password": "app-password"
    },
    "imap": {
      "host": "imap.gmail.com",
      "port": 993,
      "secure": true,
      "user": "work@example.com",
      "password": "app-password"
    },
    "default_from_name": "Your Name",
    "sender_emails": ["work@example.com", "alias@example.com"]
  },
  "personal": {
    "smtp": {
      "host": "smtp.mail.me.com",
      "port": 587,
      "secure": false,
      "user": "you@icloud.com",
      "password": "app-password"
    },
    "imap": {
      "host": "imap.mail.me.com",
      "port": 993,
      "secure": true,
      "user": "you@icloud.com",
      "password": "app-password"
    }
  }
}'

DEFAULT_EMAIL_ACCOUNT="work"

The server loads .env from its working directory automatically. EMAIL_ENV_FILE lets an MCP client use an .env stored anywhere.

2. Add the MCP server

For Claude Desktop, edit:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "email": {
      "command": "npx",
      "args": ["-y", "email-smtp-imap-mcp"],
      "env": {
        "EMAIL_ENV_FILE": "/absolute/path/to/your/.env"
      }
    }
  }
}

Use an absolute path, restart your MCP client, then ask: “List my configured email accounts.”

Pass account JSON directly from the MCP client

You can skip the .env file and set EMAIL_ACCOUNTS_JSON plus DEFAULT_EMAIL_ACCOUNT directly in the MCP client’s env object. The JSON must be escaped into a single string.

{
  "env": {
    "EMAIL_ACCOUNTS_JSON": "{\"work\":{\"smtp\":{\"host\":\"smtp.gmail.com\",\"port\":587,\"user\":\"work@example.com\",\"password\":\"app-password\"},\"imap\":{\"host\":\"imap.gmail.com\",\"port\":993,\"user\":\"work@example.com\",\"password\":\"app-password\"}}}",
    "DEFAULT_EMAIL_ACCOUNT": "work"
  }
}

Single-account .env variables

Use SMTP_HOST, SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASS, IMAP_HOST, IMAP_PORT, IMAP_SECURE, IMAP_USER, and IMAP_PASS instead of EMAIL_ACCOUNTS_JSON.

SMTP_USERNAME/SMTP_PASSWORD and IMAP_USERNAME/IMAP_PASSWORD are accepted aliases. IMAP credentials default to the SMTP credentials when omitted. Use SENDER_EMAILS as a comma-separated allowlist for optional from_email selection.

Tools

See the tool reference for every input, default, response field and error format.

ToolWhat it does
accounts_listList every configured account and identify the default without exposing credentials.
emails_findSearch by text, sender, recipient, subject, date, read state, flag state, or attachments. Optionally return bodies and attachments.
email_sendSend plain-text or HTML email with CC, BCC, sender aliases, and base64 attachments.
email_respondReply, reply-all, or forward by email UID with threading and optional original attachments.
emails_modifyMark read/unread, flag/unflag, or move messages to another folder.
folders_listList folders with optional total and unread counts.

All tools except accounts_list accept an optional account_name. Without it, the server uses DEFAULT_EMAIL_ACCOUNT or the first configured account. There is no application-level account-count limit.

Verify your setup

After restarting the MCP client, try these in order:

  1. “List my configured email accounts.”
  2. “List folders for my work account.”
  3. “Find the five newest unread emails in my personal account.”
  4. “Send a plain-text email from my work account.”

Provider settings

ProviderSMTPIMAPCredential
Gmailsmtp.gmail.com:587imap.gmail.com:993App password
iCloud Mailsmtp.mail.me.com:587imap.mail.me.com:993App-specific password
Other providersUse the provider's SMTP hostUse the provider's IMAP hostProvider password or app password

Use secure: true for implicit TLS ports such as 465/993. Port 587 normally uses secure: false and upgrades with STARTTLS. Both SMTP and IMAP require TLS 1.2 or newer and a valid server certificate. With secure: false, STARTTLS is mandatory before authentication; servers without STARTTLS are rejected. Plaintext-only relays are not supported.

Development

git clone https://github.com/samihalawa/email-smtp-imap-mcp.git
cd email-smtp-imap-mcp
npm ci
npm test

Run the compiled stdio server with npm start. Build a production container with docker build -t email-smtp-imap-mcp ..

Contributing

Issues and focused pull requests are welcome. See CONTRIBUTING.md for the development workflow and SECURITY.md for vulnerability reports.

License

MIT © Sami Halawa

Security and release assurance

Report vulnerabilities through the private route in SECURITY.md. The security assurance programme and source-bound review describe the controls, evidence and publication boundaries for this project. They do not claim an external ISO certificate or completed OpenChain conformance.

Maintainers can run npm run assurance to build the package, run security checks, archive pinned component inputs and verify an offline recovery. The generated release assets include platform-specific build inputs and are intended for durable release retention.

Questions fréquentes

Qu'est-ce que io.github.samihalawa/email-smtp-imap-mcp ?

Multi-account SMTP/IMAP email tools: search, read, send, reply, forward, flags and folders.

Comment installer io.github.samihalawa/email-smtp-imap-mcp ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add email-smtp-imap-mcp -e 'EMAIL_ACCOUNTS_JSON=<your email_accounts_json>' -e 'DEFAULT_EMAIL_ACCOUNT=<DEFAULT_EMAIL_ACCOUNT>' -- npx -y email-smtp-imap-mcp@2.2.2. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour io.github.samihalawa/email-smtp-imap-mcp ?

Oui. Il attend EMAIL_ACCOUNTS_JSON, à renseigner dans sa configuration.

io.github.samihalawa/email-smtp-imap-mcp est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient io.github.samihalawa/email-smtp-imap-mcp ?

Il est publié par samihalawa. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.