Skip to main content
Glama
ShermanGu
by ShermanGu

Exchange EWS MCP v0.9.0

English | ็ฎ€ไฝ“ไธญๆ–‡

CI Python 3.10+ Platform: Windows License: MIT

๐Ÿ“ฎ Give your on-premises Exchange an AI assistant.

Tired of copying last week's report? Digging through old mail before every reply? Checking calendars one person at a time just to book a meeting?

Exchange EWS MCP connects an MCP Agent to Microsoft Exchange through EWS + NTLM. The Agent can search mail, prepare drafts, update weekly reports, check availability, and manage meetings โ€” while important sends stay under user control.

IMPORTANT

Designed foron-premises Exchange with EWS + NTLM. It is not an Exchange Online / Microsoft Graph OAuth client.

โœจ Highlights

  • ๐Ÿ“ง Search mail, compose drafts, reply, forward, edit drafts, add attachments.

  • ๐Ÿ‘ฅ Resolve recipients from full pinyin names or complete email addresses.

  • ๐Ÿ“ Update weekly reports while preserving the original Outlook HTML layout, including reports synthesized from other people's weekly-report emails.

  • ๐Ÿ“… Check availability, find common time, create/edit meetings, and send invitations after confirmation.

  • ๐Ÿ” Store passwords in Windows Credential Manager.

  • ๐Ÿ›ก๏ธ Draft-first workflows keep the final send under user control.

Related MCP server: outlook-mcp

๐Ÿงญ Architecture

flowchart LR
    A["MCP client / Agent"] -->|stdio| S["Exchange EWS MCP"]
    S --> M["Semantic mail workflows"]
    S --> W["Weekly-report workflow"]
    S --> C["Calendar coordination"]
    M --> E["EWS client + NTLM"]
    W --> E
    C --> E
    E --> X["On-premises Exchange"]
    M --> R["Local reference store"]
    W --> R
    C --> R
    S --> K["Windows Credential Manager"]

The server runs locally on Windows and exposes higher-level mail and calendar workflows to the Agent. Exchange credentials and low-level Exchange IDs stay behind the server.


๐Ÿš€ Quick start

Clone โ†’ install โ†’ connect Exchange โ†’ paste one server path into your MCP client.

1. Requirements

  • Windows 10/11 or Windows Server

  • Python 3.10โ€“3.13

  • Access to your Exchange EWS endpoint

  • An Exchange account allowed to use EWS with NTLM

2. Install

git clone https://github.com/ShermanGu/exchange-ews-mcp.git
cd exchange-ews-mcp
.\install.cmd

The installer creates .venv and installs everything locally.

3. Configure Exchange

.\.venv\Scripts\exchange-ews-mcp.exe configure

Set the current mailbox user:

.\.venv\Scripts\exchange-ews-mcp.exe set-current-user `
  --email "you@company.example" `
  --display-name "Your Name"

Check the connection:

.\.venv\Scripts\exchange-ews-mcp.exe status
.\.venv\Scripts\exchange-ews-mcp.exe test

Your password is stored in Windows Credential Manager, not in the repository.

4. Set calendar preferences

.\.venv\Scripts\exchange-ews-mcp.exe set-calendar-preferences `
  --time-zone "Asia/Shanghai" `
  --workday-start "09:00" `
  --workday-end "18:00" `
  --slot-minutes 30

5. Connect your MCP client

After installation, the production MCP server is:

<repo>\.venv\Scripts\exchange-ews-mcp-server.exe

If your MCP client has Command and Arguments fields:

Command:
D:\tools\exchange-ews-mcp\.venv\Scripts\exchange-ews-mcp-server.exe

Arguments:
<leave empty>

Use an absolute path, save the configuration, then restart the MCP client.

Or use JSON

{
  "mcpServers": {
    "exchange-ews": {
      "command": "D:\\tools\\exchange-ews-mcp\\.venv\\Scripts\\exchange-ews-mcp-server.exe"
    }
  }
}

You can also run:

.\.venv\Scripts\exchange-ews-mcp.exe mcp-config

6. Verify

.\.venv\Scripts\exchange-ews-mcp.exe version
.\.venv\Scripts\exchange-ews-mcp.exe tool-list

Expected version: 0.9.0 ยท Production tools: 11

๐ŸŽ‰ Done โ€” your Agent can now work with Exchange.

๐Ÿ’ฌ Try these prompts

Find my latest weekly report and update it with this week's progress.
Summarize the weekly reports A and B sent me, then use that summary to generate my new weekly-report draft.
Draft an email to wangxiaoming saying integration testing is complete. Don't send it.
Find the earliest one-hour slot next week when lixiaohong and I are both free, create a meeting, and save it without sending.

๐Ÿงฐ Main capabilities

Area

Capabilities

Mail

Search/read mail, compose drafts, reply, forward, edit drafts, attachments

People

Recipient resolution and ambiguity handling

Weekly reports

Read recent history and create an updated Reply All or fresh Compose draft without rebuilding HTML

Calendar

Availability, common slots, calendar reads, create/update meetings, send invitations

The compact mail facade uses search_mail, read_mail, resolve_people, save_mail_draft, and edit_mail_draft. Weekly reports use the single weekly_report entry followed by continue_action; HTML always remains server-owned. Calendar creation/editing uses save_meeting; confirmed sending uses send_meeting_invitation.

๐Ÿ“ Weekly reports

Direct user update โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                   โ”œโ†’ weekly_report(request=...)
search_mail/read_mail โ†’ LLM summary โ”˜
                                   โ†“
                         Read recent history + slots
                                   โ†“
                         Agent routes request by loc
                                   โ†“
                         Update only relevant text
                                   โ†“
                  Create an unsent Reply All or Compose draft

For aggregation prompts, the Agent first searches/reads the source reports and summarizes them; that summary becomes the request passed to weekly_report. The tool itself does not search other users' mail.

The Agent does not regenerate the whole HTML template. The server keeps the existing layout and updates approved text slots only. The Agent receives three weeks of context total (current editable report plus two prior reports), uses short local slot IDs such as s1, and the server automatically advances supported Subject date/week markers for the next draft.

๐Ÿ”’ Safety in short

  • Mail is draft-first.

  • Meeting sends require explicit confirmation.

  • Credentials stay in Windows Credential Manager.

  • Ambiguous recipients or meeting times are returned for confirmation instead of guessed.

๐Ÿ“š Documentation

Agent connection ยท Agent tools ยท Architecture ยท Weekly reports ยท Development tests ยท Changelog

For contributors: CONTRIBUTING.md ยท SECURITY.md

Limitations

Windows is the primary runtime target. EWS behavior depends on Exchange version and mailbox policy. Weekly-report editing currently expects a supported Outlook/Word HTML reply structure. Exchange Online users should generally prefer Microsoft Graph and modern authentication.

License

Released under the MIT License.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
1wRelease cycle
2Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for email + calendar via classic Outlook on Windows (COM automation). No Azure app registration, no OAuth โ€” it just drives the Outlook desktop client you're already signed into.
    88
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for any Microsoft Exchange / OWA deployment. Gives LLM agents access to email, calendar, directory search, folders, availability, and meeting analytics via 30 tools.
    30
    7
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A local stdio MCP server that enables reading, sending, and searching emails, as well as listing calendar events via Microsoft Graph API, using device-code authentication.
    10
    82
    MIT

View all related MCP servers

Related MCP Connectors

  • Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.

  • A paid remote MCP for CLI tool MCP, built to return verdicts, receipts, usage logs, and audit-ready

  • Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ShermanGu/exchange-ews-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server