@jaingxyz/personal-outlook-mcp
Model Context Protocol server for a personal Outlook (consumer Microsoft account) inbox and calendar, via Microsoft Graph. Stdio transport, MSAL device-code auth, OS-keyring token cache.
Versions
No versions found.
Tools 20
personal_email_list_folders List the user's mail folders (Inbox, Sent Items, custom folders, etc.) with id, display name, and unread/total counts.
personal_email_list_recent List the most recent messages in a folder, newest first. Defaults to inbox. Returns up to `limit` (max 100) plus a `nextCursor`; pass it back as `cursor` to page through more.
personal_email_search Search messages across the mailbox by free-text query. Supports Graph KQL operators (from:, subject:, hasAttachment:true, etc.). Results are ranked by relevance, not date. Returns up to `limit` (max 100) plus a `nextCursor`; pass it back as `cursor` to page through more.
personal_email_read Fetch a single message by id, including its body. Use the 'id' field returned by list_recent or search.
personal_email_mark_read Mark a message as read or unread. Pass isRead=false to mark unread.
personal_email_move Move a message to another folder (by id or well-known name). The message gets a new id in the destination folder.
personal_email_delete Delete a message. By default soft-deletes (moves to Deleted Items). Pass hardDelete=true to permanently delete — not recoverable.
personal_email_send Send a new email immediately. A copy is saved to Sent Items. Use create_draft instead if you want to review in Outlook before sending.
personal_email_reply Reply to an existing message. Sends immediately. Pass replyAll=true to reply to all recipients of the original.
personal_email_create_draft Create a draft email in the Drafts folder without sending. Returns a draftId you can pass to personal_email_send_draft.
personal_email_send_draft Send a previously created draft by id.
personal_email_list_attachments List attachments on a message, with id, name, contentType, and size in bytes.
personal_email_download_attachment Download a file attachment to disk. Defaults to ~/Downloads/personal-outlook-mcp/. Returns the absolute path. Item and reference attachments are not supported.
personal_calendar_list_calendars List the user's calendars (primary, birthdays, holidays, custom). Returns id, name, isDefault, canEdit.
personal_calendar_list_events List events in a date range using calendarView (recurring series are expanded into individual occurrences). Provide ISO datetimes for start and end. Defaults to the primary calendar.
personal_calendar_read_event Read full details of a single event including body and recurrence pattern.
personal_calendar_create_event Create a new event. Times use {dateTime, timeZone} where dateTime is local-form (no offset) and timeZone is an IANA name. If attendees are provided, Graph sends invites automatically.
personal_calendar_update_event Update an event's subject, time, location, body, or attendees. Errors if eventId refers to a single occurrence/exception of a recurring series — edit the series master or cancel+recreate instead.
personal_calendar_cancel_event Cancel an event. Default mode sends a cancellation notice to attendees (use this for meetings). hardDelete=true skips the notice and just deletes — appropriate for events with no attendees.
personal_calendar_respond_to_invite Respond to a meeting invite as accept, tentativelyAccept, or decline. Optionally include a comment and choose whether to send a response email to the organizer.
Permissions 3
network medium shell high env_vars low