useful-outlook-mcp
useful-outlook-mcp
Ein Remote-MCP-Server für Microsoft Outlook mit korrektem OAuth2 und agentenoptimierten Tools.
Funktionen
Spezifikationskonform: OAuth-Metadaten gemäß RFC 9728/8414, dynamische Client-Registrierung gemäß RFC 7591
Zustandsloses OAuth: Tokens werden vom Client verwaltet, nicht vom Server – so wie es OAuth vorsieht
Agentenoptimierte Tools: Umfangreiches Prompt-Engineering in den Tool-Beschreibungen
Dynamische Scopes: OAuth-Scopes passen sich automatisch an die aktivierten Tools an
Produktionsreif: Docker, Rate-Limiting, Read-only-Modus, Tool-Filterung
Related MCP server: M365 MCP Server
Schnellstart
npm install
npm run build
npm start # Server at http://localhost:3000Erforderliche Umgebung:
MS365_MCP_CLIENT_ID=your-azure-ad-client-id
MS365_MCP_CLIENT_SECRET=your-azure-ad-client-secret
MS365_MCP_TENANT_ID=your-tenant-id # or 'common'Azure-AD-Einrichtung
Azure Portal → Microsoft Entra ID → App-Registrierungen → Neu
Fügen Sie delegierte Berechtigungen hinzu:
User.Read,Mail.Read,Mail.ReadWrite,Mail.Send,Calendars.Read,Calendars.ReadWrite,Calendars.Read.Shared,Place.Read.All,People.Read,offline_accessFügen Sie eine Redirect-URI hinzu:
http://localhost:6274/oauth/callback(für MCP Inspector)Zertifikate & Geheimnisse → Neues Client-Geheimnis → Wert kopieren
Kopieren Sie Client-ID, Client-Geheimnis und Mandanten-ID in Ihre
.env.
Tools
list-mail-folders · list-mail-messages · search-mail · get-mail-message · send-mail · create-draft-mail · reply-mail · reply-all-mail · create-reply-draft · create-reply-all-draft · delete-mail-message · move-mail-message
Kalender
list-calendars · list-calendar-events · search-calendar-events · find-meeting-times · get-calendar-event · get-calendar-view · create-calendar-event · update-calendar-event · delete-calendar-event
Personen
lookup-contact-email
Raumsuche
Für Präsenzbesprechungen fürt find-meeting-times automatisch Folgendes aus:
Ruft alle verfügbaren Besprechungsräume in Ihrer Organisation ab
Bezieht sie neben den Teilnehmern in die Verfügbarkeitsprüfung ein
Gruppiert freie Räume nach Standort (Stadt/Gebäude)
Gibt nur verfügbare Räume mit E-Mail-Adressen zur Buchung zurück
Setzen Sie isOnlineMeeting: false, um die Raumsuche zu aktiieren. Für Online-Besprechungen (Standard: true) wird automatisch ein Teams-Besprechungslink generiert.
Erforderlicher Scope: Place.Read.All (zu den Berechtigungen der Azure-AD-App hinzufügen)
Konfiguration
Variable | Standard | Beschreibung |
| erforderlich | Azure-AD-Client-ID |
| - | Client-Geheimnis (optional) |
|
| Mandanten-ID |
|
| Serverport |
|
| Schreiboperationen deaktiveren |
| alle | Durch Kommas getrennte Tool-Zulasungsliste |
|
| CORS-Usprünge |
|
| Anfragen pro Zeitfenster |
|
| Fenstergröße (ms) |
| - | Auf bestimmte Mandanten beschränken |
Docker
Aus der GitHub Container Registry:
docker run -p 3000:3000 \
-e MS365_MCP_CLIENT_ID=xxx \
-e MS365_MCP_CLIENT_SECRET=xxx \
-e MS365_MCP_TENANT_ID=xxx \
ghcr.io/Leonine-Studios/useful-outlook-mcp:latestOder lokal erstellen:
docker build -t useful-outlook-mcp .
docker run -p 3000:3000 \
-e MS365_MCP_CLIENT_ID=xxx \
-e MS365_MCP_CLIENT_SECRET=xxx \
-e MS365_MCP_TENANT_ID=xxx \
useful-outlook-mcpEndpunkte
Endpunkt | Beschreibung |
| MCP-Protokoll |
| Healthcheck |
| RFC 9728 |
| RFC 8414 |
| OAuth (leitet an Microsoft weiter) |
| Tokenaustausch (leitet an Microsoft weiter) |
| Dynamische Client-Registrierung |
Tests
npm run dev
npx @modelcontextprotocol/inspector # Connect to http://localhost:3000/mcpHinweise zum Design
Probleme mit bestehenden Servern
Legacy-Architektur: Als stdio mit nachträglich aufgesetztem HTTP gebaut. Dieser Server ist HTTP-nativ.
OAuth falsch umgesetzt: Die meisten Server speichern Tokens serverseitig. Dieser Server ist zustandslos – Tokens werden pro Anfrage über den Authorization-Header übergeben und nie gespeichert.
Tools ohne Konzept: Typische Server bilden API-Endpunkte 1:1 ohne Hilfestellung ab. Agenten scheitern im praktischen Einsatz, weil sie API-Eigenheiten oder mehrstufige Workflows nicht kennen.
Was ist anders?
Jedes Tool enthält:
Wann man es im Vergleich zu Alternativen verwendet
Bekannte Eingenheiten der Graph API (es gibt viele)
Workflow-Anleitung für mehrstufige Aufgaben
Parameterkombinationen, die zu Fehlern führen
Beispiel: find-meeting-times erklärt, dass E-Mail-Adressen erforderlich sind (Namen funktionieren nicht), wie man über search-mail E-Mail-Adressen aus Namen ermittelt, was OrganizerUnavailable bedeutet und dass isOrganizerOptional=true eine Benutzerbestätigung erfordert.
Bekannte Eigenheiten der Graph API
E-Mail-Absenderfilterung:
eqauffrom/emailAddress/addressist unzuverlässig –startswith()verwendenE-Mail-Empfängerfilterung: Mit
$filterkann nicht nach An/CC/BCC gefiltert werden –$searchmuss verwendet werdenKalender-Organisatorfilterung:
$filterauf die Organisator-E-Mail-Adresse liefert 500 – clientseitig gefiltertNebenläufigkeit: Parallele Aufrufe können
MailboxConcurrency-Fehler zurückgebenSuche + Sortierung:
$searchkann nicht mit$orderbykombiniert werden
Linzenz
MIT
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server for your Gmail, Outlook and IMAP mail, with mailboxes and scopes set per agent.
An MCP server that provides email capabilities, hosted on Alpic platform
An MCP server that provides email capabilities, hosted on Alpic platform
An MCP server that provides email capabilities, hosted on Alpic platform
Related MCP Servers
- AlicenseBqualityAmaintenanceMCP server that provides 62 tools to manage Outlook mail, calendar, contacts, and tasks for personal Microsoft accounts via Microsoft Graph API.71796 PyPI41MIT
- AlicenseNot gradedqualityDmaintenanceA secure remote MCP server that integrates Microsoft 365 services with AI assistants, enabling email, calendar, Teams, and contact operations via the Microsoft Graph API.2MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for sending and managing Microsoft Outlook email via the Microsoft Graph API, including drafts, replies, contacts, and directory search.89 npmMIT
- FlicenseNot gradedqualityDmaintenanceMCP server that uses Microsoft Entra OAuth 2.0 On-Behalf-Of flow to access Microsoft Graph for Outlook data, enabling email, calendar, and contacts interactions via MCP tools.-