OWA Exchange MCP Server

io.github.nhypePublished by GitHub account nhypev1.0.1Updated Oct 24, 2026

MCP server for Microsoft Exchange / OWA — email, calendar, directory, availability

The publisher's own server: Exchange.news — Crypto offers, campaigns and news

Overview

AI-generated overview

MCP server that connects an assistant to a Microsoft Exchange / OWA account for email, calendar, directory search, availability and meeting analytics.

What you can do
  • Read, send, reply, forward, move, delete and mark emails, and download attachments or extract links
  • List, create, update, cancel and respond to meetings, and download event attachments
  • List, create, rename, move, empty and delete mail folders, and check session status
  • Search people in Active Directory and find free time for yourself or several people
  • Get meeting statistics and a who-you-meet-with connection matrix
  • Log in to OWA with stored credentials and 2FA approval
When to use it
Useful when an assistant should work inside a corporate Exchange or Outlook Web Access mailbox: triaging and answering mail, scheduling or rescheduling meetings, checking colleagues' availability, or looking up people in the directory.
Requirements
Runs locally as a Python package (uvx exchange-mcp-server) on desktop clients. Requires EXCHANGE_OWA_URL pointing at your OWA instance, and optionally EXCHANGE_COOKIE_FILE for the session cookie file. Login needs your OWA username and password plus a master password, and a 2FA approval within about 90 seconds; a headless browser is used during login.
Before you install
The assistant can send, forward, delete, move and empty mail, and create, change or cancel meetings that notify attendees. Login takes your OWA username and password and a master password, stored encrypted in a cookie file; the master password is passed to the login tool. The login flow is written for one specific 2FA method (mobile push) and may need code changes for other setups. Session cookies go only to your OWA server.

Installation

In SourceWeft

  1. Open OWA Exchange MCP Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

OWA Exchange MCP Server

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.

Quick Start

bash
# Copy and edit the MCP config with your OWA URLcp .mcp.json.example .mcp.json
# One-time: set up encrypted credentialspython3 login.py --setup
# Login (opens headless browser, 2FA approval required)python3 login.py
# Install the MCP serverpip install -e .

Install

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):

json
{  "mcpServers": {    "exchange": {      "command": "uvx",      "args": ["exchange-mcp-server"],      "env": {        "EXCHANGE_OWA_URL": "https://owa.example.com"      }    }  }}

Cursor (.cursor/mcp.json):

json
{  "mcpServers": {    "exchange": {      "command": "uvx",      "args": ["exchange-mcp-server"],      "env": {        "EXCHANGE_OWA_URL": "https://owa.example.com"      }    }  }}

Claude Code (.mcp.json):

json
{  "mcpServers": {    "exchange": {      "command": "uvx",      "args": ["exchange-mcp-server"],      "env": {        "EXCHANGE_OWA_URL": "https://owa.example.com"      }    }  }}

Configuration

VariableRequiredDescription
EXCHANGE_OWA_URLYesBase URL of your OWA instance
EXCHANGE_COOKIE_FILENoPath to session cookies file (default: session-cookies.txt)

Login

Option A: Via MCP tool (recommended)

The login tool handles credential setup and authentication within the MCP session — no separate terminal needed.

First time (setup + login):

login(master_password="...", username="[email protected]", password="...")

Subsequent logins (decrypts stored credentials):

login(master_password="...")

Option B: Via CLI

bash
python3 login.py --setup   # First time: save encrypted credentialspython3 login.py            # Login with 2FA

Both methods:

  1. Open a headless browser to your OWA URL
  2. Submit credentials
  3. Wait for 2FA approval (up to 90 seconds)
  4. Save encrypted session cookies to session-cookies.txt

Credentials and session cookies are encrypted at rest with AES-256 (PBKDF2 key derivation, 480k iterations).

Tools (30)

Email (10)

ToolDescription
get_emailsList emails from a folder with filtering
get_emailGet full email content by ID
send_emailSend a new email
reply_emailReply to an email
forward_emailForward an email
delete_emailDelete an email
move_emailMove email to another folder
mark_email_readMark email as read/unread
download_attachmentsDownload file attachments from an email
get_email_linksExtract hyperlinks from an email body

Calendar (7)

ToolDescription
get_calendar_eventsGet events in a date range (supports recurring expansion)
create_meetingCreate a meeting with attendees
update_meetingUpdate an existing meeting
cancel_meetingCancel a meeting and notify attendees
respond_to_meetingAccept, decline, or tentatively accept
download_event_attachmentsDownload file attachments from a calendar event
get_event_linksExtract hyperlinks from an event description

Directory (1)

ToolDescription
find_personSearch people in Active Directory

Folders (7)

ToolDescription
get_foldersList mail folders with unread counts
create_folderCreate a new mail folder
rename_folderRename an existing folder
empty_folderEmpty all items from a folder
delete_folderDelete a mail folder
move_folderMove a folder to a different parent
check_sessionCheck if the OWA session is authenticated

Availability (2)

ToolDescription
find_free_timeFind free slots in your calendar
find_meeting_timeFind common free slots for multiple people

Analytics (2)

ToolDescription
get_meeting_statsMeeting count statistics for multiple people
get_meeting_contactsConnection matrix — who you meet with most

Auth (1)

ToolDescription
loginAuthenticate to OWA (credential setup + 2FA login)

Files

login.py                  # Browser-based 2FA login (standalone CLI)exchange_mcp/  server.py               # FastMCP server entry point  owa_client.py           # OWA HTTP client  auth.py                 # Async login logic (shared by MCP tool)  tools/    email.py              # Email tools    calendar.py           # Calendar tools    people.py             # Directory search    folders.py            # Folder management & session check    availability.py       # Free time / meeting time    analytics.py          # Meeting stats & contacts    auth.py               # Login toolpyproject.toml            # Package config

Warning

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.

Security

  • Credentials and session cookies encrypted with AES-256-Fernet
  • Master password never stored
  • PBKDF2 with 480,000 iterations for key derivation
  • Credential and cookie files have 0600 permissions
  • Cookies decrypted into memory only — never written to disk as plaintext (via MCP tool)
  • Session cookies never transmitted except to your OWA server

Source: README.md at commit 413c31a

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Exchange integrations