Exchange邮箱控制协议服务器

EWS MCP Server是一个模型上下文协议服务器,允许LLM助手通过原生EWS协议实现对Microsoft Exchange邮箱(邮件、日历、联系人、任务等)的类型化控制,无需Graph代理或Microsoft 365连接器。

  • by azizmazrou
  • Python
  • 本地部署
  • 36 星标
  • 更新于
在 GitHub 查看 azizmazrou/ews-mcp

使用说明

EWS MCP服务器

提供LLM助手的模型上下文协议服务器 真实的, Microsoft Exchange邮箱的键入控件 --邮件、日历, 人员、任务、草稿和(明确门控)发送语音EWS 本地。没有Graph代理,没有Microsoft 365连接器。适用于 Claude Code、Claude Desktop、Open WebUI和任何其他MCP客户端。

此存储库中有两行

行 位置 状态 容器图像
4.5——电流 v5/ 积极发展。 建议用于所有新设置。 ghcr.io/azizmazrou/ews-mcp:v4.5*
4.0--遗留 src/ 仅用于维护。 ghcr.io/azizmazrou/ews-mcp:latest

4.5行是绿地重写:合并 28工具 表面, 短别名id模型可以实际复制,标记精简响应(~60个标记 结果卡而不是原始Outlook HTML),缓存优先的本地镜像 阿拉伯语正确的全文搜索,以及在一个地方实施的安全模型。 传统路线保持不变 :latest 在4.5之前,对现有部署稳定 被提升。 如果你是新来的,请使用4.5并阅读 v5/README.md.

快速启动--本地比stdio高4.5(推荐)

不需要Docker。MCP客户端将服务器作为子进程启动; 它继承了您计算机的网络(包括VPN),没有任何东西可以监听 在任何港口。

git clone https://github.com/azizmazrou/ews-mcp && cd ews-mcp
python -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\Activate.ps1
pip install ./v5

然后用Claude Code注册:

claude mcp add exchange \
  -e EWS_SERVER_URL="https://mail.example.com/EWS/Exchange.asmx" \
  -e EWS_EMAIL="user@example.com" \
  -e EWS_USERNAME="user" -e EWS_PASSWORD="…" \
  -- /absolute/path/to/.venv/bin/ewsmcp

Claude Desktop和其他客户端:在配置块中使用相同的命令+env-- 看 4.5快速启动. 默认值是安全的: draft 层,发送已禁用。

快速入门——Docker/HTTP(服务器部署)

当服务器在可以直接访问Exchange的主机上运行时:

# 4.5 (pin an exact tag; the 4.5 line never publishes :latest)
docker run -d --name ews-mcp-v5 -p 8000:8000 --env-file .env \
  -v ewsmcp-data:/data ghcr.io/azizmazrou/ews-mcp:v4.5.0a1

# legacy 4.0
docker run -d --name ews-mcp --env-file .env --network host \
  ghcr.io/azizmazrou/ews-mcp:latest

4.5提供流式HTTP /mcp,简单休息 /api/tools/<name>, 健康 /livez /readyz /health.遗留运输单据: docs/legacy/CONNECTION_GUIDE.md.

助理能做什么(4.5)

  • 阅读速度快 — get_mailbox_overview (一个电话中的早间简报), search_messages (FTS在当地镜子上,阿拉伯语正确,语义 模式可选), get_message, get_thread, get_attachment.
  • 日历和人员 — list_events, get_event, check_availability, find_people, get_contact.
  • 任务和跟进 — list_tasks, update_task, waiting_on (发送的帖子无人应答)。
  • 安全写作 — create_draft / update_draft (从不发送), 标签,移动; send_draft 仅存在于 full 层,后面一个 取消开关、收件人分配、每小时上限和两阶段 内容绑定 如果草稿发生变化,确认书就会失效。
  • 操作 — get_server_status (连接、层、缓存水印-- 即使Exchange不可访问,也能正常工作)。

完整的、生成的参考——每个工具及其参数, 信封、错误代码和v3→4.5 重命名映射--is v5/docs/API.md.

安全模型(4.5)

机制 它做什么
能力等级 read ⊂ draft ⊂ full --上层工具甚至没有注册
关闭开关 SEND_ENABLED=false (默认)拒绝每次发送类调用
收件人保护 允许/拒绝参数上的globs 和 已解决收件人草稿
两阶段确认 预览+HMAC令牌绑定到草稿的实际内容;一次性使用
费率上限 EWS_MAX_SENDS_PER_HOUR
审计链 哈希链日志、验证器脚本在重启后持续存在

文档

docs/README.md 文档地图 --从这里开始
v5/README.md 4.5安装和使用:stdio、HTTP、Docker、配置
v5/docs/API.md 4.5 API参考(从注册表生成)
v5/DESIGN.md 4.5架构和基本原理
docs/legacy/ 传统4.0文档(:latest 用户)
examples/skills/exchange-assistant/ 刀具表面辅助技能示例

发展

pip install -e ./v5[dev]
python -m pytest v5/tests -q            # full 4.5 suite — no Exchange needed
python -m ruff check v5
python v5/scripts/boot_smoke.py full    # end-to-end boot, dead endpoint
python v5/scripts/dump_tool_table.py --check   # docs ↔ registry drift gate

CI: v5-tests (屏蔽流氓+3.11/3.12测试+开机冒烟+Docker 每次触碰都会产生烟雾 v5/; v5-publish 构建 ghcr.io/…:v4.5* 来自标签 v4.5.*,完成了全部的测试工作。这 旧图像发布自 main 推和 v3.*/v4.0.* 只有标签。

存储库布局

v5/            the 4.5 server (package `ews-mcp`, entry point `ewsmcp`)
src/           the legacy 4.0 server (ships as :latest)
docs/          documentation map + legacy 4.0 docs
examples/      example assistant skill
.env.example   legacy 4.0 configuration template (4.5: v5/.env.example)

贡献和许可

看 贡献.md.MIT——参见 许可证.