Skip to main content
Glama

outlook-ews-mcp

Python MCP Exchange Status License

outlook-ews-mcp ist ein MCP-Server für lokales Microsoft Exchange über EWS (exchangelib). Er bietet MCP-kompatiblen Clients (Claude Desktop, Claude Code und jedem anderen MCP-Client) Zugriff auf E-Mail, Kalender, Kontakte, Ordner, Anhänge und Verfügbarkeitsdaten über einen einzigen, testbaren Python-Dienst – ohne direkte Mailbox-Skripte.

Umbenannt von outlook-mcp. Dieser Name war auf PyPI bereits von einem unabhängigen Projekt belegt, daher heißen Distribution und CLI jetzt outlook-ews-mcp. Der Python-Importpfad ist unverändert. Bis zur ersten getaggten PyPI-Veröffentlichung installieren Sie aus diesem Repository wie unten gezeigt.

Inhalt

Related MCP server: owa-mail-mcp

Highlights

  • E-Mail – auflisten, suchen (Teilstring oder Advanced Query Syntax), lesen, senden, antworten, weiterleiten, verschieben, kopieren, löschen, markieren, kategorisieren, Massenaktionen, roher MIME-Export, Anhänge hinzufügen/löschen

  • System – Posteingangsregeln, Abwesenheitsnotiz (automatische Antworten), schreibgeschützte Delegiertenliste

  • Kalender – auflisten, erstellen, aktualisieren, löschen, auf Einladungen antworten, freie Zeitfenster finden, Kalender eines freigegebenen/delegierten Postfachs anzeigen, Raumfinder, Massenaktionen

  • Kontakte – suchen, lesen, erstellen, aktualisieren, löschen

  • Ordner & Anhänge – Ordner-CRUD und Anhangs-Download

  • AuthentifizierungNTLM und Basic gegen lokales Exchange

  • Transportstdio und SSE

  • Architektur – zentrales Fehler-Mapping durch eine einzige ExchangeClient-Abstraktion (siehe Projektnotizen)

  • Sicherheit – ein datenschutzfreundlicherer Rauchtest standardmäßig (siehe Rauchtest)

  • Betrieb – Docker-Image sowie GitHub- und GitLab-CI/CD-Pipelines enthalten

Werkzeugkatalog

Jedes unten aufgeführte Werkzeug ist in tool_specs.py registriert, der einzigen Quelle der Wahrheit für Name, Beschreibung und Schema. Schreibgeschützt markiert Werkzeuge, die das Postfach nie verändern – sie erhalten mehr Parallelität (siehe Anfragewarteschlange) und können bedenkenlos spekulativ aufgerufen werden.

System

Werkzeug

Beschreibung

Schreibgeschützt

ping_exchange

Konnektivität zu Exchange prüfen

get_mailbox_info

Postfach-Metadaten abrufen

list_delegates

Postfach-Delegierte und deren Ordnerberechtigungsstufen auflisten – schreibgeschützt, da exchangelib keine Delegierten-Schreibunterstützung hat

list_inbox_rules

Serverseitige Posteingangsregeln auflisten

create_inbox_rule

Serverseitige Posteingangsregel erstellen, z. B. „von diesem Absender → in Ordner verschieben“

update_inbox_rule

Regel aktivieren/deaktivieren oder Priorität ändern (andere Felder sind hier nicht aktualisierbar)

delete_inbox_rule

Serverseitige Posteingangsregel per ID löschen

get_out_of_office

Abwesenheitsnotiz-Einstellungen (automatische Antworten) abrufen

set_out_of_office

Automatische Antworten deaktivieren, aktivieren oder ein Start-/Endfenster planen

⚠️ create_inbox_rule / update_inbox_rule / delete_inbox_rule verwalten Regeln über EWS, wodurch der clientseitige Regel-Blob entfernt wird, den Desktop-Outlook behält – dies kann Regeln löschen, die ein Benutzer in Outlook selbst erstellt hat. Dies ist dokumentiertes EWS-Verhalten, kein Fehler hier.

E-Mail

Werkzeug

Beschreibung

Schreibgeschützt

list_emails

E-Mails in einem Ordner auflisten

get_email

Vollständige E-Mail per ID abrufen

get_email_mime

Rohen RFC-822-MIME-Inhalt einer Nachricht exportieren, base64-kodiert

