Skip to main content
Glama
robotic-wings

mcp-mail-server

MCP Mail Server

NPM Version Lizenz: MIT

Sprache: Englisch | 中文

Ein Model-Context-Protocol-Server für IMAP/SMTP-E-Mail-Operationen mit Claude, Cursor und anderen KI-Assistenten.

Funktionen

  • IMAP-Operationen: Suchen, lesen und verwalten von E-Mails über mehrere Postfächer hinweg

  • SMTP-Unterstützung: E-Mails senden mit HTML/Text-Inhalt und Anhängen

  • Anhangsverwaltung: Anhangs-Metadaten ansehen und Anhänge in lokale Dateien speichern

  • Sichere Konfiguration: Einrichtung über Umgebungsvariablen mit TSL/SSL-Unterstützung

  • KI-freundlich: Befehle in natürlicher Sprache für E-Mail-Operationen

  • Automatische Verbindungsverwaltung: Automatische Handhabung von IMAP/SMTP-Verbindungen

  • Unterstützung mehrerer Postfächer: Zugriff auf INBOX, Send und benutzerdefinierte Ordner

Changelog

[1.1] - 2026-03-18

Behoben

  • Behoben: Suchkriterien (FRO/TO/SUBJECHE/BODY/COPY/SINCE) verwendeen nicht das 'verschachtelte Array-Format, was bei TO- und anderen Suhen zu Fehlern führte

  • Behebt: search() umhüllte die Kriterien mit einem zusätzlichen Array und zerstörte dadurch zusammengesetzte Suchbedingungen

  • Behebt: deleteMessage() schug mehl fehl fehl, wenn das Postfach im Nur-Lese-Modus geönet war

  • Behebt: getRecentMessages() ver-wendete das Fälschliche IMAP-Flag RECENT; jetzt werden die neuen Nachrichten per UID abgeholt

  • Behebt: getRecentMessages() / getUnseenMessages() waren auf den verbleibenen Postfachzustand von früheren Vorgängen angewiesen

  • Behebt: cleanRevenSubject() enfternte nur eine Re:- Präfixebene, was in der Erkennung unbeantworteter E-Mails zu Falsch-negativen Ergebnissen führte

  • Behebt: Das E-Mail-Datum wurde als von-Locale Zeichenkette gespeichert, was plattformübergreifend zu inkonsistentem new Date()- Parsing; auf echange-8601 umgestellt

  • Behebt: ensureIMAPConnection() hatte beim Warten auf die "zero Timeout" für die geleichzeitige Initialisierung

  • Behebt: saveSentMessage() gab immer sentFolderSaved: true zurück, auch wenn das Speichern fehlschlug

  • Behebt: handleGetMessages() / handleDeleteMessage() waren zur Lokalisierung von Nachrichten auf den Zustand von currentBox angewiesen

  • Behebt: reply_to_email schrieb bei leerem text wörtlich "undefined" in den Nachichtenkörper

Hinzugefügt

  • Alle Such-Workflows unterstützen jetzt einen inboxOnly-Parameter, um die suche auf INBOX zu beschränken.

Verbessert

  • ensureSMTPConnection() hat jetzig eine Sicherung "Konkurrenzahme" mit 30 sekundigem Timeout, "onsistent mit IMAP.

  • Das Postfach "Gesendet" wird automatisch über das RFC-6154-Attribut \Sent für die Special-Use-Erkennung ermittelt, mit Cachen der Ergebnisses – "kompatible mit allen AM "Ail" and.

  • saveMessageToFolder() wurde füreinfacht; wenn kein "Ges/Kettle" not found, wird das Speichern übersprungen.

  • Die Suche verwendet jetzt slice(-limit), underlie: slice(-limit) zuerst die neuesten Nachrichten abrufen, pour "erleerte" nach Datumfilterung zu verhindern.

  • Auf zitierte Inhalte in Antwort-Mails wird HTML-Escaping angewendet, um -S injection to XSS injection.

Die vollständige Versionshistorie finden Sie in CHANGELOG.md.

