io.github.dockndevai/mcp-outlook
Outlook mail and OneDrive files via Microsoft Graph — read, search, send and organize.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
@dockndevai/mcp-outlookclaude mcp add mcp-outlook -e 'OUTLOOK_CLIENT_ID=<OUTLOOK_CLIENT_ID>' -e 'OUTLOOK_TENANT_ID=<OUTLOOK_TENANT_ID>' -e 'OUTLOOK_CLIENT_SECRET=<your outlook_client_secret>' -e 'OUTLOOK_TOKEN=<your outlook_token>' -e 'OUTLOOK_USER=<OUTLOOK_USER>' -e 'OUTLOOK_MODE=<OUTLOOK_MODE>' -e 'OUTLOOK_ALLOW_SEND=<OUTLOOK_ALLOW_SEND>' -- npx -y @dockndevai/mcp-outlook@0.4.1
{
"mcpServers": {
"mcp-outlook": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-outlook@0.4.1"
],
"env": {
"OUTLOOK_CLIENT_ID": "<OUTLOOK_CLIENT_ID>",
"OUTLOOK_TENANT_ID": "<OUTLOOK_TENANT_ID>",
"OUTLOOK_CLIENT_SECRET": "<your outlook_client_secret>",
"OUTLOOK_TOKEN": "<your outlook_token>",
"OUTLOOK_USER": "<OUTLOOK_USER>",
"OUTLOOK_MODE": "<OUTLOOK_MODE>",
"OUTLOOK_ALLOW_SEND": "<OUTLOOK_ALLOW_SEND>"
}
}
}
}
Variables d'environnement
OUTLOOK_CLIENT_IDEntra (Azure AD) app (client) id. For browser sign-in, register a public client with redirect URI http://localhost.OUTLOOK_TENANT_IDDirectory tenant: a tenant id, or common | organizations | consumers (default common).OUTLOOK_CLIENT_SECRETsecret App secret for app-only (client-credentials) auth. Omit to use interactive browser sign-in.OUTLOOK_TOKENsecret A pre-obtained Microsoft Graph bearer token (alternative to browser or app-only auth).OUTLOOK_USERTarget mailbox (user id or UPN) for app-only auth. Omit to use the signed-in user's mailbox (/me).OUTLOOK_MODEAccess mode: read-only | read-write | admin. Starts read-only; writes need read-write.OUTLOOK_ALLOW_SENDSet true to permit sending mail (send/reply/forward). Off by default.
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
mcp-outlook
A safe-by-default Model Context Protocol server for Microsoft Outlook mail, over Microsoft Graph. It lets an agent read and operate a mailbox — list folders and messages, full-text search, read bodies and attachment metadata, list contacts, and (in higher modes) create drafts, send / reply / forward, mark read, move messages, and delete. It also manages OneDrive files — browse, search, download, upload, create folders, move/rename, and delete — and the calendar — list calendars and events, check free/busy, and (gated) create, update, respond to, cancel and delete events.
Browser sign-in: on first run it opens your browser to the Microsoft sign-in page, then caches the token and refreshes it silently — the server never sees your password.
Part of the dockndevai MCP server suite — one governance model across all of them.
What it gives an agent
The server starts read-only (see Safe by default); higher-capability tools are only registered when you raise the mode.
| Tool | For | Needs mode |
|---|---|---|
whoami | confirm which mailbox is in use | read-only |
list_folders | mail folders with unread/total counts | read-only |
list_messages | recent messages (by folder, unread-only) | read-only |
search_messages | full-text search across the mailbox | read-only |
get_message | one message with full body + recipients | read-only |
list_attachments | attachment metadata (bytes not returned) | read-only |
list_contacts | personal contacts | read-only |
create_draft | prepare a draft without sending | read-write |
send_mail | compose & send a new email | read-write + OUTLOOK_ALLOW_SEND |
reply_mail / forward_mail | reply (all) / forward a message | read-write + OUTLOOK_ALLOW_SEND |
mark_read | mark read / unread (reversible) | read-write |
move_message | move to another folder (reversible) | read-write |
delete_message | delete (to Deleted Items) | admin + OUTLOOK_ALLOW_DELETE |
list_drive_items / get_drive_item | browse OneDrive files & folders | read-only |
search_drive_files | search OneDrive | read-only |
download_drive_file | read a OneDrive file's text | read-only |
upload_drive_file | create/overwrite a OneDrive file | read-write |
create_drive_folder / move_drive_item | create folder / move-rename | read-write |
delete_drive_item | delete a OneDrive item (→ recycle bin) | admin + OUTLOOK_ALLOW_DELETE |
list_calendars / list_events / get_event | browse calendars & events (window expands recurrences) | read-only |
get_free_busy | check availability for people before scheduling | read-only |
create_event / update_event | create / update a meeting (invites attendees) | read-write + OUTLOOK_ALLOW_SEND |
respond_to_event | accept / decline / tentatively accept an invite | read-write + OUTLOOK_ALLOW_SEND |
cancel_event / delete_event | cancel a meeting / delete an event | admin + OUTLOOK_ALLOW_DELETE |
Access is ultimately governed by your Microsoft account's granted scopes. Calendar tools need the
Calendars.ReadWritedelegated scope (included in the defaults). If your token wasn't consented for it, Graph returns 403 — the suite's modes/flags are defence in depth on top of that Microsoft-level control. Downscope withOUTLOOK_SCOPES(e.g. dropCalendars.ReadWrite, or useCalendars.Readfor read-only).
Install
npx -y @dockndevai/mcp-outlook
You need an Entra (Azure AD) app registration. For the default browser sign-in, register a public client and add the redirect URI http://localhost (platform: Mobile and desktop applications), then use its Application (client) ID as OUTLOOK_CLIENT_ID. Grant delegated Mail.Read (and Mail.Send / Mail.ReadWrite if you want to send or organize). No client secret is needed for interactive use.
Prefer automation? Use app-only auth instead: set OUTLOOK_CLIENT_SECRET + OUTLOOK_TENANT_ID + OUTLOOK_USER (see Authentication).
Configure
{
"mcpServers": {
"outlook": {
"command": "npx",
"args": ["-y", "@dockndevai/mcp-outlook"],
"env": {
"OUTLOOK_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
"OUTLOOK_TENANT_ID": "common",
"OUTLOOK_MODE": "read-only"
}
}
}
}
On first use the server opens your browser to sign in and caches the token at ~/.mcp-outlook/token.json (0600); later runs refresh silently.
See docs/CLIENTS.md for Claude Code / Cursor / Codex / VS Code / Windsurf snippets, and .env.example for every supported variable.
Authentication
Auth mode is chosen automatically (override with OUTLOOK_AUTH):
- interactive (default) — only
OUTLOOK_CLIENT_IDset. Authorization-code + PKCE with a loopback redirect: the browser opens, you approve once, and the access + refresh token are cached on disk. Operates on the signed-in user's mailbox (/me). The server never handles your password. - client-credentials (app-only) —
OUTLOOK_CLIENT_SECRETpresent. The server fetches an app token itself; requiresOUTLOOK_TENANT_IDandOUTLOOK_USER(the mailbox to act on, since an app token has no signed-in user). Grant the app application Mail permissions with admin consent. - token —
OUTLOOK_TOKENset to a pre-obtained Graph bearer token. You manage its lifetime.
Safe by default
The access model is enforced by src/security.ts — defence in depth on top of the Graph token's own scopes/roles:
OUTLOOK_MODE—read-only(default) →read-write→admin. A tool is registered only if the mode allows its capability. Read-only exposes the 7 read tools; drafts/moves needread-write; deletes needadmin.OUTLOOK_ALLOW_SEND— sending mail (send / reply / forward) can't be undone, so on top ofread-writeit also requires this flag. Drafting is always allowed in read-write; nothing leaves the mailbox until sent.OUTLOOK_ALLOW_DELETE— deletes require this flag on top ofadminmode.OUTLOOK_FOLDER_ALLOWLIST/OUTLOOK_PROTECTED_FOLDERS— confine which folders can be written to / moved into; mark folders (e.g.sentitems,archive) that may be read but never modified.- Interactive confirmation — when the client supports MCP elicitation, sending mail and deleting a message pause and ask the human to approve before running; clients that can't elicit fall back to the
OUTLOOK_ALLOW_SEND/OUTLOOK_ALLOW_DELETEgates. OUTLOOK_DRY_RUN— validate and log writes without executing them.OUTLOOK_AUDIT_LOG— a JSON audit line per guarded operation, on stderr (default on).- Attachment bytes are never returned —
list_attachmentsreturns metadata only.
See SECURITY.md.
Developing
npm install
npm run build
# introspect the tool list without signing in (uses a fake token, no network):
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | OUTLOOK_TOKEN=x node dist/index.js
npm test
Licence
MIT
Questions fréquentes
Qu'est-ce que io.github.dockndevai/mcp-outlook ?
Outlook mail and OneDrive files via Microsoft Graph — read, search, send and organize.
Comment installer io.github.dockndevai/mcp-outlook ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add mcp-outlook -e 'OUTLOOK_CLIENT_ID=<OUTLOOK_CLIENT_ID>' -e 'OUTLOOK_TENANT_ID=<OUTLOOK_TENANT_ID>' -e 'OUTLOOK_CLIENT_SECRET=<your outlook_client_secret>' -e 'OUTLOOK_TOKEN=<your outlook_token>' -e 'OUTLOOK_USER=<OUTLOOK_USER>' -e 'OUTLOOK_MODE=<OUTLOOK_MODE>' -e 'OUTLOOK_ALLOW_SEND=<OUTLOOK_ALLOW_SEND>' -- npx -y @dockndevai/mcp-outlook@0.4.1. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour io.github.dockndevai/mcp-outlook ?
Oui. Il attend OUTLOOK_CLIENT_SECRET, OUTLOOK_TOKEN, à renseigner dans sa configuration.
io.github.dockndevai/mcp-outlook est-il open source ?
Oui. Son code est sur GitHub sous licence MIT.
Qui maintient io.github.dockndevai/mcp-outlook ?
Il est publié par dockndevai. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.