get_thread

Alle Nachrichten einer Unterhaltung in Reihenfolge abrufen, einschließlich Textkörper

search_emails

Nach Teilstring (Betreff/Text/Absender) oder serverseitiger Advanced Query Syntax suchen

send_email

Neue E-Mail senden

reply_email

Auf eine E-Mail antworten

forward_email

E-Mail weiterleiten

move_email

E-Mail in einen anderen Ordner verschieben

copy_email

E-Mail in einen anderen Ordner kopieren

move_emails

Massenverschieben mit Ergebnissen pro Element – eine fehlerhafte ID lässt den Rest nicht scheitern

copy_emails

Massenkopieren mit Ergebnissen pro Element

delete_emails

Massenlöschen mit Ergebnissen pro Element (weiches Löschen, außer hard_delete)

delete_email

E-Mail löschen

mark_email

Gelesen-Status, Wichtigkeit oder Folgekennzeichnung aktualisieren

categorize_email

Outlook-Kategorien (die farbigen Bezeichnungen) setzen, hinzufügen oder entfernen

mark_emails

Massenversion von mark_email, mit Ergebnissen pro Element

categorize_emails

Massenversion von categorize_email, mit Ergebnissen pro Element

list_categories

Verwendete Kategorien mit Anzahl auflisten, aus aktuellen Nachrichten gesampelt (nicht die Postfach-Masterkategorieliste)

list_folders

Postfachordner auflisten

create_folder

Postfachordner erstellen

rename_folder

Ordner umbenennen – verweigert integrierte Ordner (Posteingang, Gesendete Elemente, Kalender, ...)

delete_folder

Ordner und alles darin löschen – verweigert integrierte Ordner

create_draft

E-Mail-Entwurf erstellen

update_draft

Entwurf aktualisieren; weggelassene Felder bleiben unverändert, attachments (falls angegeben) ersetzt den gesamten Satz

send_draft

Vorhandenen Entwurf senden

add_attachment

Lokale Datei an eine Nachricht anhängen, typischerweise einen Entwurf – die Datei muss unter EXCHANGE_ATTACHMENT_ROOT liegen

delete_attachment

Einen Anhang per ID aus einer Nachricht entfernen

get_attachment

Anhang auf der Festplatte speichern

Kalender

Tool

Beschreibung

Schreibgeschützt

list_events

Kalenderereignisse in einem Zeitraum auflisten; mailbox für den Standardkalender eines Kollegen übergeben (erfordert Delegaten-/Identitätswechsel-Zugriff, nicht mit calendar_id kombinierbar)

get_event

Kalenderereignis per ID abrufen; mailbox für den Kalender eines Kollegen übergeben

create_event

Kalenderereignis erstellen

update_event

Kalenderereignis aktualisieren

delete_event

Kalenderereignis löschen

respond_to_invite

Einladung annehmen, ablehnen oder vorläufig beantworten

find_free_slots

Freie Meeting-Zeitfenster finden

delete_events

Ereignisse in Bulk löschen, mit Ergebnissen pro Element

respond_to_invites

In Bulk auf Einladungen antworten, mit Ergebnissen pro Element

get_my_availability

Frei/Gebucht-Zeitfenster abrufen; mailbox für den Kalender eines Kollegen übergeben

list_calendars

Kalender auflisten

list_room_lists

Room-Finder-Raumlisten (Gruppen von Besprechungsräumen) auflisten

list_rooms

Besprechungsräume in einer Room-Finder-Raumliste auflisten

Kontakte

Tool

Beschreibung

Schreibgeschützt

search_contacts

Kontakte durchsuchen

get_contact

Kontakt per ID abrufen

create_contact

Persönlichen Kontakt erstellen

update_contact

Persönlichen Kontakt aktualisieren

delete_contact

Persönlichen Kontakt löschen

Typische Anwendungsfälle

  • Claude Desktop oder einen anderen MCP-Client mit lokalem Exchange verbinden

  • Posteingangsnachrichten durchsuchen und vollständigen E-Mail-Inhalt abrufen

  • E-Mails aus KI-Workflows senden oder entwerfen

  • Kalender einsehen und Besprechungen erstellen

  • Frei/Gebucht-Zeitfenster für die Terminplanung prüfen

  • Persönliche Kontakte oder die globale Adressliste durchsuchen

  • Exchange-Operationen über eine kontrollierte MCP-Grenze bereitstellen, statt direkt per Skript auf Postfächer zuzugreifen