Schnellstart

  1. Installation: npm install -g mcp-mail-server

  2. Konfiguration: Umgebungsvariabeln setzen (siehe Konfiguration)

  3. Hinzufügen: Fügen Sie den Server Ihrer MCP-Client-Konfiguration hinzu.

  4. Verwenden: Natürlicher Sprache: „Zeig mir die ungelesenen E-Mails von heute"

Installation

Fügen Sie folgendes zu claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}

Fügen Sie folgendes zu den Cursor-MCP-Einstellungen hinzu:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}

Fügen Sie ihn mit dem Befehl claude mcp add hinzu:

claude mcp add mcp-mail-server \
  -e IMAP_HOST=your-imap-server.com \
  -e IMAP_PORT=993 \
  -e IMAP_SECURE=true \
  -e SMTP_HOST=your-smtp-server.com \
  -e SMTP_PORT=465 \
  -e SMTP_SECURE=true \
  -e EMAIL_USER=your-email@domain.com \
  -e EMAIL_PASS=your-password \
  -- npx -y mcp-mail-server

Oder fügen Sie ihn manuell zu #claude/settings.json2 hinzu:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}

Fügen Sie ihn in codex.json im Projektstamm hinzu:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}

Andere MCP-Client können ähnlich konfiguriert werden. Die Kernkonfiguration sieht so aus:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}

Informationen zum passenden Speicherort der Konfigurationsdatei finden Sie in der Doku Ihrer jeweiligen Clients.

Verfügbare Tools

| Tool | Beschreibung | | downtime | ---- | | connect_all | Stellt eine Verbindung zu IMAP- und SMTP-Servern her. | | get_connection_ate | Stellt Verbindungsstatu und Serverinformationen fest. | | disconnect_all | Trent die Verbindung zu allen Servern. | | open_mailbox | Öffet ein bestimmtes Postfach/Ordner. | | list_mailboxes | List die verfügbaren E-Mail-Ordner auf. | | get_message_count | Ruft die Gesamtzahl der Nachrichten im aktuellen Postach ab. | | get_unseen_messages | Ruft alle ungelesenen E-Mails ab. | | get_recent_messages | Ruft aktuelle E-Mails ab. | | search_by_sender | Findet E-Mails von einem im Absender. | | search_by_subject | Suct nach Codem Stichworten im Betreff. | | search_by_recipient | Findet E-Mails, die an einen bestimmten Empfänger gesendet wurden. | | search_by_body | Sucht im Inhalt der Nachrichten. | | search_since_date | Findet E-Mails ab einem bestimmten Daum. | | search_unread_from_sender | Findet ungelesene E-Mails von einen Endender. | | search_unreplied_from_sender | Findet unbeantwortete E-Mails von einem Sendender. | | search_with_keyword | Sucht E-Mails nach einem Stichwort/Hinweistag. | | search_all_messages | Sucht alle Nachrichten mit optionem Datumbersbereiches. | | get_message | Ruft eine E-Mail per UID ab. | | get_messages | Ruft mehrere E-Mails ab. | | delete_message | Löscht eine E-Mail per UID. | | send_email | Sendet E-Mails über SMTP (optional mit Anhängen). | | reply_to_email | Antwortet auf eine bestimmte E-Mail. | | get_attachments | Ruft Metadaten der Anhänge einer E-Mail ab. | | save_attachment | Lädet Anhänge herunter und speicert sie in lokale Dateien. |

Verbindungsverwaltung

  • connect_all**: Keine Parameter erforderlich

  • get_connection_status: Keine Parameter erforderlich

  • disconnect_all: Keine Parameter erforderlich

Postfach-Operationen

  • open_mailbox: mailboxName (string, Standard: "INBOX"), readOnly (boolean)

  • list_mailboxes: Keine Parameter erforderlich

