Outlook Graph MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Outlook Graph MCPCreate a new folder named 'Projects'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Outlook Graph MCP
Serveur MCP qui pilote votre boîte Outlook via Microsoft Graph, en écriture, avec des
permissions déléguées (tout se passe sur votre propre boîte /me). Il expose chaque action du
tableau ci-dessous comme un outil appelable par Claude.
Contrairement au connecteur Outlook « lecture seule » (recherche d'e-mails), celui-ci crée, modifie et envoie : dossiers, catégories, règles de tri, messages, réponses automatiques, etc.
Couverture (votre tableau → outils MCP)
Domaine | Action | Outil MCP | Endpoint Graph |
📁 Dossiers | Lister |
|
|
Créer (racine / sous-dossier) |
|
| |
Renommer |
|
| |
Supprimer |
|
| |
Voir le contenu |
|
| |
🏷️ Catégories | Lister |
|
|
Créer (+ couleur) |
|
| |
Modifier |
|
| |
Appliquer à un message |
|
| |
⚙️ Règles | Lister |
|
|
Créer |
|
| |
Modifier / activer / désactiver |
|
| |
Supprimer |
|
| |
✉️ Messages | Rechercher / lister |
|
|
Lire (+ pièces jointes) |
|
| |
Lu/non lu, importance, classement, drapeau |
|
| |
Déplacer |
|
| |
Supprimer |
|
| |
Envoyer (+ pièces jointes) |
|
| |
Répondre / Répondre à tous (envoi immédiat) |
|
| |
Répondre EN BROUILLON, dans le fil (non envoyé) |
|
| |
Transférer (envoi immédiat) |
|
| |
Transférer EN BROUILLON (non envoyé) |
|
| |
Brouillon nouveau fil (créer / modifier / envoyer) |
|
| |
Ajouter une pièce jointe |
|
| |
🔧 Paramètres | Réponses automatiques / absence |
|
|
Fuseau, langue, formats |
|
| |
🩺 Diagnostic | Tester la connexion |
|
|
Bonus :
delete_mail_folderlève la limite « suppression de dossier impossible » mentionnée précédemment. C'est une action destructive — Claude vous demandera confirmation.
Related MCP server: Simple Outlook MCP Server
Prérequis
Windows + Python ≥ 3.10 et uv (déjà installés sur votre poste).
Un compte Microsoft 365 professionnel (ex.
…@relationdigitale.com).Les droits de créer une inscription d'application dans Azure (ou un admin qui consent — voir étape A).
Étape A — Inscrire l'application Azure AD (≈ 10 min, une seule fois)
Ouvrez le portail Azure → Microsoft Entra ID → Inscriptions d'applications → Nouvelle inscription.
Nom :
Outlook MCP(libre). Types de comptes pris en charge : Comptes dans cet annuaire d'organisation uniquement (mono-tenant). URI de redirection : laissez vide. → S'inscrire.Sur la page Vue d'ensemble, copiez :
ID d'application (client) →
OUTLOOK_MCP_CLIENT_IDID de l'annuaire (locataire) →
OUTLOOK_MCP_TENANT_ID
Authentification → Paramètres avancés → Autoriser les flux de client public → Oui → Enregistrer. (Indispensable pour la connexion device-code.)
Autorisations d'API → Ajouter une autorisation → Microsoft Graph → Autorisations déléguées, puis ajoutez :
Mail.ReadWriteMail.SendMailboxSettings.ReadWrite(User.Readest déjà présent.)
Si votre locataire l'exige, cliquez Accorder un consentement administrateur pour …. Sinon, le consentement se fera à votre première connexion.
💡 Vous pouvez aussi me demander de vous guider en direct dans le navigateur pour cette étape.
Étape B — Installer le serveur
cd D:\Audits\outlook-graph-mcp
uv syncuv crée un environnement isolé et installe les dépendances (mcp, msal, msal-extensions, httpx).
Étape C — Se connecter (une fois)
Renseignez vos identifiants Azure puis lancez la connexion device-code :
$env:OUTLOOK_MCP_CLIENT_ID = "VOTRE_CLIENT_ID"
$env:OUTLOOK_MCP_TENANT_ID = "VOTRE_TENANT_ID"
uv run --directory D:\Audits\outlook-graph-mcp outlook-graph-mcp loginLe terminal affiche un message du type : « To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXX-YYYY. » → ouvrez la page, saisissez le code, validez avec votre compte Microsoft 365. À la fin :
Connecté : Ludovic Perrot <ludovic.perrot@relationdigitale.com>Le jeton est mis en cache et chiffré (DPAPI Windows) dans %USERPROFILE%\.outlook-graph-mcp.
Le serveur le rafraîchit ensuite tout seul — vous n'avez plus à vous reconnecter.
(Variante navigateur : … outlook-graph-mcp login --interactive. Elle nécessite d'ajouter, à l'étape A,
un URI de redirection http://localhost sous « Mobile et applications de bureau ».)
Étape D — Brancher dans Claude
Claude Code (CLI)
Soit via la commande :
claude mcp add outlook-graph --env OUTLOOK_MCP_CLIENT_ID=VOTRE_CLIENT_ID --env OUTLOOK_MCP_TENANT_ID=VOTRE_TENANT_ID -- uv run --directory D:\Audits\outlook-graph-mcp outlook-graph-mcpSoit en copiant .mcp.json.example vers .mcp.json (ou dans votre config utilisateur) et en y mettant vos IDs.
Claude Desktop
Éditez claude_desktop_config.json
(%APPDATA%\Claude\claude_desktop_config.json) et ajoutez le bloc de .mcp.json.example
(la clé racine est mcpServers). Redémarrez Claude Desktop.
Une fois branché, demandez par exemple :
« Liste mes dossiers Outlook », « Crée une règle qui classe les e-mails de @client.com dans le dossier test », « Active mon absence du bureau du 1er au 15 août ».
🚀 Déploiement sur Azure (serveur MCP distant)
Héberge le serveur sur Azure Container Apps (scale-to-zero), derrière une URL HTTPS publique
protégée par clé d'API. Le jeton délégué est conservé chiffré dans Azure Key Vault ; l'app y
accède via une identité managée. Modèle d'auth Graph inchangé (/me, délégué) — vous restez
le seul propriétaire de l'accès, sans consentement admin.
Tout est décrit par azure.yaml + infra/*.bicep et déployé par azd.
Prérequis
azdinstallé (Azure Developer CLI) ✅Une app Azure AD (étape A ci-dessus) →
Client ID+Tenant IDUn abonnement Azure où vous pouvez créer des ressources
1. Connecter azd à votre abonnement
azd auth login2. Configurer l'environnement
cd D:\Audits\outlook-graph-mcp
azd env new outlook-mcp
azd env set AZURE_LOCATION francecentral
azd env set OUTLOOK_MCP_CLIENT_ID VOTRE_CLIENT_ID
azd env set OUTLOOK_MCP_TENANT_ID VOTRE_TENANT_ID
azd env set OUTLOOK_MCP_API_KEY VOTRE_CLE_API3. Provisionner + déployer
azd upCrée le groupe de ressources, le registre, l'environnement Container Apps, le Key Vault et l'app, puis construit l'image (dans le cloud) et la déploie. En sortie, notez :
MCP_ENDPOINT→ l'URL à brancher dans Claude (https://….azurecontainerapps.io/mcp)OUTLOOK_MCP_KEYVAULT_URL→ pour l'amorçage du jeton (étape 4)
4. Amorcer le jeton (une seule fois)
Connecte votre compte M365 et écrit le refresh token dans le Key Vault (vous y avez le rôle Secrets Officer, accordé par le déploiement) :
$env:OUTLOOK_MCP_CLIENT_ID = "VOTRE_CLIENT_ID"
$env:OUTLOOK_MCP_TENANT_ID = "VOTRE_TENANT_ID"
$env:OUTLOOK_MCP_CACHE_BACKEND = "keyvault"
$env:OUTLOOK_MCP_KEYVAULT_URL = "https://kv-….vault.azure.net/"
uv run --directory D:\Audits\outlook-graph-mcp outlook-graph-mcp login(En cas d'erreur 403 sur le Key Vault juste après azd up, attendez ~1 min — propagation RBAC — puis réessayez.)
5. Brancher dans Claude (connecteur MCP distant)
Ajoutez un serveur MCP HTTP pointant sur MCP_ENDPOINT, avec l'en-tête d'authentification :
x-api-key: VOTRE_CLE_APILa clé est aussi acceptée via ?key=VOTRE_CLE_API ou Authorization: Bearer VOTRE_CLE_API.
Exploitation
Action | Commande |
Mettre à jour le code déployé |
|
Voir les logs |
|
Tout supprimer |
|
Coûts : Container Apps scale-to-zero (≈ 0 € au repos), + Log Analytics / ACR Basic / Key Vault = quelques € / mois. Cold start : la 1ʳᵉ requête après inactivité prend quelques secondes (l'app se réveille).
Durcissement (optionnel) : remplacer la clé d'API par EasyAuth / Entra ID (App Service Authentication sur Container Apps) ou API Management, et isoler le réseau (VNet) si besoin.
Permissions & portée
Permissions déléguées uniquement :
Mail.ReadWrite,Mail.Send,MailboxSettings.ReadWrite(+User.Read).Toutes les actions ciblent votre boîte (
/me). Aucune action sur d'autres boîtes.Aucun secret client n'est stocké (client public + device-code). Seul un refresh token chiffré est conservé localement.
Sécurité
Cache de jeton chiffré au repos via msal-extensions (DPAPI sous Windows).
uv run … logoutefface le cache. Révocation côté Azure : Mes connexions / portail Entra.
Limites connues
Pièces jointes ≤ 3 Mo par appel direct (au-delà, une upload session serait nécessaire — non implémentée).
$search(recherche plein texte) ne se combine pas avec$filter/$orderby(limite Graph).Pas d'accès aux boîtes partagées/d'autres utilisateurs (périmètre
/mevolontaire).
Dépannage
Symptôme | Cause / solution |
| Variables d'env non transmises — vérifiez le bloc |
| Lancez |
Erreur de consentement au login | Un admin doit cliquer Accorder un consentement administrateur (étape A.6). |
| Doit être Oui dans Authentification (étape A.4). |
| Permission déléguée manquante — réajoutez-la (étape A.5) puis reconnectez-vous. |
Commandes utiles
# Tester la connexion
uv run --directory D:\Audits\outlook-graph-mcp outlook-graph-mcp whoami
# Se déconnecter (vider le cache)
uv run --directory D:\Audits\outlook-graph-mcp outlook-graph-mcp logoutThis server cannot be deployed
Maintenance
Related MCP Connectors
Manage Microsoft 365 email, calendar, contacts and inbox rules via the Graph API with OAuth 2.0.
Your agent needs a mailbox of its own — to receive, thread, draft and send, with attachments, without borrowing your personal inbox or your company's SMTP. **What you can ask for** • "Create an inbox for this agent and tell me its address." • "Read the new messages in this thread and draft a reply." • "Send this message with the attachment and wait for the response." • "Search this inbox for everything from that domain." • "Show delivery metrics and the events on this inbox." **How to use it** Point any MCP client at https://mcp.aisa.one/mail/mcp and sign in with OAuth — there is no key to create or paste. 49 tools: create and delete inboxes, list and read messages, raw message bodies, attachments, threads, drafts and draft attachments, send and reply, message search, inbox events, metrics, and list entries — reads and writes. **Why this rather than the source** A real inbox an agent owns, rather than an SMTP credential it borrows from a human. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the contact elsewhere in the catalogue, then write to them from here — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/sales/mcp finds the person to write to.
Permissioned access to Outlook, OneDrive and Teams via the user's own Microsoft account
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for Microsoft Outlook via Graph API. 20 consolidated tools for email, calendar, contacts, folders, rules, categories, and settings with safety controls (dry-run preview, rate limiting, recipient allowlists) and MCP annotations on every tool.822922 npm36MIT
- FlicenseNot gradedqualityDmaintenanceEnables sending, listing, searching, and reading Outlook emails through Microsoft Graph API with OAuth authentication.1-
- AlicenseNot gradedqualityBmaintenanceMCP server for sending and managing Microsoft Outlook email via the Microsoft Graph API, including drafts, replies, contacts, and directory search.150 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables reading, sending, and managing Microsoft 365/Outlook emails through MCP tools with OAuth 2.1 authentication.150 npmMIT