← Back to search

msoutlook-mcp

GitHub Actions Scanned 10d ago

MCP server for Microsoft Outlook web. No app registration required, uses your existing Outlook session.

npm
D
59.6 / 100

Versions

0.4.1latest
Jul 24, 2026
0.4.0
Jun 10, 2026
0.3.1
Jun 4, 2026
0.3.0
Jun 4, 2026
0.1.6
Jun 1, 2026
+ show 6 moreshow less
0.1.5
Jun 1, 2026
0.1.4
Jun 1, 2026
0.1.3
Jun 1, 2026
0.1.2
Jun 1, 2026
0.1.1
Jun 1, 2026
0.1.0
Jun 1, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 53

outlook_list_events
annotations: none low

List calendar events within a date range.

top number end_date string start_date string calendar_id string
outlook_get_event
annotations: none low

Get full details of a calendar event including attendees and body.

id string
outlook_create_event
annotations: none low

Create a new calendar event or meeting.

end string body string name string email string start string subject string location string time_zone string is_all_day boolean is_private boolean is_reminder_on boolean is_online_meeting boolean reminder_minutes_before_start number
outlook_update_event
annotations: none low

Update an existing calendar event.

id string end string body string start string subject string location string time_zone string is_private boolean is_reminder_on boolean reminder_minutes_before_start number
outlook_delete_event
annotations: none low

Delete a calendar event.

id string
outlook_respond_to_event
annotations: none low

Accept, decline, or tentatively accept a meeting invitation.

id string comment string
outlook_search_events
annotations: none low

Search calendar events by keyword.

query string to_date string from_date string
outlook_list_calendars
annotations: none low

List all calendars in the account.

outlook_get_schedule
annotations: none low

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

end string start string interval_minutes number
outlook_find_meeting_times
annotations: none low

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\

end string start string time_zone string max_candidates number duration_minutes number
outlook_cancel_event
annotations: none low

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.

id string comment string
outlook_forward_event
annotations: none low

Forward a meeting invitation to additional people, effectively inviting them.

id string comment string
outlook_list_emails
annotations: none low

List emails from a mail folder. Defaults to Inbox, newest first.

top number folder string mark_read boolean unread_only boolean
outlook_get_email
annotations: none low

Read the full content of a specific email by ID.

id string mark_read boolean include_attachments boolean
outlook_get_unread
annotations: none low

Get a list of unread emails from the Inbox.

top number
outlook_send_email
annotations: none low

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.

body string subject string
outlook_create_draft
annotations: none low

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.

body string subject string
outlook_send_draft
annotations: none low

Send a previously created draft email by its ID.

id string
outlook_reply
annotations: none low

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.

id string body string reply_all boolean
outlook_create_reply_draft
annotations: none low

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>.

id string body string reply_all boolean
outlook_create_forward_draft
annotations: none low

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>.

id string comment string
outlook_forward
annotations: none low

Forward an email to one or more recipients.

id string comment string
outlook_mark_read
annotations: none low

Mark an email as read or unread.

id string is_read boolean
outlook_flag
annotations: none low

Flag or unflag an email.

id string
outlook_move_email
annotations: none low

Move an email to a different folder.

id string destination_folder string
outlook_delete_email
annotations: none low

Delete an email (moves to Deleted Items).

id string
outlook_batch
annotations: none low

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.

destination_folder string
outlook_search_emails
annotations: none low

Search emails by keyword across subject and body, with optional received date range and pagination. Omit query to list everything in a date range.

top number query string folder string end_date string skip_token string start_date string
outlook_list_folders
annotations: none low

List all mail folders with unread counts.

outlook_update_draft
annotations: none low

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.

id string body string subject string
outlook_add_attachment
annotations: none low

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.

file_path string message_id string
outlook_list_attachments
annotations: none low

List the attachments on an email (name, type, size, and attachment ID for downloading).

message_id string
outlook_save_attachment
annotations: none low

Download an email attachment and save it to a local file path. Use outlook_list_attachments first to get the attachment ID.

message_id string output_path string attachment_id string
outlook_get_conversation
annotations: none low

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.

top number conversation_id string
outlook_set_categories
annotations: none low

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.

message_id string
outlook_create_folder
annotations: none low

Create a new mail folder, optionally nested under a parent folder.

name string parent_folder_id string
outlook_rename_folder
annotations: none low

Rename an existing mail folder.

id string name string
outlook_delete_folder
annotations: none low

Delete a mail folder and everything in it. This is destructive: confirm with the user and double check the folder ID before calling.

id string
outlook_login
annotations: none low

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.

force_new boolean
outlook_status
annotations: none low

Check the current authentication status and token validity.

outlook_logout
annotations: none low

Clear the saved Outlook session and tokens. You will need to run outlook_login again.

outlook_get_user_profile
annotations: none low

Get a colleague\

email string
outlook_get_manager
annotations: none low

Get a person\

