outlook-mcp
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, andcreateEventall 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
EntryIDas unique identifier - Search: Uses
Items.Restrict()with DASL filters for efficient server-side filtering - Internationalization: Automatically handles both "Inbox" and "收件箱" folder names
Related Projects
- mail-assistant — AI-powered mail assistant using MCP, works with Thunderbird and Outlook
- thunderbird-mcp — MCP server for Thunderbird
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)
| File | Size | Uploaded | |
|---|---|---|---|
| outlook_mcp_server-0.1.1.tar.gz | 20.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|