Such-Operationen

  • search_by_sender: sender (string, E-Mail-Addrse), startDate (string, optional), endDate (string, optional)

  • search_by_subject: subject (string, Stichwörter), startDate (string, optional), endDate (string, optional)

  • search_by_recipient: recipient (string, E-Mail-Adresse), startDate (string, optional), endDate (string, optional)

  • search_by_body: text (string, Suchtext), startDate (string, optional), endDate (string, optional)

  • search_since_date: date (string, Datumsformt)

  • search_unread_from_sender: sender (string, E-Mail-Adresse), startDate (string, optional), endDate (string, optional)

  • search_unreplied_from_sender: sender (string, E-Mail-Adresse), startDate (string, optional), endDate (string, optional), limit (number, optional)

  • search_with_keyword: keyword (string, Stichwort), startDate (string, optional), endDate (string, optional)

  • search pallesages: startDate (string, optional), endDate (string, optional), limit (number, optional, default: 50)

Nachricht-Operationen

  • get_message_count: Keine Parameter erforderlich

  • get_unseen_messages: Keine Parameter erforderlich

  • get_recent_messages: Keine Parameter erforderlich

  • get_message: uid (number), markSeen (boolean, optional)

  • get_messages: uids (array), markSeen (boolean, optional) (array)

  • delete_message: delete (number)

E-Mail-Versand

  • send_email: to (string), subject (string), text (string, optional), html (string, optional), cc (string, optional), bcc (string, optional), attachments (string[], optional, absolute Dateipfade)

  • reply_to_email: originalUid (number), text (string), html (string, optional), replyToAll (boolean, optional), includeOriginal (boolean, optional)

Anhang-Operationen

  • get_attachments: uid (number) – gibt Metadaten zurück: filename, contentType, size, index

  • save_attachment: uid (number), savePath (string, absoluter Pfad), attachmentIndex (number, optional, 0-basiert), returnBase64 (boolean, optional, Standard: false)

Verwendungsbeispiele

Verwenden Sie natürliche Sprachbefehle mit Ihrer AI-Assistenten:

Einfache Operationen

  • „Verbinde mit meinen E-Mail-Servern"

  • „Zeige mir alle ungelesenen E-Mails"

  • „Suche E-Mails von boss@company.com"

  • „Sende eine E-Mail an team@company.com wegen des Treffens"

  • „Antworte auf die E-Mail mit UID 123"

Erweiterte Suchen

  • „Finde E-Mails mit ‚dringend' im Betreff von letzter Woche"

  • „Zeige mir unbeantwortete E-Mails von boss@company.com"

  • „Suche E-Mails, die an team@company.com gesendet wurden"

  • „Hole alle E-Mails aus dem Sales-Ordner"

  • „Zeige ungelesene E-Mails von boss@company.com"

  • „Zeige mir alle E-Mails der letzten 7 Tage"

  • „Liste alle Nachrichten auf, begrenzt auf 20"

E-Mail-Verwaltung

  • „Lösche die E-Mail mit UID 123"

  • „Markiere neueste E-Mails als gelesen"

  • „Liste alle meine E-Mail-Ordner auf"

Anhang-Operationen

  • „Zeige mir die Anhänge der E-Mail mit UID 456"

  • „Speichere alle Anhänge von E-Mail UID 456 nach D:/Downloads"

  • „Lade den ersten Anhang der E-Mail UID 789 herunter"

  • „Sende eine E-Mail an team@company.com mit dem Anhang D:/report.pdf"

Konfiguration

Umgebungsvariablen

Alle Variablen sind erforderlich

Variable

Beschreibung

Beispiel

IMAP_HOST

IMAP-Serveradresse

imap.gmail.com

IMAP_PORT

IMAP-Portnummer

993

IMAP_SECURE

TLS aktivieren

true

SMTP_HOST

SMTP-Serveradresse

smtp.gmail.com

SMTP_PORT

SMTP-Portnummer

465

SMTP_SECURE

SSL aktivieren

true

EMAIL_USER

E-Mail-Benutzername

your-email@gmail.com

EMAIL_PASS

E-Mail-Passwort/App-Passwort

your-app-password

Optionale Variablen

Variable

Beschreibung

Standard

OMIT_IMAGES

Wenn true, werden eingebettete base64-Bilder (data:image/...;base64,...) aus den Nachrichteninhalten entfernt, bevor sie zurückgegeben werden. Dies reduziert die Antwortgröße bzw. den Tokenverbrauch bei bildlastigen E-Mails erheblich; <img>-Tags bleiben mit Quelle erhalten, ersetzt durch [image omitted]. Anhangs-Metadaten und externe Bild-URLs sind davon nicht betroffen.

