outlook-local-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@outlook-local-mcp search my inbox for meeting notes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
outlook-classic-windows-mcp
MVP MCP server for working with a locally configured classic Outlook for Windows desktop profile.
This does not use Microsoft Graph, Outlook on the web, new Outlook for Windows, or admin-enabled cloud APIs. It uses Windows COM automation against the classic Outlook desktop app/profile available on the machine running the MCP server. This is useful if you don't want to deal with your IT support or ask for your admin's blessing.
Note: this MCP is idiosyncratic to my own workflow and requirements. It is advised to fork and modify it—or ask your coding agent to do it for you—to mold the MCP to your own Outlook setup and use case.
Warning: Classic Outlook for Windows for Microsoft 365 users is supported until at least 2029. New Outlook gradually becomes the default or replacement. This MCP will only be viable in the near/medium term. In the long term, use a different MCP that uses admin-backed APIs! See https://learn.microsoft.com/en-us/answers/questions/5554339/when-will-classic-outlook-end
Requirements
Windows
Classic Microsoft Outlook desktop installed and configured
uv
Related MCP server: outlook-mcp
Install / run
cd C:\Users\muhammad.menjeni\git\outlook-classic-windows-mcp
uv sync
uv run outlook-local-mcpThe MCP server speaks stdio, so it is intended to be launched by an MCP client.
Pi MCP config example
Add a local server entry similar to this in your Pi MCP configuration, adjusting the path if needed:
{
"mcpServers": {
"outlook-local": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\muhammad.menjeni\\git\\outlook-classic-windows-mcp",
"run",
"outlook-local-mcp"
]
}
}
}Tools
search_email
Searches Outlook mail by subject and/or body.
Arguments:
querystring: case-insensitive substring to find.folderstring: folder to search. Default:Inbox. You can use paths likeInbox/ArchiveorMailbox Name/Inbox.search_scope:all,subject, orbody. Default:all.max_results: number of matches to return. Default:10.max_items: newest items to inspect in the folder. Default:500.include_body_preview: include a short body preview. Default:true.
list_mail_folders
Lists available Outlook folders to help choose a folder path.
create_leave_calendar_blocks
Creates two unsent Outlook calendar items for leave review:
A personal blocker marked Out of Office with no attendees.
A notification meeting marked Free with the supplied attendees.
Nothing is sent. By default both items are saved and opened in Outlook for manual review/sending.
Arguments:
start_timestring: start date/time, e.g.2026-09-01 08:00.end_timestring: end date/time. For all-day events this is interpreted as an exclusive end, e.g. one day from2026-09-04 00:00to2026-09-05 00:00.required_attendeeslist/string: additional notification recipients. Configurable defaults can also be used.subjectstring: default comes from config, initiallyAmirul: On-Leave.bodystring: message body.optional_attendeeslist/string: optional notification recipients.locationstring.displayboolean: open the saved items in Outlook. Default:true.confirmedboolean: must betrueto actually create Outlook calendar items. Without confirmation, the tool only returns a proposal.
get_leave_defaults
Shows the current leave defaults and config path.
set_leave_defaults
Persists leave defaults such as subject and notification attendees. Requires confirmed=true before writing config.
infer_leave_recipients
Read-only scan of recent local Outlook email to infer candidate distribution lists for leave notifications. Returns candidates and evidence; it does not write config or create drafts.
resolve_recipients
Resolves names, emails, or distribution lists using Outlook recipient resolution/address book.
search_contacts
Searches local Outlook contact folders by name, email, company, department, or job title.
Notes / limitations
First access may start Outlook if it is not already running.
Your organization may show Outlook Object Model Guard prompts or block automation by policy.
This MVP searches by scanning recent folder items, which is simple and reliable but not as fast as indexed Outlook search for very large folders.
Available Tools
8 toolscreate_leave_calendar_blocksA
Create two unsent Outlook calendar items for leave review.
Creates:
A personal calendar blocker marked Out of Office with no attendees.
A meeting notification marked Free with the supplied attendees.
Nothing is sent. Items are saved locally, and by default opened in Outlook for manual review and sending.
Inputs: end_time (required), start_time (required), body, all_day, +6 more. Returns: object
get_leave_defaultsA
Return configurable defaults used by create_leave_calendar_blocks.
Inputs: no named parameters. Returns: object
infer_leave_recipientsB
Infer candidate leave-notification recipients/DLs from recent local Outlook email.
This is read-only. It scans recent mail subjects/bodies/recipients for distribution lists and department/team signals, then returns candidates for user confirmation.
Inputs: folders, max_results, max_items_per_folder. Returns: object
list_mail_foldersA
List Outlook store/folder paths to help choose the folder for search_email.
Inputs: max_depth. Returns: object
resolve_recipientsB
Resolve names, emails, or distribution lists using Outlook's address book/GAL.
Inputs: recipients (required). Returns: object
search_contactsB
Search local Outlook contact folders by name, email, company, or job title.
Inputs: query (required), max_results, max_folders_depth. Returns: object
search_emailA
Search locally configured Outlook desktop email by subject and/or body.
This scans the newest max_items messages in folder and returns up to
max_results matches. It uses the local Outlook profile via COM, not
Microsoft Graph or Outlook Web APIs.
Inputs: query (required), folder, max_items, max_results, +2 more. Returns: object
set_leave_defaultsB
Persist leave-calendar defaults. Requires confirmed=true because this writes config.
Inputs: notification_attendees (required), subject, confirmed. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Tools are mostly distinct, but three recipient-related tools (resolve_recipients, search_contacts, infer_leave_recipients) could cause some confusion regarding when to use each. However, their descriptions clearly differentiate (address book resolution vs. contact folder search vs. historical email inference), and the other tools are unambiguous.
All tool names follow a strict verb_noun snake_case pattern (e.g., get_leave_defaults, search_email, create_leave_calendar_blocks). The pattern is predictable and consistent across all 8 tools, making it easy for an agent to infer naming conventions for hypothetical tools.
With 8 tools, the server is well-scoped for its domain of Outlook leave management and search. Each tool serves a distinct function in a cohesive workflow, and the count is within the ideal range without being overwhelming or sparse.
The tool surface covers the core leave workflow: configuration, calendar block creation, recipient inference/resolution, and search capabilities. Minor gaps exist—such as no update/delete for leave calendar blocks—but these are unsent drafts intended for manual review, so the current surface seems sufficient for the stated purpose.
Maintenance
Related MCP Connectors
Your own AI reads, searches and drafts in your mailbox, on your Windows computer.
Manage Microsoft 365 email, calendar, contacts and inbox rules via the Graph API with OAuth 2.0.
Permissioned access to Outlook, OneDrive and Teams via the user's own Microsoft account
Mac & Windows: let ChatGPT, Claude & Cursor use your email, calendar, iMessage, Teams, files.
Related MCP Servers
- FlicenseAqualityDmaintenanceControls the Microsoft Outlook desktop app via COM automation, enabling email, calendar, and contact management without needing Graph API or Azure registration.14-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to read, send, and manage Outlook mail locally on Windows via COM/MAPI, without cloud APIs.85 npm1MIT
- FlicenseNot gradedqualityCmaintenanceReads and searches your local Microsoft Outlook desktop mailbox via COM, supporting folder listing, message/thread retrieval, attachment saving, bulk export, and draft creation without sending, requiring no OAuth or admin consent.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage Microsoft Outlook Desktop (Classic) calendar and email through local COM automation, without Microsoft Graph or Entra registration.MIT