Connects Claude to Microsoft 365 mailboxes through the Graph API with proper OAuth flows. You get message search with query syntax, read/send operations, replies, category management, and bulk CSV exports. Ships with stdio for local use or HTTP for remote deployment. Supports three auth modes: standard loopback OAuth for desktop clients, device code flow for headless environments, and DCR for self-hosted setups with public endpoints. Includes prompts for email drafting and query syntax help. Reach for this when you need Claude to read your inbox, manage emails programmatically, or handle routine Outlook tasks without switching contexts.
Public tool metadata for what this MCP can expose to an agent.
OUTLOOK_ADD_EVENT_ATTACHMENTAdds an attachment to a specific Outlook calendar event. Use when you need to attach a file or nested item to an existing event.6 paramsAdds an attachment to a specific Outlook calendar event. Use when you need to attach a file or nested item to an existing event.
itemobjectnamestringuser_idstringevent_idstringodata_typestring#microsoft.graph.fileAttachment · #microsoft.graph.itemAttachmentcontentBytesstringOUTLOOK_ADD_MAIL_ATTACHMENTTool to add an attachment to an email message. Use when you have a message ID and need to attach a small (<3 MB) file or reference.10 paramsTool to add an attachment to an email message. Use when you have a message ID and need to attach a small (<3 MB) file or reference.
itemobjectnamestringuser_idstringisInlinebooleancontentIdstringmessage_idstringodata_typestringcontentTypestringcontentBytesstringcontentLocationstringOUTLOOK_CALENDAR_CREATE_EVENTCreates a new Outlook calendar event, ensuring `start_datetime` is chronologically before `end_datetime`.13 paramsCreates a new Outlook calendar event, ensuring `start_datetime` is chronologically before `end_datetime`.
bodystringis_htmlbooleanshow_asstringsubjectstringuser_idstringlocationstringtime_zonestringcategoriesarrayend_datetimestringattendees_infoarraystart_datetimestringis_online_meetingbooleanonline_meeting_providerstringOUTLOOK_CREATE_ATTACHMENT_UPLOAD_SESSIONTool to create an upload session for large (>3 MB) message attachments. Use when you need to upload attachments in chunks.3 paramsTool to create an upload session for large (>3 MB) message attachments. Use when you need to upload attachments in chunks.
user_idstringmessage_idstringattachmentItemobjectOUTLOOK_CREATE_CALENDARTool to create a new calendar in the signed-in user's mailbox. Use when organizing events into a separate calendar.4 paramsTool to create a new calendar in the signed-in user's mailbox. Use when organizing events into a separate calendar.
namestringcolorstringauto · lightBlue · lightGreen · lightOrange · lightGray · lightYellowuser_idstringhexColorstringOUTLOOK_CREATE_CONTACTCreates a new contact in a Microsoft Outlook user's contacts folder.15 paramsCreates a new contact in a Microsoft Outlook user's contacts folder.
notesstringsurnamestringuser_idstringbirthdaystringjobTitlestringgivenNamestringhomePhonestringcategoriesarraydepartmentstringcompanyNamestringdisplayNamestringmobilePhonestringbusinessPhonesarrayemailAddressesarrayofficeLocationstringOUTLOOK_CREATE_CONTACT_FOLDERTool to create a new contact folder in the user's mailbox. Use when needing to organize contacts into custom folders.3 paramsTool to create a new contact folder in the user's mailbox. Use when needing to organize contacts into custom folders.
user_idstringdisplayNamestringparentFolderIdstringOUTLOOK_CREATE_DRAFTCreates an Outlook email draft with subject, body, recipients, and an optional attachment. Supports creating drafts as part of existing conversation threads by specifying a conversationId; attachments require a name, mimetype, and content.8 paramsCreates an Outlook email draft with subject, body, recipients, and an optional attachment. Supports creating drafts as part of existing conversation threads by specifying a conversationId; attachments require a name, mimetype, and content.
bodystringis_htmlbooleansubjectstringattachmentstringcc_recipientsarrayto_recipientsarraybcc_recipientsarrayconversation_idstringOUTLOOK_CREATE_DRAFT_REPLYCreates a draft reply in the specified user's Outlook mailbox to an existing message (identified by a valid `message_id`), optionally including a `comment` and CC/BCC recipients.5 paramsCreates a draft reply in the specified user's Outlook mailbox to an existing message (identified by a valid `message_id`), optionally including a `comment` and CC/BCC recipients.
commentstringuser_idstringcc_emailsarraybcc_emailsarraymessage_idstringOUTLOOK_CREATE_EMAIL_RULECreate email rule filter with conditions and actions5 paramsCreate email rule filter with conditions and actions
actionsobjectsequenceintegerisEnabledbooleanconditionsobjectdisplayNamestringOUTLOOK_CREATE_MAIL_FOLDERTool to create a new mail folder. Use when you need to organize email into a new folder.3 paramsTool to create a new mail folder. Use when you need to organize email into a new folder.
user_idstringisHiddenbooleandisplayNamestringOUTLOOK_CREATE_MASTER_CATEGORYTool to create a new category in the user's master category list. Use after selecting a unique display name.2 paramsTool to create a new category in the user's master category list. Use after selecting a unique display name.
colorstringpreset0 · preset1 · preset2 · preset3 · preset4 · preset5displayNamestringOUTLOOK_DELETE_CONTACTPermanently deletes an existing contact, using its `contact_id` (obtainable via 'List User Contacts' or 'Get Contact'), from the Outlook contacts of the user specified by `user_id`.2 paramsPermanently deletes an existing contact, using its `contact_id` (obtainable via 'List User Contacts' or 'Get Contact'), from the Outlook contacts of the user specified by `user_id`.
user_idstringcontact_idstringOUTLOOK_DELETE_EMAIL_RULEDelete an email rule1 paramsDelete an email rule
ruleIdstringOUTLOOK_DELETE_EVENTDeletes an existing calendar event, identified by its unique `event_id`, from a specified user's Microsoft Outlook calendar, with an option to send cancellation notifications to attendees.3 paramsDeletes an existing calendar event, identified by its unique `event_id`, from a specified user's Microsoft Outlook calendar, with an option to send cancellation notifications to attendees.
user_idstringevent_idstringsend_notificationsbooleanOUTLOOK_DELETE_MAIL_FOLDERDelete a mail folder from the user's mailbox. Use when you need to remove an existing mail folder.2 paramsDelete a mail folder from the user's mailbox. Use when you need to remove an existing mail folder.
user_idstringfolder_idstringOUTLOOK_DOWNLOAD_OUTLOOK_ATTACHMENTDownloads a specific file attachment from an email message in a Microsoft Outlook mailbox; the attachment must contain 'contentBytes' (binary data) and not be a link or embedded item.4 paramsDownloads a specific file attachment from an email message in a Microsoft Outlook mailbox; the attachment must contain 'contentBytes' (binary data) and not be a link or embedded item.
user_idstringfile_namestringmessage_idstringattachment_idstringOUTLOOK_GET_CALENDAR_VIEWGet events ACTIVE during a time window (includes multi-day events). Use for "what's on my calendar today/this week" or availability checks. Returns events overlapping the time range. For keyword search or filters by category, use OUTLOOK_LIST_EVENTS instead.7 paramsGet events ACTIVE during a time window (includes multi-day events). Use for "what's on my calendar today/this week" or availability checks. Returns events overlapping the time range. For keyword search or filters by category, use OUTLOOK_LIST_EVENTS instead.
topintegerselectarrayuser_idstringtimezonestringcalendar_idstringend_datetimestringstart_datetimestringOUTLOOK_GET_CONTACTRetrieves a specific Outlook contact by its `contact_id` from the contacts of a specified `user_id` (defaults to 'me' for the authenticated user).2 paramsRetrieves a specific Outlook contact by its `contact_id` from the contacts of a specified `user_id` (defaults to 'me' for the authenticated user).
user_idstringcontact_idstringOUTLOOK_GET_CONTACT_FOLDERSTool to retrieve a list of contact folders in the signed-in user's mailbox. Use after authentication when you need to browse or select among contact folders.7 paramsTool to retrieve a list of contact folders in the signed-in user's mailbox. Use after authentication when you need to browse or select among contact folders.
topintegerskipintegerexpandarrayfilterstringselectarrayorderbyarrayuser_idstringOUTLOOK_GET_EVENTRetrieves the full details of a specific calendar event by its ID from a user's Outlook calendar, provided the event exists.2 paramsRetrieves the full details of a specific calendar event by its ID from a user's Outlook calendar, provided the event exists.
user_idstringevent_idstringOUTLOOK_GET_MAILBOX_SETTINGSTool to retrieve mailbox settings. Use when you need to view settings such as automatic replies, time zone, and working hours for the signed-in or specified user.3 paramsTool to retrieve mailbox settings. Use when you need to view settings such as automatic replies, time zone, and working hours for the signed-in or specified user.
expandarrayselectarrayuser_idstringOUTLOOK_GET_MAIL_DELTARetrieve incremental changes (delta) of messages in a mailbox. FIRST RUN: Returns ALL messages in folder (use top=50 to limit). Response has @odata.deltaLink. SUBSEQUENT: Pass stored deltaLink to get only NEW/UPDATED/DELETED messages since last sync. Properties available: id,...7 paramsRetrieve incremental changes (delta) of messages in a mailbox. FIRST RUN: Returns ALL messages in folder (use top=50 to limit). Response has @odata.deltaLink. SUBSEQUENT: Pass stored deltaLink to get only NEW/UPDATED/DELETED messages since last sync. Properties available: id,...
topintegerexpandarrayselectarrayuser_idstringfolder_idstringskip_tokenstringdelta_tokenstringOUTLOOK_GET_MAIL_TIPSTool to retrieve mail tips such as automatic replies and mailbox full status. Use when you need to check recipient status before sending mail.3 paramsTool to retrieve mail tips such as automatic replies and mailbox full status. Use when you need to check recipient status before sending mail.
user_idstringEmailAddressesarrayMailTipsOptionsarrayOUTLOOK_GET_MASTER_CATEGORIESTool to retrieve the user's master category list. Use when you need to get all categories defined for the user.6 paramsTool to retrieve the user's master category list. Use when you need to get all categories defined for the user.
topintegerskipintegerfilterstringselectarrayorderbyarrayuser_idstringOUTLOOK_GET_MESSAGERetrieves a specific email message by its ID from the specified user's Outlook mailbox. Use the 'select' parameter to include specific fields like 'internetMessageHeaders' for filtering automated emails.3 paramsRetrieves a specific email message by its ID from the specified user's Outlook mailbox. Use the 'select' parameter to include specific fields like 'internetMessageHeaders' for filtering automated emails.
selectarrayuser_idstringmessage_idstringOUTLOOK_GET_PROFILERetrieves the Microsoft Outlook profile for a specified user.1 paramsRetrieves the Microsoft Outlook profile for a specified user.
user_idstringOUTLOOK_GET_SCHEDULERetrieves free/busy schedule information for specified email addresses within a defined time window.4 paramsRetrieves free/busy schedule information for specified email addresses within a defined time window.
EndTimeobjectSchedulesarrayStartTimeobjectavailabilityViewIntervalstringOUTLOOK_GET_SUPPORTED_LANGUAGESTool to retrieve supported languages in the user's mailbox. Use when you need to display or select from available mailbox languages.1 paramsTool to retrieve supported languages in the user's mailbox. Use when you need to display or select from available mailbox languages.
user_idstringOUTLOOK_GET_SUPPORTED_TIME_ZONESTool to retrieve supported time zones in the user's mailbox. Use when you need a list of time zones to display or choose from for event scheduling.1 paramsTool to retrieve supported time zones in the user's mailbox. Use when you need a list of time zones to display or choose from for event scheduling.
timeZoneStandardstringWindows · IanaOUTLOOK_LIST_CALENDARSTool to list calendars in the signed-in user's mailbox. Use when you need to retrieve calendars with optional OData queries.6 paramsTool to list calendars in the signed-in user's mailbox. Use when you need to retrieve calendars with optional OData queries.
topintegerskipintegerfilterstringselectarrayorderbyarrayuser_idstringOUTLOOK_LIST_CONTACTSRetrieves a user's Microsoft Outlook contacts, from the default or a specified contact folder.6 paramsRetrieves a user's Microsoft Outlook contacts, from the default or a specified contact folder.
topintegerfilterstringselectarrayorderbyarrayuser_idstringcontact_folder_idstringOUTLOOK_LIST_EMAIL_RULESList all email rules from inbox1 paramsList all email rules from inbox
topintegerOUTLOOK_LIST_EVENT_ATTACHMENTSTool to list attachments for a specific Outlook calendar event. Use when you have an event ID and need to view its attachments.7 paramsTool to list attachments for a specific Outlook calendar event. Use when you have an event ID and need to view its attachments.
topintegerskipintegerfilterstringselectarrayorderbyarrayuser_idstringevent_idstringOUTLOOK_LIST_EVENTSRetrieves events from a user's Outlook calendar via Microsoft Graph API. Supports primary/secondary/shared calendars, pagination, filtering, property selection, sorting, and timezone specification. Use calendar_id to access non-primary calendars.9 paramsRetrieves events from a user's Outlook calendar via Microsoft Graph API. Supports primary/secondary/shared calendars, pagination, filtering, property selection, sorting, and timezone specification. Use calendar_id to access non-primary calendars.
topintegerskipintegerfilterstringselectarrayorderbyarrayuser_idstringtimezonestringcalendar_idstringexpand_recurring_eventsbooleanOUTLOOK_LIST_MAIL_FOLDERSTool to list a user's top-level mail folders. Use when you need folders like Inbox, Drafts, Sent Items; set include_hidden_folders=True to include hidden folders.2 paramsTool to list a user's top-level mail folders. Use when you need folders like Inbox, Drafts, Sent Items; set include_hidden_folders=True to include hidden folders.
user_idstringinclude_hidden_foldersbooleanOUTLOOK_LIST_MESSAGESRetrieves a list of email messages from a specified mail folder in an Outlook mailbox, with options for filtering (including by conversationId to get all messages in a thread), pagination, and sorting; ensure 'user_id' and 'folder' are valid, and all date/time strings are in I...22 paramsRetrieves a list of email messages from a specified mail folder in an Outlook mailbox, with options for filtering (including by conversationId to get all messages in a thread), pagination, and sorting; ensure 'user_id' and 'folder' are valid, and all date/time strings are in I...
topintegerskipintegerfolderstringselectarrayis_readbooleanorderbyarraysubjectstringuser_idstringcategoriesarrayimportancestringfrom_addressstringconversationIdstringhas_attachmentsbooleansubject_containsstringsubject_endswithstringsent_date_time_gtstringsent_date_time_ltstringsubject_startswithstringreceived_date_time_gestringreceived_date_time_gtstringreceived_date_time_lestringreceived_date_time_ltstringOUTLOOK_LIST_OUTLOOK_ATTACHMENTSLists metadata (like name, size, and type, but not `contentBytes`) for all attachments of a specified Outlook email message.2 paramsLists metadata (like name, size, and type, but not `contentBytes`) for all attachments of a specified Outlook email message.
user_idstringmessage_idstringOUTLOOK_LIST_REMINDERSTool to retrieve reminders for events occurring within a specified time range. Use when you need to see upcoming reminders between two datetimes.3 paramsTool to retrieve reminders for events occurring within a specified time range. Use when you need to see upcoming reminders between two datetimes.
userIdstringendDateTimestringstartDateTimestringOUTLOOK_LIST_USERSTool to list users in Microsoft Entra ID. Use when you need to retrieve a paginated list of users, optionally filtering or selecting specific properties.4 paramsTool to list users in Microsoft Entra ID. Use when you need to retrieve a paginated list of users, optionally filtering or selecting specific properties.
topintegerskipintegerfilterstringselectarrayOUTLOOK_MOVE_MESSAGEMove a message to another folder within the specified user's mailbox. This creates a new copy of the message in the destination folder and removes the original message.3 paramsMove a message to another folder within the specified user's mailbox. This creates a new copy of the message in the destination folder and removes the original message.
user_idstringmessage_idstringdestination_idstringOUTLOOK_QUERY_EMAILSPrimary tool for querying Outlook emails with custom OData filters. Build precise server-side filters for dates, read status, importance, subjects, attachments, and conversations. Best for structured queries on message metadata. Returns up to 100 messages per request with pagi...7 paramsPrimary tool for querying Outlook emails with custom OData filters. Build precise server-side filters for dates, read status, importance, subjects, attachments, and conversations. Best for structured queries on message metadata. Returns up to 100 messages per request with pagi...
topintegerskipintegerfilterstringfolderstringselectarrayorderbystringuser_idstringOUTLOOK_REPLY_EMAILSends a plain text reply to an Outlook email message, identified by `message_id`, allowing optional CC and BCC recipients.5 paramsSends a plain text reply to an Outlook email message, identified by `message_id`, allowing optional CC and BCC recipients.
commentstringuser_idstringcc_emailsarraybcc_emailsarraymessage_idstringOUTLOOK_SEARCH_MESSAGESSearch Outlook messages using powerful KQL syntax. Supports sender (from:), recipient (to:, cc:), subject, date filters (received:, sent:), attachments, and boolean logic. Only works with Microsoft 365/Enterprise accounts (no @hotmail.com/@outlook.com). Examples: 'from:user@ex...7 paramsSearch Outlook messages using powerful KQL syntax. Supports sender (from:), recipient (to:, cc:), subject, date filters (received:, sent:), attachments, and boolean logic. Only works with Microsoft 365/Enterprise accounts (no @hotmail.com/@outlook.com). Examples: 'from:user@ex...
sizeintegerquerystringsubjectstringfromEmailstringfrom_indexintegerhasAttachmentsbooleanenable_top_resultsbooleanOUTLOOK_SEND_DRAFTTool to send an existing draft message. Use after creating a draft when you want to deliver it to recipients immediately. Example: Send a draft message with ID 'AAMkAG…'.2 paramsTool to send an existing draft message. Use after creating a draft when you want to deliver it to recipients immediately. Example: Send a draft message with ID 'AAMkAG…'.
user_idstringmessage_idstringOUTLOOK_SEND_EMAILSends an email with subject, body, recipients, and an optional attachment via Microsoft Graph API. Supports comma-separated email addresses in the to_email field for multiple recipients. Attachments require a non-empty file with valid name and mimetype.11 paramsSends an email with subject, body, recipients, and an optional attachment via Microsoft Graph API. Supports comma-separated email addresses in the to_email field for multiple recipients. Attachments require a non-empty file with valid name and mimetype.
bodystringfromstringis_htmlbooleansubjectstringto_namestringuser_idstringto_emailstringcc_emailsarrayattachmentstringbcc_emailsarraysave_to_sent_itemsbooleanOUTLOOK_UPDATE_CALENDAR_EVENTUpdates specified fields of an existing Outlook calendar event. Implementation note: To avoid unintentionally clearing properties, the action first fetches the existing event, merges only the provided fields, and then PATCHes the merged updates. Unspecified fields remain uncha...11 paramsUpdates specified fields of an existing Outlook calendar event. Implementation note: To avoid unintentionally clearing properties, the action first fetches the existing event, merges only the provided fields, and then PATCHes the merged updates. Unspecified fields remain uncha...
bodyobjectshow_asstringsubjectstringuser_idstringevent_idstringlocationobjectattendeesarraytime_zonestringcategoriesarrayend_datetimestringstart_datetimestringOUTLOOK_UPDATE_CONTACTUpdates an existing Outlook contact, identified by `contact_id` for the specified `user_id`, requiring at least one other field to be modified.16 paramsUpdates an existing Outlook contact, identified by `contact_id` for the specified `user_id`, requiring at least one other field to be modified.
notesstringsurnamestringuser_idstringbirthdaystringjobTitlestringgivenNamestringcategoriesarraycontact_idstringdepartmentstringhomePhonesarraycompanyNamestringdisplayNamestringmobilePhonestringbusinessPhonesarrayemailAddressesarrayofficeLocationstringOUTLOOK_UPDATE_EMAILUpdates specified properties of an existing email message; `message_id` must identify a valid message within the specified `user_id`'s mailbox.9 paramsUpdates specified properties of an existing email message; `message_id` must identify a valid message within the specified `user_id`'s mailbox.
bodyobjectis_readbooleansubjectstringuser_idstringimportancestringmessage_idstringcc_recipientsarrayto_recipientsarraybcc_recipientsarrayOUTLOOK_UPDATE_EMAIL_RULEUpdate an existing email rule6 paramsUpdate an existing email rule
ruleIdstringactionsobjectsequenceintegerisEnabledbooleanconditionsobjectdisplayNamestringOUTLOOK_UPDATE_MAILBOX_SETTINGSTool to update mailbox settings for the signed-in user. Use when you need to configure automatic replies, default time zone, language, or working hours. Example: schedule automatic replies for vacation.4 paramsTool to update mailbox settings for the signed-in user. Use when you need to configure automatic replies, default time zone, language, or working hours. Example: schedule automatic replies for vacation.
languageobjecttimeZonestringworkingHoursobjectautomaticRepliesSettingobjectMS_CLIENT_ID*Microsoft OAuth client ID (required for OAuth authentication modes)
MS_TENANT_ID*Microsoft tenant ID (required for OAuth authentication)
MS_CLIENT_SECRETsecretMicrosoft OAuth client secret (optional for public clients)
AUTH_MODEAuthentication mode
HEADLESSdefault: falseDisable browser auto-open, return auth URL instead (true/false)
REDIRECT_URIOAuth redirect URI (optional, default: ephemeral loopback)
RESOURCE_STORE_URIResource store URI for CSV export files (file://)
PORTHTTP server port (overrides --port)
BASE_URLBase URL for HTTP transport (used for OAuth/DCR endpoints and file links)
LOG_LEVELLogging level
DCR_MODEdefault: self-hostedDynamic Client Registration mode
DCR_VERIFY_URLExternal verification endpoint URL (required for external DCR mode)
DCR_STORE_URIdefault: file://~/.mcp-z/mcp-outlook/dcr.jsonDCR client storage URI (for self-hosted DCR mode)
io.github.mindstone/mcp-server-microsoft-teams
com.mintmcp/outlook-email
helbertparanhos/resend-email-mcp
marlinjai/email-mcp
io.github.mindstone/mcp-server-email-imap
io.github.osamahassouna/email-playbook-mcp