ClaudeCodeMod

All shelves / MCP servers

OWA Exchange MCP Server

io.github.nhype/owa-exchange-mcp · 10 stars · Python · MIT

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

Install

The repo has no one-line install. Follow its README.

Published as

  • PyPIexchange-mcp-serverstdio

From the server's entry in the official MCP Registry.

Open the repo

Configuration

NameSet asWhat it is
EXCHANGE_OWA_URLOptionalEnv varBase URL of your OWA instance (e.g. https://owa.example.com)
EXCHANGE_COOKIE_FILEOptionalEnv varPath to session cookies file (default: session-cookies.txt)

Files

README.md

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

# Copy and edit the MCP config with your OWA URL
cp .mcp.json.example .mcp.json

# One-time: set up encrypted credentials
python3 login.py --setup

# Login (opens headless browser, 2FA approval required)
python3 login.py

# Install the MCP server
pip 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):

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

Cursor (.cursor/mcp.json):

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

Claude Code (.mcp.json):

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

Configuration

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)

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="user@example.com", password="...")

Subsequent logins (decrypts stored credentials):

login(master_password="...")

Option B: Via CLI

python3 login.py --setup   # First time: save encrypted credentials
python3 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)

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

Calendar (7)

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

Directory (1)

Tool Description
find_person Search people in Active Directory

Folders (7)

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

Availability (2)

Tool Description
find_free_time Find free slots in your calendar
find_meeting_time Find common free slots for multiple people

Analytics (2)

Tool Description
get_meeting_stats Meeting count statistics for multiple people
get_meeting_contacts Connection matrix — who you meet with most

Auth (1)

Tool Description
login Authenticate 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 tool
pyproject.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

Facts

Kind
MCP server
Repo
nhype/owa-exchange-mcp
Group
Uncategorized
Stars
10
License
MIT
Language
Python
Last push
2026-02-16
Forks
2
MCP Registry
io.github.nhype/owa-exchange-mcp

More on this shelf

  1. 1REAio.github.morluto/reaReverse engineer anything from your terminal or agent with one CLI and MCP server.125.3k
  2. 2com.browser-use/browser-usecom.browser-use/browser-useControl a real Chrome browser to complete any task: fill forms, extract data, book flights.117.7k
  3. 3World Monitorapp.worldmonitor/mcpLive markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.88.3k
  4. 4Scrapling MCP Serverd4vinci/scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scraplingdev86.9k
  5. 5Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
  6. 6Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k