mcp-mail-server
MCP Mail Server
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
Related MCP server: Mailbridge MCP
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 SuchbedingungenBehebt:
deleteMessage()schug mehl fehl fehl, wenn das Postfach im Nur-Lese-Modus geönet warBehebt:
getRecentMessages()ver-wendete das Fälschliche IMAP-FlagRECENT; jetzt werden die neuen Nachrichten per UID abgeholtBehebt:
getRecentMessages()/getUnseenMessages()waren auf den verbleibenen Postfachzustand von früheren Vorgängen angewiesenBehebt:
cleanRevenSubject()enfternte nur eineRe:- Präfixebene, was in der Erkennung unbeantworteter E-Mails zu Falsch-negativen Ergebnissen führteBehebt: Das E-Mail-Datum wurde als von-Locale Zeichenkette gespeichert, was plattformübergreifend zu inkonsistentem
new Date()- Parsing; auf echange-8601 umgestelltBehebt:
ensureIMAPConnection()hatte beim Warten auf die "zero Timeout" für die geleichzeitige InitialisierungBehebt:
saveSentMessage()gab immersentFolderSaved: truezurück, auch wenn das Speichern fehlschlugBehebt:
handleGetMessages()/handleDeleteMessage()waren zur Lokalisierung von Nachrichten auf den Zustand voncurrentBoxangewiesenBehebt:
reply_to_emailschrieb bei leeremtextwö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
\Sentfü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
Installation:
npm install -g mcp-mail-serverKonfiguration: Umgebungsvariabeln setzen (siehe Konfiguration)
Hinzufügen: Fügen Sie den Server Ihrer MCP-Client-Konfiguration hinzu.
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-serverOder 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, indexsave_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-Serveradresse |
|
| IMAP-Portnummer |
|
| TLS aktivieren |
|
| SMTP-Serveradresse |
|
| SMTP-Portnummer |
|
| SSL aktivieren |
|
| E-Mail-Benutzername |
|
| E-Mail-Passwort/App-Passwort |
|
Optionale Variablen
Variable | Beschreibung | Standard |
| Wenn |
|
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 |
|
|
|
| Host, anwen gebunden wird (HTTP-Modus) | 127.0.0.1 |
| Port de abgehört wird (HTTP-Modus) |
|
| Pfad zum TLS-Zertifikat (PM) | cts/localhost-cert.pem |
| 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 ::1Im HTTP-Modus ausführen:
MCP_TRANSPORT=http MCP_HTTP_PORT=8443 npm start
# → MCP endpoint: https://localhost:8443/mcp
# → Health check: https://localhost:8443/healthDer 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-passwordHinweis: 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-passwordSicherheitshinweise
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
Repository klonen:
git clone https://github.com/yunfeizhu/mcp-mail-server.git cd mcp-mail-serverAbhängigkeiten installieren:
npm installProjekt erstellen:
npm run buildUmgebungsvariablen 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-passwordServer ausführen:
npm start
Beiträge
Beiträge sind willkommen! Reichen Sie jederzeit einen Pull Request ein.
Lizenz
MIT-Lizenz – Details siehe LICENSE.
Paketinformationen:
Paket:
mcp-mail-serverNode.js: ≥18.0.0
Repository: GitHub
Issues: Fehler melden
This server cannot be deployed
Maintenance
Related MCP Connectors
Email for AI agents: read, search and send from your Gmail, Outlook, Yahoo, iCloud or IMAP inbox.
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Email inboxes and calendars for AI agents: send, receive, search, draft and schedule.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to read, search, compose, and send emails by connecting to any IMAP/SMTP provider. It supports comprehensive mailbox management, including draft handling and message deletion, directly through natural language.10154 npm11MIT
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to email accounts via IMAP/SMTP, enabling reading, searching, sending, and organizing emails with features like smart drafts, scheduling, and attachment handling.199 npm2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with email accounts via IMAP and SMTP, supporting mailbox listing, email search, retrieval, sending, and management.MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to send, read, and manage emails via SMTP and IMAP, with support for attachments, threads, and mailbox organization.1610 npm1MIT