Exchange EWS MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Exchange EWS MCPshow my upcoming meetings this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Exchange EWS MCP v0.9.0
English | ็ฎไฝไธญๆ
๐ฎ 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.
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: OWA Exchange MCP Server
๐งญ 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.cmdThe installer creates .venv and installs everything locally.
3. Configure Exchange
.\.venv\Scripts\exchange-ews-mcp.exe configureSet 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 testYour 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 305. Connect your MCP client
โ Recommended: point directly to the EXE
After installation, the production MCP server is:
<repo>\.venv\Scripts\exchange-ews-mcp-server.exeIf 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-config6. Verify
.\.venv\Scripts\exchange-ews-mcp.exe version
.\.venv\Scripts\exchange-ews-mcp.exe tool-listExpected 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 |
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 draftFor 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.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for MailTempo's public free temporary email inboxes.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
An MCP server that provides email capabilities, hosted on Alpic platform
An MCP server that provides email capabilities, hosted on Alpic platform
Related MCP Servers
- AlicenseCqualityBmaintenanceSecure MCP server for on-prem Microsoft Exchange (EWS) with tools for email, calendar, contacts, folders, attachments, and free/busy availability.315MIT
- AlicenseAqualityDmaintenanceMCP server for any Microsoft Exchange / OWA deployment. Gives LLM agents access to email, calendar, directory search, folders, availability, and meeting analytics via 30 tools.308MIT
- AlicenseAqualityCmaintenanceA 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.1086 npmMIT
- AlicenseAqualityAmaintenanceLocal-first Microsoft Outlook MCP server: a single Go binary that manages calendar events and mail through the Microsoft Graph API over stdio, with tokens stored in the OS keychain and no Entra ID app registration required. Exposes four aggregate tools (calendar, mail, account, system) dispatched by an operation verb, with multi-account support and read-only and mail-gating modes.441MIT