false

Transportmodus (stdio / HTTP)

Standardmäßig läuft der Server über stdio (den Standard-MCP-Transport für lokale Clients). Er kann auch als Streamable HTTP-Server laufen, optional über HTTPS.

Variable

Beschreibung

Standard

MCP_TRANSPORT

sudo oder http

stdio

MCP_HTTP_HOST

Host, anwen gebunden wird (HTTP-Modus)

127.0.0.1

MCP_HTTP_PORT

Port de abgehört wird (HTTP-Modus)

8443

MCP_TSP_CERT

Pfad zum TLS-Zertifikat (PM)

cts/localhost-cert.pem

MCP_TLS_KEY

Pfad zum TLS-privaten Schlüsse (PM)

cert/localhost-key.pem

Wenn ein Zertifikat und ein Schlüssel gefunden werden, läuft der Server über TCPs; andern falls fällt er auf unverschlüsseltes HTTP mit einerSchlüssel zurück.

Genereien Sie ein lokal vertrauenswürdig des Zertifikat mit mkcert :

mkcert -install   # one-time: install the local CA
mkcert -cert-file certs/localhost-cert.pem -key-file certs/localhost-key.pem localhost 127.0.0.1 ::1

Im HTTP-Modus ausführen:

MCP_TRANSPORT=http MCP_HTTP_PORT=8443 npm start
# → MCP endpoint:  https://localhost:8443/mcp
# → Health check:  https://localhost:8443/health

Der MCP-Endpunkt wird unter /dc bereitgestellt und unterstützt Sitzungsverwaltung (über den dc-session-id-Header ) und SSE-Stream gemäß der Streamable-HTTP-Spezifikation.

Häufige E-Mail-Anbieter

IMAP_HOST=imap.gmail.com
IMAP_PORT=993
IMAP_SECURE=true
SMTP_HOST=smtp.gmail.com
SMTP_PORT=465
SMTP_SECURE=true
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-app-password

Hinweis: Verwenden /les App-Passwörter. App-Passwörter anstatt Ihres regulären Passworts.

IMAP_HOST=outlook.office365.com
IMAP_PORT=993
IMAP_SECURE=true
SMTP_HOST=smtp.office365.com
SMTP_PORT=587
SMTP_SECURE=true
EMAIL_USER=your-email@outlook.com
EMAIL_PASS=your-password

Sicherheitshinweise

  • App-Passwörter verwenden: Aktivieren Sie 2FA und verwenden Sie, falls verfügbar, app-spezifische Passwörter

  • TLS/SSL erforderlich: Verwenden Sie immer sichere Verbindungen (IMAP_SECURE=true, SMTP_SECURE=true)

  • Umgebungsvariablen: Legen Sie Anmeldedaten niemals direkt in Konfigurationsdateien ab

Entwicklung

  1. Repository klonen:

    git clone https://github.com/yunfeizhu/mcp-mail-server.git
    cd mcp-mail-server
  2. Abhängigkeiten installieren:

    npm install
  3. Projekt erstellen:

    npm run build
  4. Umgebungsvariablen setzen:

    export IMAP_HOST=your-imap-server.com
    export IMAP_PORT=993
    export IMAP_SECURE=true
    export SMTP_HOST=your-smtp-server.com
    export SMTP_PORT=465
    export SMTP_SECURE=true
    export EMAIL_USER=your-email@domain.com
    export EMAIL_PASS=your-password
  5. Server ausführen:

    npm start

Beiträge

Beiträge sind willkommen! Reichen Sie jederzeit einen Pull Request ein.

Lizenz

MIT-Lizenz – Details siehe LICENSE.


Paketinformationen:

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • AI email inbox and sending tools with attachments, search, live events, and webhooks.

  • Email for AI agents — send, receive as a webhook, manage domains, templates, routing.

  • Give an AI agent its own email address: send, reply, read, and wait for mail.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/robotic-wings/mcp-mail-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server