Sicherheitshinweise

Was der aktuelle Code tut:

Eingeschränkte Konnektivität

Verbindet sich nur mit dem in EXCHANGE_SERVER konfigurierten Exchange/EWS-Endpunkt

Keine Telemetrie

Enthält keine Telemetrie-, Analyse- oder Drittanbieter-Datenexportlogik

Geheimnisse bleiben lokal

Bewahrt Geheimnisse in Umgebungsvariablen / .env auf, die von .gitignore ignoriert werden (.env, .env.*, während .env.example erhalten bleibt)

Saubere Fehlerantworten

Strukturierte MCP-Fehlerantworten enthalten niemals rohen Exchange-Ausnahmetext, Nachrichtentexte, Anhängeinhalte oder Passwörter; erfolgreiche Tools geben nur die angeforderten Postfachdaten zurück

Saubere Protokolle

LOG_LEVEL steuert nur die eigenen outlook_mcp.*-Logger der App; die SOAP-XML-Logger von exchangelib – die andernfalls vollständiges Anfrage-/Antwort-XML ausgeben würden, selbst bei ERROR-Level bei Transportfehlern – werden immer zwangsweise stummgeschaltet

Saubere Docker-Builds

.dockerignore schließt .env, Tests, Caches und VCS-Metadaten aus dem Build-Kontext aus

Worauf Sie weiterhin achten sollten:

  • EXCHANGE_VERIFY_SSL=false deaktiviert die TLS-Zertifikatsprüfung – nur für vertrauenswürdige interne/self-signed Umgebungen.

  • EXCHANGE_AUTH_TYPE=Basic sendet Anmeldedaten im Klartext, daher weigert sich der Server, gegen einen http://-EXCHANGE_SERVER zu starten; nur mit EXCHANGE_ALLOW_INSECURE_BASIC_AUTH=true für einen lokalen/Test-Server, den Sie kontrollieren, überschreiben.

  • get_attachment schreibt Dateien auf die Festplatte, und send_email/reply_email/forward_email/ create_draft lesen lokale Dateien (über attachments) und hängen deren Inhalte an ausgehende E-Mails an. In Kombination mit nicht vertrauenswürdigem E-Mail-Inhalt ist dies ein plausibler Weg für prompt-injizierte Exfiltration beliebiger Dateien, die der Prozess lesen kann. Lokaler Dateizugriff ist standardmäßig verweigert und funktioniert erst, wenn EXCHANGE_ATTACHMENT_ROOT auf ein absolutes Verzeichnis gesetzt ist, das dann sowohl attachments-Pfade als auch save_path von get_attachment's auf diesen Verzeichnisbaum beschränkt (ein nicht gesetztes save_path fällt weiterhin auf das System-Temp-Verzeichnis zurück).

  • outlook-ews-mcp-smoke ist standardmäßig datenschutzsicher und gibt nur maskierte Postfachinformationen plus Zähler aus; setzen Sie OUTLOOK_MCP_SMOKE_INCLUDE_DATA=true nur, wenn Sie explizit echte Posteingangs-/Ereignisdaten in stdout möchten.

  • Wenn Sie Dateiprotokollierung mit LOG_FILE aktivieren, schützen Sie diese Datei mit Betriebssystemberechtigungen.

  • Wenn Sie Docker-Images aus CI veröffentlichen, schützen Sie den GitLab/GitHub-Projektzugriff und die Registry-Berechtigungen.

Schnellstart

uv venv
source .venv/bin/activate
uv pip install -e .[dev]
cp .env.example .env
outlook-ews-mcp

Standardmäßig läuft der Server im stdio-Modus. Setzen Sie MCP_TRANSPORT=sse, um stattdessen einen HTTP-Server zu starten.

Konfiguration

Minimale .env für den Einstieg – alles andere unten hat einen funktionierenden Standardwert:

EXCHANGE_SERVER=https://mail.company.com/EWS/Exchange.asmx
EXCHANGE_USERNAME=DOMAIN\username
EXCHANGE_PASSWORD=secret
EXCHANGE_EMAIL_ADDRESS=user@company.com
EXCHANGE_AUTH_TYPE=NTLM

