outlook-classic-mcp

A local MCP (Model Context Protocol) server that exposes the classic
Outlook desktop client — mail, folders, calendar, contacts, tasks, color
categories, mail rules, and Out-of-Office status — to any MCP-aware
agent: Claude Code, Claude Desktop, Cowork, GitHub Copilot / VS Code
agent mode, Cursor, Cline, Continue, Windsurf, and anything else that
speaks MCP.
It talks to Outlook's COM API on Windows via pywin32, the same path
macros and Office add-ins use. Authentication piggybacks on whatever
account Outlook is already signed into — no Azure / Entra app
registration, no Microsoft Graph API, no OAuth tokens.
Requirements
- Windows 10 or 11
- Outlook desktop (Classic) — the
OUTLOOK.EXE shipped with
Microsoft 365 / Office. The "new Outlook" (olk.exe) is not
supported (no COM surface).
- Python 3.10+ (the installer fetches Python 3.11 via
uv if you
don't already have one).
You do not need to open Outlook before starting the server — the
server auto-launches Outlook on its first COM call.
Install
Three paths, simplest first.
Option 1 — Agent plugin (recommended)
The repo doubles as a plugin marketplace. Installing the plugin registers the MCP server and loads the bundled outlook skill (an operational reference that teaches the agent how to drive these tools) in one step. The MCP server itself is fetched on demand by uvx directly from PyPI — no git clone, no pip install, no .venv to maintain.
The plugin format started in Claude Code and is now supported by other agents too (Cowork, Copilot, Cursor, and others that adopted the plugin/skill format) — point your agent's plugin install flow at this repo. The commands below are for Claude Code:
Install uv once if you don't have it:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Open a fresh terminal so PATH refreshes, then in any Claude Code session:
/plugin marketplace add anasahmed07/Outlook-Classic-MCP
/plugin install outlook@outlook-classic-mcp
Restart Claude Code (/quit, reopen). First call has a one-time 5–15 s pause while uvx resolves the package; subsequent calls are instant. Confirm with outlook_whoami.
To update later: /plugin marketplace update outlook-classic-mcp then /plugin update outlook@outlook-classic-mcp. To pull a fresh PyPI release of the server itself: uv cache clean outlook-classic-mcp.
Option 2 — From PyPI with uv (any MCP client)
Works for any MCP client. The smart client installer auto-registers the server with Claude Desktop, Claude Code, Cursor, Cline, Continue, and Windsurf; for other clients (e.g. VS Code / Copilot agent mode), add the server to their MCP config manually — see below.
uv pip install --system outlook-classic-mcp
python -m outlook_mcp.scripts.install_to_clients
(uv is Astral's Python installer — see Option 1 above for the one-line install. --system writes to your system Python so python -m outlook_mcp resolves anywhere; drop the flag if you'd rather install into an active venv.)
Package: https://pypi.org/project/outlook-classic-mcp/.
Smart client installer
scripts/install_to_clients.py detects which MCP clients are
installed on your machine and shows a checkbox menu:
Select which clients to register outlook-mcp with:
[ ] 1. Claude Desktop C:\Users\you\AppData\Roaming\Claude\claude_desktop_config.json
[ ] 2. Claude Code (via `claude` CLI)
[ ] 3. Cursor C:\Users\you\.cursor\mcp.json
Type a number to toggle, 'a' to select all, 'n' for none,
'enter' to confirm, 'q' to quit without changes.
For each toggled client it deep-merges
mcpServers.outlook = {"command": ".venv/Scripts/python.exe", "args": ["-m", "outlook_mcp"]}
into the right config (or runs claude mcp add for Claude Code).
Existing files are snapshotted to <file>.bak first. Re-running is
idempotent — it updates the entry instead of duplicating it.
Supported clients: Claude Desktop, Claude Code, Cursor, Cline,
Continue, Windsurf.
Manual config (any other MCP client)
Any client not covered by the installer just needs the standard stdio
server entry in its MCP config:
{
"mcpServers": {
"outlook": {
"command": "uvx",
"args": ["--from", "outlook-classic-mcp", "outlook-mcp"]
}
}
}
(VS Code / Copilot agent mode names the top-level key servers in
mcp.json instead of mcpServers; the entry itself is the same.)
Tools
31 tools across 9 categories, all prefixed outlook_*.