outlook-mcp
MCP server for Microsoft Outlook on Windows that lets AI assistants manage email, contacts, calendars, and tasks through the Outlook desktop client via COM.
README
outlook-mcp (extended fork)
MCP server for Microsoft Outlook on Windows via win32com — lets AI assistants
(Claude Code and other MCP clients) work with email, contacts, calendars, and
tasks through a locally running Outlook instance. No Azure AD, no Graph API,
no OAuth — it drives the Outlook desktop client over COM.
This is an extended fork of
lihaokun/outlook-mcp (PyPI:
outlook-mcp-server 0.1.1, MIT). Upstream ships 14 tools; this fork ships 21
and fixes three classes of bugs that bite in production. It is not published
to PyPI — install from this repository (see below) and do not run
pip install -U outlook-mcp-server afterwards, or PyPI will overwrite it.
What this fork adds over upstream 0.1.1
New tools (7) — upstream had only listCalendars + createEvent for
calendars and nothing for tasks:
listEvents,getEvent,updateEvent,deleteEventlistTasks,createTask,updateTask
Fixes:
- Timezone: event times are read via
StartUTC/EndUTCand converted withastimezone(). Outlook's COMStart/Endproperties report local wall-clock time with a bogus+00:00offset; naive code shifts every appointment. - Locale-safe date filters: DASL/Jet date literals are formatted with
win32api.GetDateFormat(LOCALE_USER_DEFAULT, ...). Outlook parses filter dates in the system locale — a US-formatted07/02/2026is read as February 7 on a German system. - COM apartment discipline:
CoInitialize/CoUninitializeare balanced in a single helper (_run_com) instead of being called ad hoc. --version: reports the real installed version (upstream had a typo that always printeddev).
Additions:
calendarPathparameter on all event tools, and emitted in every event dict, so events are addressable across multiple/shared calendars.busyStatusandmeetingStatusexposed on events.createEventwithcalendarIdsaves, then moves the item to the target calendar and displays the moved item.- Long message bodies are truncated with a hint to call
getMessage/getEventfor the full body.
Safety model (unchanged from upstream): every outbound action —
sendMail, replyToMessage, forwardMessage, createEvent, tasks — ends in
.Display(), never .Send(). The item opens in Outlook and a human clicks
Send. The server cannot send anything on its own.
Full tool list (21)
| Area | Tools |
|---|---|
| Accounts/folders | listAccounts, listFolders, createFolder |
searchMessages, getRecentMessages, getMessage, sendMail, replyToMessage, forwardMessage, updateMessage, deleteMessages |
|
| Contacts | searchContacts |
| Calendar | listCalendars, createEvent, listEvents, getEvent, updateEvent, deleteEvent |
| Tasks | listTasks, createTask, updateTask |
Requirements
- Windows with the classic Outlook desktop client installed and configured (the server attaches to a running instance or starts one via COM)
- Python 3.10+
Install
pip install git+https://github.com/K4uP/outlook-mcp.git
Register with Claude Code (user scope):
claude mcp add --scope user outlook -- outlook-mcp-server
If outlook-mcp-server is not on PATH, use the full path to the console
script, e.g.
%LOCALAPPDATA%\Programs\Python\Python312\Scripts\outlook-mcp-server.exe.
Restart Claude Code afterwards and verify with claude mcp list.
Known gotchas
mcpServersconfig belongs in~/.claude.json(user scope) — putting it insettings.jsondoes nothing.listEventswithoutcalendarPathmixes in shared/delegate calendars; pass the explicit calendar path when you need one person's availability.createEvent: omitcalendarIdfor the default calendar; some Exchange setups fail when the default calendar is addressed by explicit id.- Mail "sent" via
sendMailis only displayed — nothing leaves the machine until a human presses Send in the Outlook window.
License
MIT — see LICENSE. Original work copyright (c) 2026 lihaokun; extensions and fixes copyright (c) 2026 Rene S. Kaup.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.