Eine vollständig kommentierte Kopie jeder Variable befindet sich in .env.example.

Variable

Standard

Beschreibung

EXCHANGE_SERVER

(erforderlich)

EWS-Endpunkt-URL, z. B. https://mail.company.com/EWS/Exchange.asmx

EXCHANGE_USERNAME

(erforderlich)

DOMAIN\username oder ein UPN. Genau ein Backslash — dotenv verarbeitet keine Escape-Sequenzen

EXCHANGE_PASSWORD

(erforderlich)

Kontopasswort

EXCHANGE_EMAIL_ADDRESS

nicht gesetzt

SMTP-Adresse; setzen, wenn EXCHANGE_USERNAME keine ist

EXCHANGE_AUTH_TYPE

NTLM

NTLM oder Basic

EXCHANGE_ALLOW_INSECURE_BASIC_AUTH

false

Basic-Authentifizierung über http:// erlauben — nur für lokale/Test-Server

EXCHANGE_VERIFY_SSL

true

TLS-Zertifikat des Servers verifizieren; false nur für vertrauenswürdige interne/selbstsignierte Umgebungen

EXCHANGE_VERSION

nicht gesetzt (auto-erkannt)

Exchange-Serverversion, z. B. EXCHANGE_2016

EXCHANGE_TIMEZONE_FALLBACK

Europe/Moscow

Wird nur verwendet, wenn Exchange eine nicht auflösbare GUID-Zeitzonen-ID meldet; im Normalbetrieb wird die Standardzeitzone des Postfachs verwendet

EXCHANGE_TIMEOUT

30

Timeout pro Anfrage in Sekunden (1–300)

EXCHANGE_MAX_RETRY_WAIT_SECONDS

90

Wanduhr-Retry-Budget für schreibgeschützte Aufrufe, wenn Exchange sich selbst als ausgelastet meldet, keine Retry-Anzahl; 0 deaktiviert Retries. Schreibvorgänge werden nie automatisch wiederholt

EXCHANGE_IMPERSONATE_AS

nicht gesetzt

Postfach, das imitiert werden soll (erfordert Exchange-Impersonierungsberechtigungen)

EXCHANGE_ATTACHMENT_MAX_SIZE_MB

10

Maximale Größe pro Anhang, durchgesetzt sowohl beim Hochladen als auch beim get_attachment-Download (1–100)

EXCHANGE_ATTACHMENT_MAX_COUNT

10

Maximale Anzahl von Anhängen bei einem einzelnen Senden/Antworten/Weiterleiten/create_draft-Aufruf (1–100)

EXCHANGE_ATTACHMENT_MAX_TOTAL_SIZE_MB

25

Maximale kombinierte Anhangsgröße bei einem einzelnen Aufruf (1–500)

EXCHANGE_ATTACHMENT_ROOT

nicht gesetzt (deaktiviert)

Verzeichnis, das Anhangspfade begrenzt. Nicht gesetzt verweigert jeglichen lokalen Dateizugriff für attachments/save_path; auf ein absolutes Verzeichnis setzen, um Pfade darin zu erlauben

EXCHANGE_EMAIL_BODY_MAX_CHARS

200000

Obergrenze für get_email's body_text/body_html (1.000–5.000.000); längere Texte werden mit truncated: true abgeschnitten

EXCHANGE_EMAIL_MIME_MAX_SIZE_MB

25

Obergrenze für die Roh-MIME-Exportgröße vor der base64-Erweiterung (1–100)

EXCHANGE_SIGNATURE_TEXT

nicht gesetzt

Wird an ausgehende Textnachrichten und Antworten/Weiterleitungen angehängt. Es gibt keine EWS-Signatur-API, daher ist dies Konfiguration, nicht die Outlook-Signatur des Postfachs

EXCHANGE_SIGNATURE_HTML

nicht gesetzt

Wird an ausgehende HTML-Nachrichten angehängt. Gleicher Vorbehalt wie oben; keine Konvertierung zwischen den beiden. Beide können pro Aufruf mit include_signature: false übersprungen werden

MCP_TRANSPORT

stdio

stdio oder sse

MCP_SSE_HOST

127.0.0.1

