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
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 installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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