The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the OWA Exchange MCP Server listing page.
MCP (Model Context Protocol) server for any Microsoft Exchange / OWA (Outlook Web Access) deployment. Gives LLM agents access to email, calendar, directory search, folders, availability, and meeting analytics via 30 tools.
Works with any on-premise or hosted Exchange server that exposes OWA.
Add to your MCP client config. Replace https://owa.example.com with your OWA URL.
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
Cursor (.cursor/mcp.json):
Claude Code (.mcp.json):
| Variable | Required | Description |
|---|---|---|
EXCHANGE_OWA_URL | Yes | Base URL of your OWA instance |
EXCHANGE_COOKIE_FILE | No | Path to session cookies file (default: session-cookies.txt) |
The login tool handles credential setup and authentication within the MCP session — no separate terminal needed.
First time (setup + login):
Subsequent logins (decrypts stored credentials):
Both methods:
session-cookies.txtCredentials and session cookies are encrypted at rest with AES-256 (PBKDF2 key derivation, 480k iterations).
| Tool | Description |
|---|---|
get_emails | List emails from a folder with filtering |
get_email | Get full email content by ID |
send_email | Send a new email |
reply_email | Reply to an email |
forward_email | Forward an email |
delete_email | Delete an email |
move_email | Move email to another folder |
mark_email_read | Mark email as read/unread |
download_attachments | Download file attachments from an email |
get_email_links | Extract hyperlinks from an email body |
| Tool | Description |
|---|---|
get_calendar_events | Get events in a date range (supports recurring expansion) |
create_meeting | Create a meeting with attendees |
update_meeting | Update an existing meeting |
cancel_meeting | Cancel a meeting and notify attendees |
respond_to_meeting | Accept, decline, or tentatively accept |
download_event_attachments | Download file attachments from a calendar event |
get_event_links | Extract hyperlinks from an event description |
| Tool | Description |
|---|---|
find_person | Search people in Active Directory |
| Tool | Description |
|---|---|
get_folders | List mail folders with unread counts |
create_folder | Create a new mail folder |
rename_folder | Rename an existing folder |
empty_folder | Empty all items from a folder |
delete_folder | Delete a mail folder |
move_folder | Move a folder to a different parent |
check_session | Check if the OWA session is authenticated |
| Tool | Description |
|---|---|
find_free_time | Find free slots in your calendar |
find_meeting_time | Find common free slots for multiple people |
| Tool | Description |
|---|---|
get_meeting_stats | Meeting count statistics for multiple people |
get_meeting_contacts | Connection matrix — who you meet with most |
| Tool | Description |
|---|---|
login | Authenticate to OWA (credential setup + 2FA login) |
Every Exchange / OWA deployment has its own authentication setup — some require 2FA (push notifications, TOTP, SMS), others use single-factor login or SSO. The login logic in this project (login.py and exchange_mcp/auth.py) is written for a specific 2FA flow (mobile push approval). If your OWA server uses a different 2FA method or no 2FA at all, you will need to modify or remove the login logic to match your environment.
0600 permissions