Bind-Host, wenn MCP_TRANSPORT=sse

MCP_SSE_PORT

8080

Bind-Port, wenn MCP_TRANSPORT=sse

MCP_MAX_CONCURRENCY

4

Gleichzeitige schreibgeschützte Tool-Aufrufe (1–8); mutierende Aufrufe laufen immer exklusiv. Siehe Anfragewarteschlange

MCP_MAX_QUEUE_SIZE

20

Maximale Anzahl gleichzeitig zugelassener Aufrufe, laufend + wartend (1–1000); darüber hinaus erhalten Aufrufe sofort einen server_busy-Fehler

LOG_LEVEL

INFO

DEBUG, INFO, WARNING oder ERROR

LOG_FILE

nicht gesetzt (stderr)

Pfad zur Logdatei; bei Setzen mit Betriebssystem-Berechtigungen schützen

Verhaltenshinweise, die nicht an eine einzelne Variable gebunden sind:

  • list_events und find_free_slots akzeptieren ein begrenztes limit (Standard 200, Maximum 1000); Ereigniszeiträume sind auf 366 Tage und Zeitfenster für freie Slots auf 31 Tage begrenzt, sodass breite Abfragen keine unbegrenzten EWS- oder MCP-Antworten erzeugen können.

  • Auflistungen bleiben bewusst schlank: E-Mail-Zusammenfassungen enthalten den Absender, aber keine Empfängerlisten (get_email hat sie), list_events gibt Ereignisse ohne Textkörper zurück (get_event hat sie), und get_email gibt RFC-822-Header nur mit include_headers: true zurück.

  • Sendevorgänge geben id: null zurück, wenn EWS keine dauerhafte ID für die gesendete Kopie bereitstellt (insbesondere Antworten, Weiterleitungen und gesendete Entwürfe).

  • Anhangsmetadaten enthalten downloadable; eingebettete Exchange-Elementanhänge haben downloadable: false und können nicht mit get_attachment gespeichert werden.

Anfragewarteschlange

Clients geben mehrere Tool-Aufrufe parallel aus. Exchange-Arbeit ist blockierend, daher führt der Server sie in Worker-Threads aus und lässt Aufrufe über eine gemeinsame FIFO-Warteschlange zu.

  • MCP_MAX_CONCURRENCY (Standard 4) legt fest, wie viele schreibgeschützte Aufrufe gleichzeitig laufen, sodass ein Agent, der eine E-Mail, die Ordnerliste und den Kalender anfordert, die langsamste Roundtrip-Zeit zahlt statt der Summe. Mutierende Aufrufe laufen immer exklusiv — einer nach dem anderen, nie überlappend mit einem Lesevorgang — sodass Lese-/Schreib-Wettläufe auf gemeinsamen Kontozustand nicht auftreten können. Aufrufer über dem Limit warten, in der Reihenfolge ihres Eintreffens; ein wartender Schreibvorgang verhindert, dass spätere Lesevorgänge ihn überholen.

  • MCP_MAX_QUEUE_SIZE (Standard 20) begrenzt, wie viele Aufrufe gleichzeitig zugelassen werden können, laufend oder wartend. Sobald so viele bereits in der Warteschlange sind, erhalten weitere Aufrufe sofort einen server_busy-Fehler, statt sich einer unbegrenzten Warteschlange anzuschließen.

  • Der Transport bleibt reaktionsfähig, während Arbeit läuft. Tools werden awaited statt auf dem Event-Loop-Thread ausgeführt, sodass fertige Antworten sofort hinausgehen und Pings beantwortet werden, während ein langer Aufruf noch läuft.

  • Es gibt bewusst kein Timeout pro Aufruf. Ein Thread, der auf einem Socket-Read blockiert, kann von außen nicht beendet werden; die Laufzeit kann nur aufhören, auf ihn zu warten, was den Thread zusammen mit der EWS-Sitzung, die er hält, aufgibt. Der Sitzungspool von exchangelib hat ein hartes Maximum und gibt Sitzungen in einer Schleife ohne Aufgabepfad aus, sodass verlorene Sitzungen ihn schließlich aushungern und jeder spätere Aufruf für immer blockiert. Ein langsamer Aufruf wird stattdessen ausgesessen, begrenzt durch EXCHANGE_TIMEOUT plus EXCHANGE_MAX_RETRY_WAIT_SECONDS: Die Retry-Richtlinie des Kontos ist Fail-Fast, sodass jeder EWS-Aufruf bei seinem ersten transienten Fehler eine Ausnahme auslöst, statt dass exchangelib intern endlos wiederholt, und ExchangeClient wiederholt selbst nur schreibgeschützte Aufrufe, begrenzt durch dieses Wanduhr-Budget. Schreibvorgänge werden nie automatisch wiederholt. Überschreitungen über das erwartete Budget hinaus werden protokolliert.

