Read, send, and manage Outlook mail, folders, calendar events, and contacts through Microsoft Graph with managed OAuth.
Memory
Outlook Mcp
Production-grade MCP server for personal Outlook (Outlook.com / Hotmail / Live). 62 typed Graph tools across mail, calendar, contacts, to-do, drafts, attachm...
What it does
Production-grade MCP server for personal Outlook (Outlook.com / Hotmail / Live). 62 typed Graph tools across mail, calendar, contacts, to-do, drafts, attachments, folders, threading, batch ops, delta-sync. Granular permissions, OS-keyring auth, /$batch-optimized triage and bulk read. Built for agents that need real Outlook coverage, not a CLI wrapper. BYO Azure app; zero telemetry.
The skill document
outlook-mcp
MCP server for Microsoft Outlook personal accounts (Outlook.com, Hotmail, Live). Provides AI agents with full access to mail, calendar, contacts, and tasks via Microsoft Graph API.
Independent open-source project. Not affiliated with Microsoft.
Agent-friendly
Pass concise=True to read tools (outlook_list_inbox, outlook_read_message, outlook_search_mail, outlook_list_events, outlook_list_thread) to drop large body fields — ~10× fewer tokens for triage scans. Graph errors are wrapped into structured {code, message, action} responses with recovery hints (re-auth on 401, ROADMAP pointer on 403/ErrorAccessDenied, re-list on 404, back-off on 429, retry on 503). v1.9.1 docstring audit: every @mcp.tool() docstring rewritten to a consistent shape with contrastive pointers for ambiguous pairs and concrete syntax examples, designed to reduce wrong-tool selection by LLMs.
Important
- Personal Microsoft accounts only (
@outlook.com,@hotmail.com,@live.com). Work/school accounts (Entra ID) are not supported in v1. - Requires Azure AD app registration — free, takes ~5 minutes, but you need a free Azure account first. See README.
- Auth is CLI-based — run
outlook-mcp authon the host before the agent can use it. No interactive auth through MCP tools.
Setup
- Create a free Azure account at azure.microsoft.com/free (sign up with your
@outlook.comaddress) - Register an Azure AD app (see README for step-by-step)
- Configure: Create
~/.outlook-mcp/config.json:{ "client_id": "YOUR-APP-CLIENT-ID", "tenant_id": "consumers", "timezone": "America/Los_Angeles", "read_only": true } - Register with OpenClaw (writes to
mcp.serversin~/.openclaw/openclaw.json):openclaw mcp set outlook '{"command":"uv","args":["--directory","/path/to/outlook-mcp","run","outlook-mcp"]}' openclaw mcp list # verify - Authenticate on the host:
cd /path/to/outlook-mcp && uv run outlook-mcp auth - Restart the gateway:
openclaw gateway restart
Tools (62)
Auth
outlook_auth_status— Check authentication status and read-only mode
Mail — Read
outlook_list_inbox— List messages with filters (folder, unread, sender, date)outlook_read_message— Get full message by IDoutlook_read_messages— Bulk read up to 20 messages by ID in one$batchround-trip (use NOT N read_message calls)outlook_search_mail— Search mail using KQL queryoutlook_list_folders— List all mail foldersoutlook_list_inbox_delta— List only inbox changes since last call (massive token savings for recurring agent jobs)
Mail — Write
outlook_send_message— Send email with recipients, CC, BCC, HTML, importanceoutlook_reply— Reply or reply-all to a messageoutlook_forward— Forward a message
Mail — Triage
outlook_move_message— Move to a folderoutlook_delete_message— Delete (soft by default, permanent optional)outlook_flag_message— Set follow-up flagoutlook_categorize_message— Set categoriesoutlook_mark_read— Mark read or unreadoutlook_reclassify_message— Move between Focused Inbox and Otheroutlook_list_inbox_overrides— List Focused Inbox per-sender override rulesoutlook_set_inbox_override— Upsert a per-sender override (focused/other)outlook_delete_inbox_override— Delete an override by ID
Calendar
outlook_list_events— List events in date range (expands recurring)outlook_get_event— Get event detailsoutlook_list_events_delta— List only event changes since last call within a window (massive token savings for recurring agent jobs)outlook_create_event— Create event with attendees, recurrence, online meetingoutlook_update_event— Update event fieldsoutlook_delete_event— Delete eventoutlook_rsvp— Accept, decline, or tentatively accept
Contacts
outlook_list_contacts— List with cursor paginationoutlook_search_contacts— Search by name or emailoutlook_get_contact— Get full detailsoutlook_create_contact— Createoutlook_update_contact— Updateoutlook_delete_contact— Deleteoutlook_list_contacts_delta— List only contact changes since last call (massive token savings for recurring agent jobs)
Digest
outlook_changes_since— One structured "since last call" digest across mail, events, and contacts. Composes the three delta tools into counts + urgent-flagged mail + top-5 senders + new/cancelled events; auto-recovers from stale tokens. Designed for recurring agent loops (morning brief, hourly inbox sweep).
To Do
outlook_list_task_lists— List To Do listsoutlook_list_tasks— List tasks with status filter and paginationoutlook_create_task— Create with due date, importance, recurrenceoutlook_update_task— Updateoutlook_complete_task— Mark completedoutlook_delete_task— Delete
Drafts
outlook_list_drafts— List with paginationoutlook_create_draft— Create for later reviewoutlook_update_draft— Updateoutlook_send_draft— Sendoutlook_delete_draft— Delete
Attachments
outlook_list_attachments— List on a messageoutlook_download_attachment— Download and save decoded bytes to a fileoutlook_send_with_attachments— Send with files (auto upload session for >3MB)outlook_attach_to_draft— Add attachments to an existing draft (auto upload session for >3MB)outlook_remove_draft_attachment— Remove a single attachment from a draft
Folder Management
outlook_create_folder— Create (top-level or nested)outlook_rename_folder— Renameoutlook_delete_folder— Delete (refuses well-known folders)
Threading and Batch
outlook_list_thread— Get all messages in a conversationoutlook_copy_message— Copy to another folderoutlook_batch_triage— Batch move/flag/categorize/mark_read (max 20)
User and Admin
outlook_whoami— Current user profileoutlook_list_calendars— Available calendarsoutlook_list_categories— Category definitions with colorsoutlook_get_mail_tips— Pre-send check (OOF, delivery restrictions)outlook_list_accounts— Configured accountsoutlook_switch_account— Switch active account
Privacy
- Zero telemetry, zero local caching
- Only connects to
login.microsoftonline.comandgraph.microsoft.com - Tokens stored in OS keyring (macOS Keychain, Windows Credential Store)
- BYOID: you register your own Azure AD app — no shared client ID
Notes
- IDs are opaque Graph strings — get them from list/search tools, never guess
- Dates are ISO 8601, UTC in responses, config timezone for input interpretation
- Mail search uses KQL syntax
- Start with
read_only: true, flip when comfortable - Granular permissions: For finer control, set
allow_categoriesin config (e.g.,["calendar_write"]to allow only calendar writes). See README for the 7 categories and example policies. - Toolset selection: Set
OUTLOOK_MCP_TOOLSETS(e.g.mail,calendar,digest,delta) to load only the tool groups you use and cut per-turn context; unset loads all 62. Tools carry read-only / destructive annotations so clients can auto-approve reads.
Related skills
Build, harden, and debug production MCP servers with the TypeScript SDK. Use when writing or reviewing an MCP server or its tools - picking a transport, designing tool schemas and results, handling errors, adding OAuth, cutting token bloat, or migrating SDK versions. Also covers MCP Apps, extensions, and the Registry. Assumes a working server already exists rather than scaffolding one from scratch.
Extract calendar events from Gmail and create Google Calendar entries after your confirmation.
Drive Gmail, Drive, Calendar, Sheets, Docs, and the Admin SDK from the terminal via the gws CLI, with JSON output.
Build new MCP Apps (MCP servers with React UI output) using @modelcontextprotocol/ext-apps and the MCP SDK. Use when asked to scaffold or implement MCP App s...
Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, setup, integrations, or troubleshooting agent access.