EWS MCP服务器
一个完整的模型上下文协议(MCP)服务器,与Microsoft Exchange Web服务(EWS)连接,使AI助手能够与Exchange交互以进行电子邮件、日历、联系人和任务操作。
📦 Docker镜像:预构建图像将在ghcr.io/azizmazrou/ews-mcp:latest一旦合并到主分支。目前,在本地构建docker build -t ews-mcp-server .-请参阅 GHCR_STATUS.md 了解详情。
特性
- ✅ 电子邮件操作:发送、阅读、搜索、删除、移动、, 复制 电子邮件与 固定的 附件支持
- 分发列表支持:按姓名向通讯组发送电子邮件
- ✅ 附件内容提取:从PDF、DOCX、XLSX、TXT文件读取文本(阿拉伯语/UTF-8支持)
- ✅ 日历管理:创建、更新、删除约会、回复会议, 人工智能会议时间查找器
- ✅ 联系人管理:Exchange联系人的完整CRUD操作
- ✅ 联系情报:跨GAL和电子邮件历史、通信分析、网络分析的高级联系人搜索
- ✅ 任务管理:创建和管理Exchange任务
- ✅ 文件夹管理:创建、删除、重命名、移动邮箱文件夹
- ✅ 高级搜索:对话线程,跨电子邮件内容的全文搜索
- ✅ 不在办公室:配置带有日程安排的自动回复
- ✅ 多重身份验证:支持OAuth2、基本授权和NTLM
- ✅ 时区支持:正确处理时区(通过亚洲/利雅得、UTC等测试)
- ✅ HTTP/SSE传输:支持web客户端的stdio和HTTP/SSE(兼容n8n)
- ✅ Docker就绪:采用最佳实践的生产就绪集装箱化
- ✅ 速率限制:内置速率限制,自动重试(指数回退)
- ✅ 错误处理:使用@handle_ews_errors装饰器进行全面的错误处理
- ✅ 审计日志:跟踪所有操作的合规性(仅记录到stderr)
v2.1的新增功能🎯
2.1版本新增 联系情报 能力和 多账户支持:
多账户支持🔐
- 承载令牌身份验证:使用HTTP授权标头在多个Exchange帐户之间动态切换
- 帐户配置:在中配置多个帐户
accounts.json具有唯一的API密钥 - 连接缓存:为频繁访问的帐户提供高效的连接重用
- 向后兼容:如果没有提供Bearer令牌,则回退到环境变量
看 BEARER_AUTH_GUIDE.md 有关详细的设置说明。
联系人智能工具(3个新工具)
统一联系人搜索
- 查找人员 -在全球地址列表(GAL)、电子邮件历史记录和域中搜索
- 按通信频率和近距进行智能排名 - 多源重复数据删除(GAL+电子邮件历史记录) - 阿拉伯语支持(UTF-8) - 全域搜索(例如,来自@example.com的所有联系人)
通信分析
- get_通信_历史 -与任何联系人的详细关系分析
- 电子邮件数量统计(发送/接收/总计) - 沟通时间表(每月汇总) - 从电子邮件主题中提取主题 - 带有日期的最近电子邮件预览
网络智能
- 分析网络 -专业网络分析
- 按电子邮件数量排列的顶级联系人 - 基于域的组织分组 - 休眠关系检测(与您失去联系的联系人) - VIP身份(高流量+近期活动) - 综合概述和汇总统计数据
功能亮点
在多个来源中查找任何人
# Search by name across all sources
find_person(
query="John Doe",
search_scope="all", # Search GAL + email history
include_stats=True
)
# Find all contacts from a specific domain
find_person(
query="@example.com",
search_scope="domain"
)分析沟通模式
# Get detailed history with any contact
get_communication_history(
email="colleague@example.com",
days_back=365,
include_topics=True
)
# Returns: stats, timeline, top topics, recent emails了解您的专业网络
# Identify VIP contacts (high volume + recent)
analyze_network(
analysis_type="vip",
days_back=90,
vip_email_threshold=10
)
# Find dormant relationships to reconnect
analyze_network(
analysis_type="dormant",
dormant_threshold_days=60
)
# Analyze by organization/domain
analyze_network(
analysis_type="by_domain",
top_n=20
)v2.0中的新增功能🚀
2.0版本扩展了EWS MCP服务器 28个MVP工具到40个企业级工具,添加了强大的新功能:
新工具(新增12个)
文件夹管理(4个工具)
- 创建文件夹 -使用自定义文件夹类创建新的邮箱文件夹
- 删除文件夹 -删除文件夹(软文件夹或永久文件夹)
- 重命名文件夹 -重命名现有文件夹
- move_folder -将文件夹移动到新的父位置
增强型附件(2个工具)
- 添加附件 -通过文件路径或具有内联支持的base64内容添加附件
- 删除附件 -按ID或名称删除附件
高级搜索(2个工具)
- 搜索_对话 -查找对话线程中的所有电子邮件
- full_text_search -带有区分大小写和精确短语选项的全文搜索
外出(2个工具)
- 设置的集合 -配置自动回复(启用/计划/禁用)
- get_of_setting -检索当前处于活动状态的OOF设置
日历增强(1个工具)
- find_meeting_times -基于人工智能的会议时间查找器,通过智能评分分析与会者的可用性
电子邮件增强(1个工具)
- 复制邮件 -将电子邮件复制到文件夹,同时保留原件
功能亮点
智能会议日程安排
# Find optimal meeting times across multiple attendees
find_meeting_times(
attendees=["alice@company.com", "bob@company.com", "carol@company.com"],
duration_minutes=60,
preferences={
"prefer_morning": True,
"working_hours_start": 9,
"working_hours_end": 17,
"avoid_lunch": True
}
)
# Returns scored suggestions with availability analysis对话线程
# Track entire email conversations
search_by_conversation(
message_id="email-123" # or conversation_id directly
)
# Returns all emails in the thread高级文件夹组织
# Organize your mailbox programmatically
create_folder(folder_name="Projects/2025/Q1", parent_folder="inbox")
move_folder(folder_id="folder-123", destination_parent_folder="archive")
rename_folder(folder_id="folder-123", new_name="Completed Projects")办公室外自动化
# Schedule OOF for vacation
set_oof_settings(
state="Scheduled",
internal_reply="I'm on vacation",
external_reply="I'm currently out of office",
start_time="2025-12-20T00:00:00",
end_time="2025-12-31T23:59:59",
external_audience="Known"
)快速开始
使用预构建的Docker镜像(最简单)
选择您的身份验证方法:
选项1:基本身份验证(最快设置-1分钟)
最适合:测试、本地交换、快速演示
# Pull the latest image
docker pull ghcr.io/azizmazrou/ews-mcp:latest
# 3. Create .env file with Basic Auth
cat > .env .env .env
EWS_CLIENT_SECRET=
EWS_TENANT_ID=使用Claude Desktop
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
使用GHCR的预构建图像(推荐)
{
"mcpServers": {
"ews": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--env-file",
"/absolute/path/to/.env",
"ghcr.io/azizmazrou/ews-mcp:latest"
]
}
}
}使用本地构建的图像
{
"mcpServers": {
"ews": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--env-file",
"/path/to/ews-mcp/.env",
"ews-mcp-server"
]
}
}
}使用本地Python(开发)
{
"mcpServers": {
"ews": {
"command": "python",
"args": ["-m", "src.main"],
"cwd": "/path/to/ews-mcp",
"env": {
"EWS_EMAIL": "user@company.com",
"EWS_AUTH_TYPE": "oauth2",
"EWS_CLIENT_ID": "your-client-id",
"EWS_CLIENT_SECRET": "your-secret",
"EWS_TENANT_ID": "your-tenant"
}
}
}
}Docker镜像
预构建的Docker镜像会自动发布到GitHub容器注册表:
# Pull latest version
docker pull ghcr.io/azizmazrou/ews-mcp:latest
# Pull specific version
docker pull ghcr.io/azizmazrou/ews-mcp:1.0.0
# Pull development version
docker pull ghcr.io/azizmazrou/ews-mcp:main可用标签:
latest-最新稳定版本v*.*.*-特定版本(例如。,v1.0.0)main-主分支机构的最新承诺sha--具体承诺
多平台支持:
linux/amd64-x86_64系统linux/arm64-ARM64系统(苹果硅、ARM服务器)
可用工具
总计:9个类别的44个基础工具 (启用AI工具时最多48个)
联系人智能工具(3个工具)⭐ v2.1中的新功能
- 查找人员:跨GAL、电子邮件历史记录和域搜索联系人
- 具有智能重复数据删除功能的多源搜索 - 按通信频率和最近度排名 - 全域搜索(查找所有@example.com联系人) - 阿拉伯语支持
- get_通信_历史:分析与特定联系人的沟通
- 电子邮件统计(发送、接收、总计) - 月度时间线可视化 - 从主题中提取主题 - 最近的电子邮件预览
- 分析网络:专业网络分析
- 按数量排列的顶级联系人 - 域/组织分组 - 休眠关系检测 - VIP联系人识别 - 综合概览模式
电子邮件工具(9个工具)
- send_邮件:发送带有附件和CC/BCC的电子邮件(✅ 固定的: 附件现在实际发送!)
- ⭐ 新:通讯组列表支持-按名称发送到组(例如,“Team All”、“accounts”) - 支持电子邮件地址、显示名称和通讯组列表 - 通讯组列表成员的自动扩展
- 阅读电子邮件:从指定文件夹读取电子邮件
- 搜索邮件:使用高级筛选器进行搜索
- get_email_details:获取完整的电子邮件详细信息
- 删除电子邮件:删除或永久删除电子邮件
- move_mail:在文件夹之间移动电子邮件
- update_邮件: ⭐ 更新电子邮件属性(读取状态、标志、类别、重要性)
- 列表_附件: ⭐ 列出电子邮件的所有附件
- 下载_附件: ⭐ 下载电子邮件附件(base64或保存到文件)
附件工具(5个工具)🆕
- 列表_附件:列出电子邮件中的所有附件
- 下载_附件:下载base64格式的附件或保存到文件
- 添加附件:在电子邮件草稿中添加附件
- 删除附件:从电子邮件中删除附件
- 阅读附件: ⭐ 新 从PDF、DOCX、XLSX、TXT文件中提取文本
- 支持阿拉伯语(UTF-8)文本 - 从文档中提取表格 - 大型PDF的页面限制 - 返回结构化文本内容
日历工具(6个工具)
- 创建_应用程序:安排与与会者的会议
- get_calendar:检索日历事件
- 更新_预约:修改现有约会
- 删除_请求:取消约会/会议
- 回复会议:接受/拒绝会议邀请
- check_可用性: ⭐ 获取用户在特定时间范围内的忙/闲信息
接触工具(6个工具)
- create_contact:添加新联系人
- search_contacts:按姓名/电子邮件查找联系人
- get_contacts:列出所有联系人
- update_contact:修改联系信息
- 删除联系人:删除联系人
- resolve_names: ⭐ 将部分姓名/电子邮件解析为完整的联系信息
任务工具(5个工具)
- 创建任务:创建新任务
- get_tasks:列出任务(按状态筛选)
- update_task:修改任务详细信息
- 完成任务:将任务标记为已完成
- 删除任务:删除任务
搜索工具(1个工具)
- 高级搜索: ⭐ 使用过滤器跨文件夹进行复杂的多条件搜索
文件夹工具(1个工具)
- list_folders: ⭐ 获取包含详细信息和项目计数的邮箱文件夹层次结构
测试
# Run all tests
pytest
# Run with coverage
pytest --cov=src --cov-report=html
# Run specific test file
pytest tests/test_email_tools.py
# Run only unit tests (skip integration)
pytest -m "not integration"发展
# Install development dependencies
pip install -r requirements-dev.txt
# Run linter
ruff check src/
# Format code
black src/
# Type checking
mypy src/
# Security check
bandit -r src/建筑
EWS MCP Server
├── MCP Protocol Layer (stdio/SSE)
├── Tool Registry (Email, Calendar, Contacts, Tasks)
├── EWS Client (exchangelib wrapper)
├── Authentication (OAuth2/Basic/NTLM)
├── Middleware (Rate Limiting, Error Handling, Audit)
└── Exchange Web Services API故障排除
看 docs/TROUBLESHOOTING.md 常见问题和解决方案。
文档
许可证
MIT许可证-有关详细信息,请参阅许可证文件
贡献
欢迎投稿!请在提交PR之前阅读投稿指南。
支持
对于问题和功能请求,请使用GitHub问题跟踪器。
更新日志
看 更改日志.md 版本历史。
