mcp-outlook-com
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
mcp-outlook-com
MCP-Server für Claude Desktop: lesender Zugriff auf E-Mails, Kalender und Anhänge im klassischen Outlook über das COM-Objektmodell, dazu das Anlegen von E-Mail-Entwürfen und das Vorbereiten von Besprechungseinladungen.
Schreibend werden nur Entwürfe angelegt (neue Mail, Antwort, Weiterleitung); bestehende Entwürfe werden nicht geändert. Besprechungseinladungen werden vorbefüllt in einem Outlook-Fenster geöffnet, aber nicht gespeichert. Es wird nichts gesendet, verschoben oder gelöscht; dafür gibt es bewusst kein Werkzeug. Mails werden beim Lesen nicht als gelesen markiert. Anhänge werden zum Lesen kurz in ein temporäres Verzeichnis gespeichert und danach wieder gelöscht.
Installation
Installiert wird das Paket (Wheel) eines Releases in eine eigene virtuelle Umgebung, z. B. %USERPROFILE%\.mcp\outlook\.venv. Die Abhängigkeiten kommen dabei mit, Git wird nicht benötigt. Die Prüfsumme (SHA256) des Wheels steht in den Release Notes.
py -3.12 -m venv "$env:USERPROFILE\.mcp\outlook\.venv"
& "$env:USERPROFILE\.mcp\outlook\.venv\Scripts\python.exe" -m pip install https://github.com/StefanZHAW/mcp-outlook-com/releases/download/v<Version>/mcp_outlook_com-<Version>-py3-none-any.whlAlternativ startet uv den Server mit uvx direkt aus dem Wheel, ohne eigene virtuelle Umgebung (Beispiel unter Konfiguration). uv legt die Umgebung beim ersten Start selbst an und nimmt sie danach aus seinem Cache.
Ein Push auf main ändert an installierten Rechnern nichts. Neue Stände kommen erst mit einem Release und einer erneuten Installation dorthin.
Gestartet wird der Server mit mcp-outlook-com.exe aus der virtuellen Umgebung oder mit python -m mcp_outlook_com.
Related MCP server: Microsoft 365 MCP Server
Werkzeuge
Werkzeug | Zweck |
| E-Mail-Ordner aller Postfächer mit Anzahl (ungelesener) Elemente |
| Mails suchen (Begriff, Ordner, Absender, Zeitraum, ungelesen, mit Anhang) |
| Eine Mail vollständig lesen, mit Liste der Anhänge |
| Inhalt eines Anhangs: Text aus PDF, DOCX, XLSX, PPTX, MSG, EML, HTML und Textdateien, Inhaltsverzeichnis von ZIP, Bilder direkt (bei Bedarf verkleinert). Lange Texte in Teilen ( |
| Kalenderordner aller Postfächer |
| Termine in einem Zeitraum, Serientermine aufgelöst, auch freigegebene Kalender (mit Leserechten) |
| Einen Termin mit Teilnehmenden, Antworten und Beschreibung lesen |
| Belegte Zeiten von Personen oder Räumen (beschäftigt, mit Vorbehalt, abwesend, anderswo tätig), ohne Betreff und Ort |
| Zeitfenster, in denen alle Teilnehmenden frei sind, mit Mindestdauer und Tageszeitfenster |
| Neue Mail als Entwurf, mit Standardsignatur |
| Antwort bzw. Allen antworten als Entwurf, Text über Signatur und Zitat |
| Weiterleitung als Entwurf, mit den Anhängen der Originalmail |
| Besprechungseinladung vorbefüllt in einem Outlook-Fenster öffnen, ohne zu speichern |
Entwürfe
Entwürfe werden mit Save im Ordner Entwürfe gespeichert, nie gesendet. Gesendet wird nur von Hand in Outlook. Mit open_in_outlook öffnet sich der Entwurf zusätzlich in einem Outlook-Fenster zum Prüfen.
Der Text (
body) wird als HTML eingefügt, Zeilenumbrüche bleiben erhalten. Mitbody_is_htmlkann ein HTML-Fragment übergeben werden.Die Schrift (Standard Aptos 12 pt) wird direkt an jedem Absatz gesetzt. Sonst gälte die Formatvorlage der Mail, die bei Antworten von der Originalmail stammt und je nach Outlook-Version abweicht. Eigene Schriftangaben in einem HTML-Fragment haben Vorrang.
Die Standardsignatur fügt Outlook selbst ein, wie beim Verfassen einer Mail (Signatur für neue Mails bzw. für Antworten und Weiterleitungen).
Einmal angelegte Entwürfe ändert der Server nicht mehr. Korrekturen in Outlook vornehmen oder einen neuen Entwurf anlegen.
Die Originalmail wird beim Antworten oder Weiterleiten nicht verändert.
Besprechungseinladungen
open_meeting_draft öffnet eine vorbefüllte Einladung (Betreff, Beginn, Ende bzw. Dauer, Ort, erforderliche und optionale Teilnehmende, Räume, Text) in einem Outlook-Fenster. Sie wird weder gespeichert noch gesendet: Gesendet oder gespeichert wird von Hand im Fenster, wird es ohne Speichern geschlossen, bleibt nichts zurück. Bis dahin blockiert sie keine Zeit im Kalender.
Ohne Teilnehmende und Räume entsteht ein einfacher Termin.
Eine Teams-Besprechung wird im Fenster über die Schaltfläche hinzugefügt (oder automatisch, wenn das in Teams für alle Besprechungen eingestellt ist).
Der Text wird als reiner Text übernommen.
Eine geöffnete Einladung kann der Server nicht mehr ändern, da sie keine
EntryIDhat. Korrekturen im Fenster vornehmen oder eine neue Einladung öffnen.
Freigegebene Kalender und Frei/Gebucht
list_events mit shared_mailbox liest die Termine aus dem Kalenderordner der anderen Person. Dafür braucht es eine Freigabe mit Leserechten («Alle Details» bzw. «Prüfer»). Bei der Standardfreigabe «Frei/Gebucht», auch mit Titel und Ort, liefert Outlook dort keine Termine, obwohl die Kalenderansicht in Outlook belegte Zeiten zeigt: Diese Ansicht stammt aus dem Verfügbarkeitsdienst von Exchange, nicht aus dem Kalenderordner.
get_free_busy und find_meeting_times nutzen deshalb Recipient.FreeBusy wie die Terminplanung in Outlook und funktionieren mit jeder Frei/Gebucht-Freigabe innerhalb der Organisation. Externe Adressen werden nicht unterstützt.
Zu beachten:
Die Auflösung ist das gewählte Raster (
interval_minutes, Standard 15 Minuten). Ein Termin von 08:15 bis 08:55 belegt den Block 08:15 bis 09:00.Ein ganztägiger Eintrag «Anderswo tätig» überdeckt in Outlook alle anderen Termine des Tages.
find_meeting_timeswertet ihn als belegt und weist darauf hin.Wie weit in die Zukunft Daten verfügbar sind, bestimmt die Veröffentlichung von Frei/Gebucht in Exchange.
Konfiguration
Über Umgebungsvariablen im Abschnitt env des Eintrags in claude_desktop_config.json:
Variable | Standard | Bedeutung |
| 50 | Höchstzahl Treffer pro Suche |
| 8000 | Textlänge bei |
| 5000 | Höchstzahl durchsuchter Elemente |
| 366 | Längster Zeitraum bei |
| 62 | Längster Zeitraum bei |
| 200 | Länge der Vorschau in Suchtreffern |
| 30000000 | Grösster lesbarer Anhang |
| 30000 | Textmenge pro Aufruf von |
| 3500000 | Grössere Bilder werden verkleinert |
| 1568 | Längste Kante verkleinerter Bilder (Pixel) |
| Aptos | Schriftart für den Text von Entwürfen, leer = Formatvorlage der Mail |
| 12 | Schriftgrösse (pt) für den Text von Entwürfen |
| leer | Datumsformat für Kalenderfilter, leer = kurzes Datumsformat von Windows. Bei Problemen z. B. |
Beispiel für den Eintrag in claude_desktop_config.json (Pfad an die eigene Installation anpassen):
{
"mcpServers": {
"outlook": {
"command": "C:\\Users\\<Benutzer>\\.mcp\\outlook\\.venv\\Scripts\\mcp-outlook-com.exe",
"env": {
"PYTHONUTF8": "1",
"OUTLOOK_MCP_MAX_RESULTS": "50",
"OUTLOOK_MCP_MAX_BODY_CHARS": "20000"
}
}
}
}Mit uvx statt eigener Installation (uvx muss im PATH liegen, sonst den vollständigen Pfad angeben; die Version steht in der Adresse des Wheels):
{
"mcpServers": {
"outlook": {
"command": "uvx",
"args": [
"--python", "3.12",
"--from", "https://github.com/StefanZHAW/mcp-outlook-com/releases/download/v<Version>/mcp_outlook_com-<Version>-py3-none-any.whl",
"mcp-outlook-com"
]
}
}
}Nach einer Änderung Claude Desktop vollständig beenden und neu starten.
Voraussetzungen
Windows mit dem klassischen Outlook (das neue Outlook bietet keinen COM-Zugriff)
Python 3.12 (die Abhängigkeiten installiert das Paket mit)
Ausführung als normaler Benutzer, nicht mit Administratorrechten
Entwicklung
Lokal testen, ohne Claude Desktop:
uv venv --python 3.12
uv pip install -e .
.venv\Scripts\python.exe -c "import mcp_outlook_com.server"Der Code liegt in mcp_outlook_com/server.py. Abhängigkeiten stehen in pyproject.toml (dependencies); das Paket bringt sie bei der Installation mit. mcp bleibt auf 1.x begrenzt, da Version 2 die API ändern kann.
Bei jedem Push auf main und jedem Pull-Request baut der Workflow CI das Wheel und prüft unter Windows, dass es sich installieren und importieren lässt.
Releases
Version in
pyproject.tomlerhöhen (z. B.1.0.0→1.1.0), committen und aufmainpushen.Tag setzen und pushen:
git tag v1.1.0 git push origin v1.1.0Der Workflow
Releaseprüft, dass Tag und Version übereinstimmen, baut das Wheel und erstellt den Release mit dem Wheel, der Prüfsumme (SHA256) und automatisch erzeugten Release Notes. Die Release Notes lassen sich danach auf GitHub ergänzen.
Referenzen
Lizenz
This server cannot be deployed
Maintenance
Related MCP Connectors
Mac & Windows: let ChatGPT, Claude & Cursor use your email, calendar, iMessage, Teams, files.
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Your Telegram, WhatsApp, Instagram, mail and calendar in Claude or ChatGPT. Never sends messages.
Connect Apple iCloud and Microsoft 365 mail, calendars, contacts and tasks to AI.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects Claude with Microsoft Outlook through the Graph API, providing comprehensive email, calendar, folder management, and rules creation capabilities.19MIT
- FlicenseNot gradedqualityDmaintenanceProvides Claude Desktop and Claude Code with access to Microsoft 365 email and calendar services via the Microsoft Graph API. It enables users to manage emails, search folders, schedule calendar events, and check availability through natural language commands.-
- AlicenseNot gradedqualityBmaintenanceEnables Claude Desktop to read, draft, and send emails through legacy Outlook installations via Windows COM automation, using the locally configured Outlook profile without needing Microsoft Graph, OAuth, or server credentials.MIT
- FlicenseNot gradedqualityBmaintenanceConnects Claude Desktop to Outlook via the Microsoft Graph API, enabling users to list, search, and organize emails directly through conversation.-