An MCP (Model Context Protocol) server that lets AI agents manage Microsoft Outlook on macOS — read and send email, manage calendar events, and more.
- macOS with Microsoft Outlook installed
- Node.js ≥ 18
- Outlook must be running and accessible via AppleScript
npm install
npm run buildAdd to your MCP client config (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"outlook": {
"command": "node",
"args": ["/absolute/path/to/outlook-mcp/dist/index.js"]
}
}
}Or run in dev mode (no build needed):
{
"mcpServers": {
"outlook": {
"command": "npx",
"args": ["tsx", "/absolute/path/to/outlook-mcp/src/index.ts"]
}
}
}| Tool | Description |
|---|---|
outlook_list_messages |
List recent messages from a folder; optional account filter to target a specific account |
outlook_read_message |
Read the full content of a message by ID |
outlook_search_messages |
Search inbox by keyword (subject, sender, preview); optional account filter |
outlook_send_email |
Compose and send an email |
outlook_reply |
Reply to a message (supports reply-all) |
outlook_forward |
Forward a message to one or more recipients |
outlook_delete_message |
Move a message to Deleted Items |
outlook_mark_read |
Mark a message as read or unread |
outlook_list_folders |
List all mail folders with unread counts and account email |
outlook_list_accounts |
List all configured email accounts with inbox unread counts |
outlook_list_messages and outlook_search_messages accept an optional account parameter:
- Pass an account email (e.g.
"you@company.com") to target that account's folders. - Pass
"unknown"to target accounts whose email cannot be resolved via AppleScript (e.g. Google Workspace accounts in new Outlook for Mac). - Omit to use the default inbox (highest unread count across accounts).
Use outlook_list_accounts to see available accounts, and outlook_list_folders to inspect which folders belong to which account.
| Tool | Description |
|---|---|
outlook_list_events |
List upcoming calendar events |
outlook_get_event |
Get full details of a calendar event by ID |
outlook_create_event |
Create a new calendar event |
npm run dev # Run with tsx (no build step)
npm run build # Compile TypeScript
npm run lint # Check for lint errors
npm run lint:fix # Auto-fix lint errors
npm run format # Format source files
npm run format:check # Check formatting without writingEach tool call generates an AppleScript, executes it via osascript, and parses the output (tab-separated values) back into structured JSON. No external APIs or OAuth tokens are required — it communicates directly with the Outlook macOS app.
MIT