msoutlook-mcp
MCP server for Microsoft Outlook web. No app registration required, uses your existing Outlook session.
Versions
0.4.1latest0.4.00.3.10.3.00.1.6+ show 6 moreshow less
0.1.50.1.40.1.30.1.20.1.10.1.0Tools 53
outlook_list_events List calendar events within a date range.
outlook_get_event Get full details of a calendar event including attendees and body.
outlook_create_event Create a new calendar event or meeting.
outlook_update_event Update an existing calendar event.
outlook_delete_event Delete a calendar event.
outlook_respond_to_event Accept, decline, or tentatively accept a meeting invitation.
outlook_search_events Search calendar events by keyword.
outlook_list_calendars List all calendars in the account.
outlook_get_schedule Get the free/busy schedule for one or more people over a time window: their busy blocks (Busy, Tentative, OutOfOffice, WorkingElsewhere) and working hours. Use this to see when people are occupied. For a quick
outlook_find_meeting_times Suggest meeting time slots that work for a set of attendees, based on their free/busy. Returns ranked candidate slots with a confidence score and each attendee\
outlook_cancel_event Cancel an event that you organize, sending a cancellation to all attendees. This is different from outlook_delete_event (which just removes it from your calendar). Confirm with the user before calling.
outlook_forward_event Forward a meeting invitation to additional people, effectively inviting them.
outlook_list_emails List emails from a mail folder. Defaults to Inbox, newest first.
outlook_get_email Read the full content of a specific email by ID.
outlook_get_unread Get a list of unread emails from the Inbox.
outlook_send_email Send an email immediately. Body format defaults to HTML (body_type HTML). Prefer the review first flow: unless the user has asked to send straight away, create the message with outlook_create_draft so they can review it, then send with outlook_send_draft once approved. Always confirm content with the user before calling this tool. Write structure with HTML (<br> for a line break, <br><br> for a paragraph gap, <ul><li>...</li></ul> for lists). Plain text is still accepted and its newlines are converted to <br> automatically, so a multi line message never arrives as one block.
outlook_create_draft Create a draft email without sending it. This is the preferred way to compose a new email: create the draft here so the user can review it in Outlook, then send it with outlook_send_draft once they approve, unless the user has asked to send straight away. Body format defaults to HTML (body_type HTML): use HTML for layout (<br>, <br><br>, <ul><li>). Plain text newlines are auto converted to <br> so the draft keeps its line breaks.
outlook_send_draft Send a previously created draft email by its ID.
outlook_reply Reply to an email, staying in the same thread and keeping all recipients when reply_all is true. This sends immediately, there is no separate reply draft, so confirm the content with the user before calling unless they have asked to send straight away. The reply is always rendered as HTML, so use HTML for layout (<br>, <br><br>, <ul><li>). Plain text is accepted and its newlines are auto converted to <br>, so a multi paragraph reply never collapses into one block.
outlook_create_reply_draft Create a reply (or reply-all) as a DRAFT instead of sending it. This is the review-first way to reply: the draft is saved to Drafts with the recipients and quoted original prefilled and your text inserted above the quote, so the user can review or edit it in Outlook, then send it with outlook_send_draft once approved. Prefer this over outlook_reply unless the user has asked to send straight away. Body is rendered as HTML: use HTML for layout (<br>, <br><br>, <ul><li>); plain text newlines are auto converted to <br>.
outlook_create_forward_draft Create a forward as a DRAFT instead of sending it. The draft is saved to Drafts with the quoted original prefilled; recipients can be set here or added later in Outlook. Review or edit, then send with outlook_send_draft. Body is rendered as HTML: use HTML for layout; plain text newlines are auto converted to <br>.
outlook_forward Forward an email to one or more recipients.
outlook_mark_read Mark an email as read or unread.
outlook_flag Flag or unflag an email.
outlook_move_email Move an email to a different folder.
outlook_delete_email Delete an email (moves to Deleted Items).
outlook_batch Run one bulk action on many emails at once. Far faster than calling the single item tools repeatedly. Returns a per id success and failure summary.
outlook_search_emails Search emails by keyword across subject and body, with optional received date range and pagination. Omit query to list everything in a date range.
outlook_list_folders List all mail folders with unread counts.
outlook_update_draft Edit an existing draft: change its subject, recipients, body, or importance. Useful for tweaking a reply or forward draft before sending it with outlook_send_draft. Only the fields you pass are changed. Body follows the same HTML rules as sending.
outlook_add_attachment Attach a local file to an existing draft (including a reply or forward draft). Read the file from disk and add it. Combine with outlook_create_reply_draft or outlook_create_draft, then outlook_send_draft.
outlook_list_attachments List the attachments on an email (name, type, size, and attachment ID for downloading).
outlook_save_attachment Download an email attachment and save it to a local file path. Use outlook_list_attachments first to get the attachment ID.
outlook_get_conversation Get every message in a conversation/thread, oldest first, by conversation ID. The conversation ID comes from any message in the thread (outlook_get_email / outlook_list_emails). Useful for reading a whole back-and-forth before replying.
outlook_set_categories Set the colour categories (labels) on an email. This replaces the existing categories with the list you pass; pass an empty list to clear them.
outlook_create_folder Create a new mail folder, optionally nested under a parent folder.
outlook_rename_folder Rename an existing mail folder.
outlook_delete_folder Delete a mail folder and everything in it. This is destructive: confirm with the user and double check the folder ID before calling.
outlook_login Sign in to Outlook Web. Tries silently first (no browser); opens a browser only when the session has expired. Set force_new: true to force a full re-login.
outlook_status Check the current authentication status and token validity.
outlook_logout Clear the saved Outlook session and tokens. You will need to run outlook_login again.
outlook_get_user_profile Get a colleague\
outlook_get_manager Get a person\
outlook_get_direct_reports List a person\
outlook_get_user_photo Download a person\
outlook_get_automatic_replies Get your own out-of-office / automatic reply settings (status, schedule window, and messages).
outlook_set_automatic_replies Turn your own out-of-office / automatic replies on or off. This changes your live mailbox, so confirm the message and dates with the user first. Use status Scheduled with start and end for a date window, AlwaysEnabled for on until turned off, or Disabled to turn off.
outlook_list_contacts List contacts from the Outlook address book.
outlook_get_contact Get full details of a contact by ID.
outlook_create_contact Create a new contact in Outlook.
outlook_delete_contact Delete a contact by ID.
outlook_search_people Search the organisation directory for people by name or email.
outlook_get_availability Check whether colleagues are free or busy right now and whether they are out of office, by email address. Returns current free/busy status (Free, Tentative, Busy, OutOfOffice, WorkingElsewhere) with the time it next changes, their out-of-office / automatic reply status and message, and their working hours and time zone. This is read from Outlook calendar free/busy and mail tips. Note: the live Teams presence dot (Available/Away/DoNotDisturb) is not available from Outlook, use the Teams MCP for that. Pass one or more email addresses; use outlook_search_people first if you only have a name.
Permissions 4
network medium filesystem low shell high env_vars low