Skip to main content

outlook-mcp

PyPI version Python License: MIT

MCP server for Outlook — enables AI assistants to access email, contacts, and calendars via Windows COM interface.

Built on the Model Context Protocol (MCP), works with Claude Code and other MCP-compatible clients.

Features

  • Email: Search, read, send, reply, forward, flag, move, delete
  • Contacts: Search by name or email
  • Calendar: List calendars, create events
  • Multi-account: Supports all accounts configured in Outlook
  • Safe by design: Send/reply/forward opens Outlook compose window for user confirmation — never auto-sends
  • Local only: All operations via local COM interface, no cloud API or OAuth needed

Requirements

  • Windows with Outlook desktop client installed and running
  • Python >= 3.10

Install

pip install outlook-mcp-server

Verify installation:

outlook-mcp-server --version

Usage with Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "outlook": {
      "command": "outlook-mcp-server"
    }
  }
}

Then restart Claude Code. The 14 Outlook tools will be available to Claude automatically.

Alternative: run from source

git clone https://github.com/lihaokun/outlook-mcp.git
cd outlook-mcp
pip install -e .
{
  "mcpServers": {
    "outlook": {
      "command": "uv",
      "args": [
        "--directory", "C:\\path\\to\\outlook-mcp",
        "run", "outlook-mcp-server"
      ]
    }
  }
}

Available Tools

Accounts & Folders

Tool Description
listAccounts List all configured email accounts (name, email, type)
listFolders List all folders with message counts and unread counts
createFolder Create a new subfolder under a specified parent

Email Search & Read

Tool Description
searchMessages Search by keyword (subject/sender/recipient), with date range and sort
getRecentMessages Get recent messages by days, folder, and unread filter
getMessage Read full message content (body, HTML, attachments)

Email Operations

Tool Description
sendMail Compose new email (opens Outlook compose window)
replyToMessage Reply or reply-all (opens compose window)
forwardMessage Forward with original attachments (opens compose window)
updateMessage Mark read/unread, flag/unflag, move to folder, or trash
deleteMessages Batch delete messages

Contacts & Calendar

Tool Description
searchContacts Search contacts by name or email
listCalendars List all calendars with item count and writable status
createEvent Create calendar event (opens Outlook event window)

Safety

This server is designed with safety as a priority:

  • No auto-send: sendMail, replyToMessage, forwardMessage, and createEvent all call .Display() instead of .Send() / .Save(). This opens the Outlook compose window so the user can review and confirm before sending.
  • Outlook Object Model Guard: Outlook may show additional security prompts for send operations. This is expected behavior.
  • Local only: All data stays on your machine. No external API calls, no cloud services, no OAuth tokens.

Technical Details

  • COM interface: Uses pywin32 (win32com.client) to control Outlook
  • MCP transport: stdio (standard input/output)
  • Message ID: Uses Outlook's EntryID as unique identifier
  • Search: Uses Items.Restrict() with DASL filters for efficient server-side filtering
  • Internationalization: Automatically handles both "Inbox" and "收件箱" folder names

Related Projects

License

MIT

Metadata

Release files for outlook-mcp-server 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for outlook-mcp-server 0.1.1
File Size Uploaded
outlook_mcp_server-0.1.1.tar.gz 20.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for outlook-mcp-server 0.1.1
File Interpreter ABI Platform
outlook_mcp_server-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 32.6 kB

Release files / outlook_mcp_server-0.1.1.tar.gz

Download URL outlook_mcp_server-0.1.1.tar.gz
Size 20.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b73245bf2b060cb632e76d4f2843ca8f83235078ffe2f0f65fc736b453a92973
BLAKE2b-256 checksum
How to use checksums
8e0388154b2eba268345e335b4f05c4822bc884ff3ca6fb332bce4c7d83029c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.2

Release files / outlook_mcp_server-0.1.1-py3-none-any.whl

Download URL outlook_mcp_server-0.1.1-py3-none-any.whl
Size 11.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
09b32da008fe979b82fae03caec2e0ef0420c13409cbb329c9248786f8f1d75a
BLAKE2b-256 checksum
How to use checksums
ca66e60e8443a592df7bcdac718e8a39419dd4272a08a5d5592b44949f14972d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page