Claude Desktop-Beispiel

{
  "mcpServers": {
    "outlook": {
      "command": "outlook-ews-mcp",
      "env": {
        "EXCHANGE_SERVER": "https://mail.company.com/EWS/Exchange.asmx",
        "EXCHANGE_USERNAME": "DOMAIN\\username",
        "EXCHANGE_PASSWORD": "secret",
        "EXCHANGE_EMAIL_ADDRESS": "user@company.com",
        "EXCHANGE_AUTH_TYPE": "NTLM"
      }
    }
  }
}

Smoke-Check

Nach dem Ausfüllen von .env ausführen:

outlook-ews-mcp-smoke

Die Standardausgabe wird zur sichereren Überprüfung bereinigt. Wenn Sie absichtlich Beispieldaten für Postfach/Ereignisse in der Ausgabe wünschen:

OUTLOOK_MCP_SMOKE_INCLUDE_DATA=true outlook-ews-mcp-smoke

Docker

docker build -t outlook-ews-mcp .
docker run --rm --env-file .env outlook-ews-mcp

CI/CD

GitHub Actions und GitLab CI führen beide Lint, Formatierung, Typprüfungen, Tests, Abhängigkeitsaudit und Paket-Builds aus, unter Verwendung der in pyproject.toml festgelegten uv-Version.

GitHub

Veröffentlicht zusätzlich getaggte Releases (v*) auf PyPI über OIDC Trusted Publishing. Vor dem ersten Release einen PyPI-Pending-Publisher für Repository viartemev/outlook-ews-mcp, Workflow ci.yml und Umgebung pypi konfigurieren — es wird kein langlebiges PyPI-Token in GitHub gespeichert.

GitLab

Erstellt und pusht zusätzlich ein Docker-Image in die GitLab Container Registry auf dem Standard-Branch und auf Tags, unter Verwendung der eingebauten Variablen CI_REGISTRY / CI_REGISTRY_USER / CI_REGISTRY_PASSWORD / CI_REGISTRY_IMAGE.

Standardmäßiges Image-Tagging-Verhalten:

Auslöser

Gepushte Tags

Standard-Branch

:$CI_COMMIT_SHORT_SHA und :latest

Git-Tag

:$CI_COMMIT_TAG

Entwicklung

uv run --python 3.12 --with '.[dev]' ruff check .
uv run --python 3.12 --with '.[dev]' pytest -q

Projektnotizen

  • Die Implementierung ist um eine einzige ExchangeClient-Abstraktion zentriert, sodass Authentifizierung, Transport, Retries und Fehlerzuordnung zentralisiert bleiben.

  • Fehler werden in einer strukturierten JSON-Form zurückgegeben, die für die MCP-isError=true-Behandlung geeignet ist.

Mitwirken

Fehlerberichte und PRs sind willkommen — siehe CONTRIBUTING.md für die Einrichtung einer Entwicklungsumgebung und das Ausführen der Testsuite ohne einen echten Exchange-Server. Für Sicherheitsmeldungen siehe SECURITY.md.

Lizenz

MIT — siehe LICENSE.

Install Server
A
license - permissive license
C
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for any Microsoft Exchange / OWA deployment. Gives LLM agents access to email, calendar, directory search, folders, availability, and meeting analytics via 30 tools.
    30
    7
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A local MCP server for on-premises Microsoft Exchange, connecting via EWS and NTLM. It provides mail, template, availability, and calendar workflow tools through stdio, with draft-first safety and Windows Credential Manager integration.
    7
    MIT

View all related MCP servers

Related MCP Connectors

  • Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.

  • Fully-managed email as MCP tools - register domains, real mailboxes, send and receive mail.

  • MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.

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/viartemev/outlook-ews-mcp'

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