email string
outlook_get_direct_reports
annotations: none low

List a person\

email string
outlook_get_user_photo
annotations: none low

Download a person\

email string output_path string
outlook_get_automatic_replies
annotations: none low

Get your own out-of-office / automatic reply settings (status, schedule window, and messages).

outlook_set_automatic_replies
annotations: none low

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.

end string start string time_zone string external_message string internal_message string
outlook_list_contacts
annotations: none low

List contacts from the Outlook address book.

top number search string
outlook_get_contact
annotations: none low

Get full details of a contact by ID.

id string
outlook_create_contact
annotations: none low

Create a new contact in Outlook.

email string notes string surname string job_title string given_name string company_name string mobile_phone string business_phone string
outlook_delete_contact
annotations: none low

Delete a contact by ID.

id string
outlook_search_people
annotations: none low

Search the organisation directory for people by name or email.

top number query string
outlook_get_availability
annotations: none low

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.

window_hours number

Permissions 4

network medium
Server uses network capabilities via: fetch()
filesystem low
Server uses filesystem capabilities via: fs sync ops
shell high
Server uses shell capabilities via: child_process, execSync()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 129

low
Tool 'outlook_list_events' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_event' has no annotations annotation_checker · 100%
low
Tool 'outlook_create_event' has no annotations annotation_checker · 100%
low
Tool 'outlook_update_event' has no annotations annotation_checker · 100%
low
Tool 'outlook_delete_event' has no annotations annotation_checker · 100%
low
Tool 'outlook_respond_to_event' has no annotations annotation_checker · 100%
low
Tool 'outlook_search_events' has no annotations annotation_checker · 100%
low
Tool 'outlook_list_calendars' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_schedule' has no annotations annotation_checker · 100%
low
Tool 'outlook_find_meeting_times' has no annotations annotation_checker · 100%
low
Tool 'outlook_cancel_event' has no annotations annotation_checker · 100%
low
Tool 'outlook_forward_event' has no annotations annotation_checker · 100%
low
Tool 'outlook_list_emails' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_email' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_unread' has no annotations annotation_checker · 100%
low
Tool 'outlook_send_email' has no annotations annotation_checker · 100%
low
Tool 'outlook_create_draft' has no annotations annotation_checker · 100%
low
Tool 'outlook_send_draft' has no annotations annotation_checker · 100%
low
Tool 'outlook_reply' has no annotations annotation_checker · 100%
low
Tool 'outlook_create_reply_draft' has no annotations annotation_checker · 100%
low
Tool 'outlook_create_forward_draft' has no annotations annotation_checker · 100%
low
Tool 'outlook_forward' has no annotations annotation_checker · 100%
low
Tool 'outlook_mark_read' has no annotations annotation_checker · 100%
low
Tool 'outlook_flag' has no annotations annotation_checker · 100%
low
Tool 'outlook_move_email' has no annotations annotation_checker · 100%
low
Tool 'outlook_delete_email' has no annotations annotation_checker · 100%
low
Tool 'outlook_batch' has no annotations annotation_checker · 100%
low
Tool 'outlook_search_emails' has no annotations annotation_checker · 100%
low
Tool 'outlook_list_folders' has no annotations annotation_checker · 100%
low
Tool 'outlook_update_draft' has no annotations annotation_checker · 100%
low
Tool 'outlook_add_attachment' has no annotations annotation_checker · 100%
low
Tool 'outlook_list_attachments' has no annotations annotation_checker · 100%
low
Tool 'outlook_save_attachment' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_conversation' has no annotations annotation_checker · 100%
low
Tool 'outlook_set_categories' has no annotations annotation_checker · 100%
low
Tool 'outlook_create_folder' has no annotations annotation_checker · 100%
low
Tool 'outlook_rename_folder' has no annotations annotation_checker · 100%
low
Tool 'outlook_delete_folder' has no annotations annotation_checker · 100%
low
Tool 'outlook_login' has no annotations annotation_checker · 100%
low
Tool 'outlook_status' has no annotations annotation_checker · 100%
low
Tool 'outlook_logout' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_user_profile' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_manager' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_direct_reports' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_user_photo' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_automatic_replies' has no annotations annotation_checker · 100%
low
Tool 'outlook_set_automatic_replies' has no annotations annotation_checker · 100%
low
Tool 'outlook_list_contacts' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_contact' has no annotations annotation_checker · 100%
low
Tool 'outlook_create_contact' has no annotations annotation_checker · 100%
low
Tool 'outlook_delete_contact' has no annotations annotation_checker · 100%
low
Tool 'outlook_search_people' has no annotations annotation_checker · 100%
low
Tool 'outlook_get_availability' has no annotations annotation_checker · 100%
high
Hardcoded OAuth client ID in shayanline-msoutlook-mcp-a7b111c/src/constants.ts auth_checker · 85%
medium
OAuth implementation without PKCE auth_checker · 75%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.12.0 (GHSA-345p-7cg4-v4c7) dependency_analyzer · 95%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.12.0 (GHSA-8r9q-7v3j-jr4g) dependency_analyzer · 95%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.12.0 (GHSA-w48q-cv73-mx4w) dependency_analyzer · 95%
medium
Vulnerable dependency: playwright@1.52.0 (GHSA-7mvr-c777-76hp) dependency_analyzer · 95%
medium
Buffer.from base64 in shayanline-msoutlook-mcp-a7b111c/src/auth/msal-decrypt.ts:48 entropy_analyzer · 75%
medium
Buffer.from base64 in shayanline-msoutlook-mcp-a7b111c/src/auth/token-extractor.ts:61 entropy_analyzer · 75%
medium
Buffer.from base64 in shayanline-msoutlook-mcp-a7b111c/src/browser/cookie-import.ts:289 entropy_analyzer · 75%
medium
Buffer.from base64 in shayanline-msoutlook-mcp-a7b111c/src/browser/cookie-import.ts:300 entropy_analyzer · 75%
medium
Buffer.from base64 in shayanline-msoutlook-mcp-a7b111c/src/tools/mail-tools.ts:502 entropy_analyzer · 75%
info
package.json metadata manifest_parser · 100%
info
Tool: outlook_list_events manifest_parser · 70%
info
Tool: outlook_get_event manifest_parser · 70%
info
Tool: outlook_create_event manifest_parser · 70%
info
Tool: outlook_update_event manifest_parser · 70%
info
Tool: outlook_delete_event manifest_parser · 70%
info
Tool: outlook_respond_to_event manifest_parser · 70%
info
Tool: outlook_search_events manifest_parser · 70%
info
Tool: outlook_list_calendars manifest_parser · 70%
info
Tool: outlook_get_schedule manifest_parser · 70%
info
Tool: outlook_find_meeting_times manifest_parser · 70%
info
Tool: outlook_cancel_event manifest_parser · 70%
info
Tool: outlook_forward_event manifest_parser · 70%
info
Tool: outlook_list_emails manifest_parser · 70%
info
Tool: outlook_get_email manifest_parser · 70%
info
Tool: outlook_get_unread manifest_parser · 70%
info
Tool: outlook_send_email manifest_parser · 70%
info
Tool: outlook_create_draft manifest_parser · 70%
info
Tool: outlook_send_draft manifest_parser · 70%
info
Tool: outlook_reply manifest_parser · 70%
info
Tool: outlook_create_reply_draft manifest_parser · 70%
info
Tool: outlook_create_forward_draft manifest_parser · 70%
info
Tool: outlook_forward manifest_parser · 70%
info
Tool: outlook_mark_read manifest_parser · 70%
info
Tool: outlook_flag manifest_parser · 70%
info
Tool: outlook_move_email manifest_parser · 70%
info
Tool: outlook_delete_email manifest_parser · 70%
info
Tool: outlook_batch manifest_parser · 70%
info
Tool: outlook_search_emails manifest_parser · 70%
info
Tool: outlook_list_folders manifest_parser · 70%
info
Tool: outlook_update_draft manifest_parser · 70%
info
Tool: outlook_add_attachment manifest_parser · 70%
info
Tool: outlook_list_attachments manifest_parser · 70%
info
Tool: outlook_save_attachment manifest_parser · 70%
info
Tool: outlook_get_conversation manifest_parser · 70%
info
Tool: outlook_set_categories manifest_parser · 70%
info
Tool: outlook_create_folder manifest_parser · 70%
info
Tool: outlook_rename_folder manifest_parser · 70%
info
Tool: outlook_delete_folder manifest_parser · 70%
info
Tool: outlook_login manifest_parser · 70%
info
Tool: outlook_status manifest_parser · 70%
info
Tool: outlook_logout manifest_parser · 70%
info
Tool: outlook_get_user_profile manifest_parser · 70%
info
Tool: outlook_get_manager manifest_parser · 70%
info
Tool: outlook_get_direct_reports manifest_parser · 70%
info
Tool: outlook_get_user_photo manifest_parser · 70%
info
Tool: outlook_get_automatic_replies manifest_parser · 70%
info
Tool: outlook_set_automatic_replies manifest_parser · 70%
info
Tool: outlook_list_contacts manifest_parser · 70%
info
Tool: outlook_get_contact manifest_parser · 70%
info
Tool: outlook_create_contact manifest_parser · 70%
info
Tool: outlook_delete_contact manifest_parser · 70%
info
Tool: outlook_search_people manifest_parser · 70%
info
Tool: outlook_get_availability manifest_parser · 70%
info
Transport: stdio manifest_parser · 90%
info
Required env vars (5) manifest_parser · 80%
medium
Hardcoded OAuth client ID in shayanline-msoutlook-mcp-a7b111c/src/constants.ts oauth_scope_analyzer · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 70%
low
Permission: filesystem access detected permission_analyzer · 90%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 223 components sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%