MCP.Market

Outlook Assistant MCP server

by littlebearapps·io.github.littlebearapps/outlook-assistant·v3.14.1·39 stars

Microsoft Outlook MCP server — 22 tools for email, calendar, contacts, and mailbox management.

A85/100grade A
What users say
No reviews yet
Be the first
Safety scan
A85/100

full report

Adoption
Established

39 stars500 downloads/wk

Reviews

Write one

Nobody has reviewed Outlook Assistant yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Outlook Assistant tools (22, 4 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • access-shared-mailbox

    List emails or folders in a shared mailbox the signed-in user can access (read-only). Returns messages from `sharedMailbox` (alias `email`) and `folder` (default `inbox`) with id/subject/from/receivedDateTime/preview, the same shape as `search-emails` list mode. `folder` takes a well-known name (inbox, sent, archive…), a custom/localized display name (e.g. `Archiv`), a nested path (e.g. `Inbox/Ven

  • apply-category

    Tag or untag email messages with master categories (those created via `manage-category`). action=`set` (default) replaces the message's category set with the supplied `categories` array. action=`add` appends categories to whatever's already on the message. action=`remove` removes only the named categories, leaving the rest. Accepts either `messageId` (single) or `messageIds` (batch: one request pe

  • attachments

    Inspect or retrieve email attachments. action=`list` (default) returns metadata for all attachments on `messageId` (id, name, contentType, size, isInline) — read-only. action=`view` returns inline content for text/JSON/XML attachments via `attachmentId`; binary types require download. action=`download` saves the attachment under a new, unique name in `outputDir` (default system temp directory, aut

  • auth

    Manage authentication with the Microsoft Graph API. action=`status` (default) returns the current auth state, refreshing an expired access token while the refresh token is still valid (~90 days); call it first to check before other tools. action=`authenticate` starts sign-in: `method: "device-code"` (default, works headlessly) returns a code + URL for the user to visit; `method: "browser"` uses th

  • create-eventwrite action

    Create a new calendar event on the signed-in user's default calendar. Returns the created event with its `id`, `webLink`, and (if attendees are present) an auto-generated online-meeting URL — attendees receive invitations on save, so pass `dryRun: true` first to preview who would be invited (and how many are external) without creating anything. When `OUTLOOK_ALLOWED_RECIPIENTS` is set, every atten

  • draft

    Draft lifecycle for review-before-send workflows (destructive: covers `send` and `delete`). action=`create` saves a new draft and returns its id (`dryRun: true` previews without saving; `checkRecipients: true` runs mail-tips first). action=`update` patches a draft by `id` (only fields passed change). action=`send` sends a draft and counts against the `send-email` session limit (0 refuses every sen

  • export

    Export emails to files. target=`message` (default) exports one email by `id` (mime/eml/markdown/json/csv) to `savePath`: a directory (or a path ending in `/`, created if missing) gets a new, unique file name; a file path is created new and an existing file is replaced only with `overwrite: true`. target=`messages` batch-exports `emailIds`, or matches for `searchQuery`/`query`, into `outputDir`, at

  • find-meeting-rooms

    Discover bookable meeting rooms in the user's organisation via the Graph rooms endpoint (read-only). Returns room resources with displayName, emailAddress, building, floor, capacity, and bookingType — suitable for piping into `create-event` as attendees. Filter by `query` (matches name/email), `building`, `floor`, or minimum `capacity`. Returns empty list on personal accounts (the rooms endpoint i

  • folders

    Manage mail folders. Address a folder by name, by slash-separated path for nested folders (e.g. `Inbox/Clients/Acme`, case-insensitive) or by ID; a bare name matches a unique top-level folder first, then nested ones (an ambiguous name returns the candidates). action=`list` (default) returns the tree with each folder's path and id (`includeItemCounts`, `includeChildren`). action=`create` makes `nam

  • get-mail-tips

    Pre-send recipient validation via Graph `POST /me/getMailTips` (read-only; uses the existing `Mail.Read` scope — no extra permissions). Returns per-recipient tips covering automatic replies (out-of-office), mailbox full status, custom admin mail tips, delivery restrictions, moderation requirements, external-vs-internal scope, max message size, and group member counts (total + external). Use ahead

  • list-events

    List calendar events for the signed-in user (read-only). By default returns upcoming events (start ≥ now). Optional `startAfter`, `startBefore` and `subject` filters find past, current or specifically-named events; supplying any of them replaces the default "now" lower bound and the filters are AND-ed together. Results are oldest first, except when the search only looks backwards (`startBefore` wi

  • mailbox-settings

    Read or update mailbox-level settings (idempotent — safe to retry; sets are PATCH-style and merge with existing state). action=`get` (default) returns settings — use `section` to filter (`language`, `timeZone`, `workingHours`, `automaticRepliesSetting`, or `all`). action=`set-auto-replies` configures out-of-office: `enabled` true/false, optional `startDateTime`/`endDateTime` (ISO 8601) for schedul

  • manage-category

    Manage the user's master category list (the colour-coded labels available across mail/calendar/contacts). action=`list` (default) returns categories with id/displayName/color. action=`create` adds a new category — `displayName` required, `color` optional (preset0-preset24, e.g. preset0=Red, preset7=Blue). action=`update` (alias `set` — deprecated) changes name/colour by `id`. action=`delete` remov

  • manage-contact

    Full CRUD over the signed-in user's personal Outlook contacts (destructive: covers `delete` action). action=`list` (default) returns contacts with pagination via `skip`/`count` (default 50). action=`search` returns contacts matching `query` against name/email (default 25). action=`get` returns full contact detail by `id`. action=`create` adds a new contact and returns its `id`. action=`update` pat

  • manage-event

    Manage an existing calendar event. `dryRun: true` previews any action without changing or sending anything: who would be emailed, with an external count (update also: who is added or removed, and the PATCH body). action=`update` edits fields via PATCH (subject, start, end, attendees, body, location, isOnlineMeeting, sensitivity, showAs, importance, categories, reminderMinutesBeforeStart); only fie

  • manage-focused-inbox

    Manage Focused Inbox sender overrides — explicit rules that force messages from a given sender into Focused or Other regardless of the ML classifier. action=`list` (default) returns existing overrides with id/sender/classifyAs. action=`set` creates or updates an override for `emailAddress` (optional `name`), routing future mail to `focused` (default) or `other`. action=`delete` removes the overrid

  • manage-rules

    Server-side inbox rules (destructive: covers `delete`; `dryRun` previews create/update). Rules run on the Exchange server whichever client is open. action=`list` (default) returns rules with id/name/sequence; `includeDetails: true` adds conditions/actions/exceptions. action=`create` builds a rule from condition params (12, e.g. fromAddresses, containsSubject, bodyContains, hasAttachments, importan

  • read-emailwrite action

    Read a single email by id (read-only). Returns subject, from/to/cc, date and the body as Markdown (HTML stripped to text): up to 2,000 characters by default, up to 40,000 with `outputVerbosity: full`; a cut body ends with a note on how to get the rest. With `headersMode: true`: returns RFC-822 forensic headers in place of the body (DKIM, SPF, DMARC, Received chain, Message-ID, Authentication-Resul

  • search-emails

    Search, list, delta-sync or thread-group emails (read-only); parameters set the mode. No params: recent emails in `folder` (default `inbox`). `query`/`from`/`to`/`subject`/date filters: search, combined as an OData filter. `searchExpression` (deprecated alias `kqlQuery`): a raw Graph `$search` expression. `deltaMode: true`: current state plus a `deltaToken` to pass back next time for changes only.

  • search-people

    Relevance-ranked search across personal contacts, organisation directory, and recent communications via the Microsoft Graph People API (read-only). Returns people objects with `displayName`, `emailAddresses`, `companyName`, `jobTitle`, and relevance metadata, for "who is X?" or "who do I email about Y?" lookups. For entries from your personal contact store only, use `manage-contact` action=`search

  • send-emailwrite action

    Compose and send an email immediately (destructive: sends external comms). Returns a confirmation. Safety controls: `dryRun: true` returns the composed message for review without sending; `checkRecipients: true` runs `get-mail-tips` first and returns its warnings. If the tips show an out-of-office reply, a full mailbox, a delivery restriction or external recipients, the send is refused until repea

  • update-emailwrite action

    Update message state without modifying content (idempotent — safe to retry). action=`mark-read`/`mark-unread` sets `isRead` on a single message by `id`. action=`flag` sets a follow-up flag with optional `dueDateTime`/`startDateTime`: ISO 8601 with a time, kept as that exact instant when it has `Z` or a ±hh:mm offset and read in OUTLOOK_DEFAULT_TIMEZONE when it has none; date-only or unparseable va

Public scan report

scanner v0.1.10 · 2026-10-15 · same rubric, same numbers if you re-run it

no findings
  • Code scan70 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitystatic API keys via environment variables6/15
  • Maintenancelast push 2 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year9/10
Overall 85/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Outlook Assistant compares

Against every graded Email MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
85/100
higher than 78% of 916 Email servers
Tools
22
the typical Email server has 7
Tools that change things
18%
typical: 25%. Fewer write tools means less an agent can break
GitHub stars
39
more than 92% of 493 Email servers
Downloads a week
500
more than 84% of 235 Email servers with a package

What its tools let an agent do: 17 read · 1 create · 2 change · 1 send or post · 1 run or deploy

Release history: 5 versions in the registry since 2026-09-09, latest 2026-10-05, typically one every 2 days.

Install Outlook Assistant in Claude Code, Cursor or VS Code

Runs npx -y @littlebearapps/outlook-assistant on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add outlook-assistant -- npx -y @littlebearapps/outlook-assistant
Add to Cursor

What the publisher says

From the Outlook Assistant repository's README, as published. We do not edit it. Read it on GitHub

Outlook Assistant

MCP server for Outlook email, calendar, and contacts — let your AI assistant manage your inbox directly from the conversation.

Outlook Assistant connects AI assistants to your Microsoft Outlook account through the Model Context Protocol. Ask your AI assistant to search your inbox, send emails, schedule meetings, manage contacts, and configure mailbox settings — without leaving the conversation. Works with Claude, Cursor, Windsurf, and any MCP-compatible client.

Works with personal Outlook.com and work/school Microsoft 365 accounts.

Search inbox → read & summarise → draft a reply — all from the conversation

What you can do

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Outlook Assistant: common questions

Is Outlook Assistant MCP server safe?
Yes, by our scan: it is graded A (85/100). Read the Outlook Assistant safety report
How do I install Outlook Assistant?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Outlook Assistant need an API key?
Yes. The registry entry asks for OUTLOOK_CLIENT_SECRET.
Is Outlook Assistant maintained?
The last commit was 22 days ago (2026-10-13). The latest release is v3.14.1.
What can I use instead of Outlook Assistant?
Servers from other publishers that do the same job: Mailoo - Email MCP Server, Outlook MCP server and MCPEmails MCP server. Compare all Outlook Assistant alternatives.
How does Outlook Assistant compare with other Email MCP servers?
safety score 85/100 (higher than 78% of 916 Email servers); tools 22 (the typical Email server has 7); tools that change things 18% (typical: 25%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Outlook Assistant

Same job from other publishers: the closest match first, then the best rated.

All Outlook Assistant alternatives →
  • Mailoo - Email MCP Server
    Email MCP server for AI agents: IMAP/SMTP, Gmail, Outlook, calendar, ManageSieve, AI triage, OAuth2.
    A
  • Outlook MCP
    Microsoft Outlook personal accounts: mail, rules, calendar, contacts, to-do, drafts (77 tools).
    A
  • MCPEmails
    Never-stored live email: read, send and triage Gmail, Outlook / Microsoft 365, or any IMAP mailbox.
    A
  • Outlook
    Outlook & OneDrive MCP: personal & enterprise tools for mail, calendar, contacts, tasks, files
    A
  • Microsoft 365 Calendar
    Microsoft 365 Outlook calendar via Graph: list, get, create, update, respond, free/busy.
    A