关于 Outlook Classic
Outlook Classic 是面向 Windows AI 助手的 MCP 服务,通过现有 COM 会话操作经典版 Outlook。它在本机访问邮件、日历和联系人,默认禁用发送,并将更改记录到审计日志。
主要功能
- 01搜索、阅读、起草和整理邮件
- 02管理日历约会与邀请
- 03搜索联系人和公司目录
- 04在允许的目录保存和附加文件
- 05发送功能需明确启用
- 06本地 JSON 行审计日志
适用场景
- 01查找并总结近期邮件
- 02起草回复并整理文件夹
- 03查看空闲时间并管理约会
- 04查询同事并准备邀请
MCP 相关
通过 stdio 和 COM 将 MCP 客户端连接到经典版 Outlook,提供邮件、日历和联系人工具。除非明确启用,否则不能发送邮件。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Outlook Classic MCP
适用于 Microsoft Outlook 的 MCP 服务——Windows 经典桌面应用。
让 Claude、Codex 和其他 AI 助手读取、搜索和整理你的邮箱与日历,
查找同事并为你撰写草稿——通过你在电脑上已登录的 Outlook。
Claude / Codex ──MCP──▶ outlook-classic-mcp.exe ──COM──▶ Outlook (classic) ──▶ your mailbox
优势
- 无需 Azure 应用、Graph API 或令牌。 它通过 COM 与正在运行的 Outlook 通信,并 使用你已登录的会话。无需注册,也无需管理员同意。
- 可在 Microsoft Graph 受阻时使用——例如受到条件访问或令牌保护策略限制时。只要 Outlook 能在你的电脑上运行,它就能正常工作。
- 仅在本地运行。 除了你使用的 AI 客户端,你的邮件绝不会离开你的电脑。
- 仅在你允许时发送。 默认情况下,所有外发内容都会变成草稿,由你审核并自行发送——也包括会议邀请和对邀请的回复。
发送功能需明确选择启用(
--allow-send),即便启用,也只会发送草稿。 - 审计日志。 助手所做的每项更改——草稿、发送、移动、删除、日历操作—— 都会在本地记录为一行 JSON,不包含邮件正文。
- 文件受到严格限制。 附件只能从你的用户配置文件和
%TEMP%添加,也只能保存到这些位置,这样精心构造的邮件就无法诱使 助手附加任意文件。 - 小巧的单个 EXE。 无需 Python、PowerShell、运行时或后台服务。
要求
- 安装并配置了邮箱的 Windows 电脑,需使用经典版 Outlook(Outlook for Microsoft 365 / 2016 / 2019 / 2021 桌面版, 即 Win32 应用)。 新版 Outlook(“Outlook for Windows”,olk.exe)没有 COM 接口—— 请参阅下方的正在使用新版 Outlook?。
- 一个 MCP 客户端:Claude Desktop、Claude Code、Codex、Cursor、VS Code 等。
- 请以普通用户身份运行,不要提权(管理员进程无法连接到你的 Outlook)。
安装
在 PowerShell 中运行:
irm https://raw.githubusercontent.com/jli-software/outlook-classic-mcp/main/install.ps1 | iex
此命令会将最新版本下载到 %LOCALAPPDATA%\Programs\outlook-classic-mcp,
验证其 SHA-256,并将其注册为 Claude Desktop、Claude Code 和 Codex 中的 outlook 服务。重启客户端即可完成。
仅适用于 Claude Desktop: 从
最新版本
下载 outlook-classic-mcp.mcpb 并打开,Claude Desktop 会将其安装为扩展。
手动安装
- 从
最新版本
下载
outlook-classic-mcp-windows-x64.exe,并将其保存为outlook-classic-mcp.exe,位置不限。 - 注册:
保留现有配置;在写入新配置前会先创建.\outlook-classic-mcp.exe install # Claude Desktop, Claude Code, Codex .\outlook-classic-mcp.exe install --allow-send # same, with sending enabled .\outlook-classic-mcp.exe install --print # dry run: only show the config files .\outlook-classic-mcp.exe install codex # only one target (desktop | code | codex).outlook-classic-mcp.bak备份。
Windows SmartScreen 可能会警告该 EXE 未签名——选择“更多信息 → 仍要运行”。
其他 MCP 客户端(Cursor、VS Code、Windsurf 等)
在客户端的 MCP 配置中添加一个 stdio 服务:
{
"mcpServers": {
"outlook": {
"command": "C:\\Users\\you\\AppData\\Local\\Programs\\outlook-classic-mcp\\outlook-classic-mcp.exe",
"args": ["serve"]
}
}
}
“总结一下我今天的未读邮件。” “在所有文件夹中查找 Contoso 的发票,并保存 PDF。” “起草一封回复 Anna 最近邮件的草稿:周四可以,上午 10 点。” “将本周所有新闻简报移到 Archive 并标记为已读。” “Anna Smith 的电子邮件地址和部门是什么?为她起草一封周五的邀请。” “我这周的日历安排是什么?周二 Anna 和 Beat 什么时候都有空?” “把我下午 2 点的牙医预约改到周四,并设置提前 1 小时提醒。”
工具
| 工具 | 功能 |
|---|---|
mail_list | 列出文件夹(Inbox、Sent Items、Drafts 等或任意文件夹)中的最新邮件 |
mail_search | 搜索主题、发件人和正文——可搜索单个文件夹,也可使用 folder: "all" 搜索所有文件夹 |
mail_read | 获取完整邮件,包括正文和附件名称(可一次读取多封) |
mail_create_draft | 新建邮件草稿,支持填写 To / CC / BCC |
mail_reply | 创建回复草稿,包含邮件会话和引用内容,可选择添加附件 |
mail_forward | 创建转发草稿,在原邮件上方添加你的文字(包含附件) |
mail_send_draft | 发送草稿——仅在使用 --allow-send 时可用,请参阅发送 |
mail_update_draft | 修改草稿;回复草稿中仅替换你的文字,引用内容和签名保持不变 |
mail_attachments | 列出附件 |
mail_save_attachment | 将附件保存到磁盘,以便助手读取 |
mail_folders | 获取包含 ID 和数量的完整文件夹树 |
mail_create_folder | 创建文件夹 |
mail_move | 将邮件移到文件夹 |
mail_mark_read | 标记为已读 / 未读 |
mail_categorize | 设置 Outlook 类别(颜色标签) |
mail_delete | 移到 Deleted Items(不会永久删除) |
mail_sync | 触发发送/接收,以刷新本地缓存 |
contacts_search | 在你的联系人和公司目录(全局地址列表)中查找人员 |
contacts_resolve | 将姓名转换为电子邮件地址;存在歧义时会列出候选项,而不是猜测 |
contacts_get | 获取联系人的所有详细信息,或目录条目的所有详细信息(电话、部门、经理等) |
contacts_list | 列出你自己的联系人 |
outlook_whoami | 查看已登录邮箱、Outlook 版本、连接状态及此服务的设置 |
calendar_list | 查看指定时间范围内的约会(默认:未来 7 天),包括重复约会 |
calendar_get | 获取详细信息:说明、参会者及其响应、Teams 链接、提醒 |
calendar_create | 创建约会;添加参会者后会成为会议,但只保存,不会发送 |
calendar_update | 修改时间、主题、地点等——可修改单次约会或整个系列 |
calendar_delete | 删除约会或单次约会;拒绝删除你组织且已发送的会议 |
calendar_respond | 接受 / 暂定 / 拒绝邀请——响应会保存为草稿 |
calendar_free_busy | 查看同事在指定日期的忙碌时间(以 30 分钟为间隔) |
不使用 --allow-send 时,完全没有发送工具。在日历中,这意味着:新会议会保持未发送状态,直到你在 Outlook 中点击“发送”;对邀请的响应会进入 Drafts;修改或删除会议不会通知任何人——如果你组织的会议已发送邀请,则无法删除,以免参会者留下一个并不存在的会议(请改为在 Outlook 中取消)。
时间输入和输出均使用当地时间的 ISO 8601 格式(2026-10-29T14:00);仅输入日期(2026-10-29)时会创建全天事件。带偏移量的时间(+01:00、Z)会转换为当地时间。
电子邮件地址始终以 SMTP 地址形式返回([email protected]),Exchange 发件人和目录条目也不例外——绝不会返回 /O=…/CN=…。
发送
默认情况下,发送功能处于关闭状态。要启用该功能,请使用
install --allow-send 注册服务(或在客户端的 args 中 "serve" 后添加 "--allow-send"),
然后重启客户端。不带该标志运行 install 会再次关闭此功能。
启用发送后,助手仍会先撰写草稿;随后由 mail_send_draft 发送,并且只有在你确认了
该确切草稿后,工具才会指示助手发送。它只接受 Drafts 文件夹中的电子邮件或会议回复,
其他内容一律拒绝;如果无法解析收件人,则不会发送任何内容。会议永远不会由服务发送——
邀请、更新和取消仍由你在 Outlook 中处理。
已发送邮件会先进入 Outbox;经典版 Outlook 会在下一次同步时发送邮件(需保持 Outlook 运行,通常只需几秒)。
Outlook 安全提示: Outlook 可能会显示警告:“某个程序正试图代表你发送电子邮件” (Object Model Guard)。在安装了最新版本且受认可的防病毒软件的电脑上,通常不会出现此提示; 如果出现,发送操作会等待你点击确认,并在 90 秒后超时。管理员可以通过 Outlook 策略 Programmatic Access Security 控制此功能。
审计日志
每个会更改内容的操作都会以一行 JSON 追加到
%LOCALAPPDATA%\outlook-classic-mcp\audit.log:
{"time":"2026-10-29T10:32:33+01:00","tool":"mail_send_draft","id":"00000000…","ok":true,"subject":"Offer","to":["[email protected]"]}
日志会记录时间、工具、ID、收件人、主题和结果,但绝不会记录邮件正文。
文件达到 5 MB 时会轮换(audit.log.1)。在服务的环境变量中设置
OUTLOOK_MCP_AUDIT_LOG 可指定其他路径,或将其设为 off。outlook_whoami 会显示日志写入位置。
附件文件夹
mail_reply(attachments)和 mail_save_attachment(dir)只接受位于
你的用户配置文件(%USERPROFILE%)或 %TEMP% 下的路径;其他路径一律拒绝。要取消此限制,
请在服务的环境变量中设置 OUTLOOK_MCP_ALLOW_ANY_PATH=1,例如:
"outlook": { "command": "…\\outlook-classic-mcp.exe", "args": ["serve"],
"env": { "OUTLOOK_MCP_ALLOW_ANY_PATH": "1" } }
正在使用新版 Outlook?
你可以继续使用新版 Outlook。只需安装经典版 Outlook,并偶尔运行它,因为此服务会读取其本地缓存:
- 最佳方式: 随 Windows 启动经典版 Outlook,并将其最小化。你不会注意到它,而缓存也会保持最新。关闭其桌面通知,以免每封邮件都收到两次提醒
(File → Options → Mail → Display a Desktop Alert)。
$s = New-Object -ComObject WScript.Shell $sc = $s.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\Outlook (classic).lnk") $sc.TargetPath = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\OUTLOOK.EXE').'(default)' $sc.WindowStyle = 7 # minimized $sc.Save() - 按需操作: 先让助手运行
mail_sync。
如果经典版 Outlook 已关闭,服务会在后台启动它,并在 5 分钟没有调用后将其关闭。
故障排查
| 问题 | 解决方法 |
|---|---|
0x80080005 / “server execution failed” | MCP 客户端以提升的权限运行,或 Outlook 正在启动。请以普通用户身份运行客户端,并保持 Outlook 打开。 |
| 新版 Outlook 中看不到草稿 | 经典版 Outlook 尚未同步——运行 mail_sync 或保持经典版 Outlook 运行。 |
folder not found | 使用 mail_folders,并传入文件夹 ID 或完整路径。未知文件夹会按预期报错,绝不会静默回退到 Inbox。 |
首次 contacts_search 需要几秒钟 | Outlook 无法筛选公司目录,因此首次搜索会读取所有姓名(每条约 2 ms),并将其缓存 30 分钟。之后的搜索会立即完成。 |
| 搜索所有文件夹需要几秒钟 | 该操作会扫描每封邮件的文本(几千封邮件约需 5–10 秒)。尽可能只搜索一个文件夹。 |
| Outlook 中的对话框阻塞操作 | 调用会在 90 秒后超时;请关闭对话框并重试。 |
找不到 mail_send_draft | 发送功能已关闭——使用 install --allow-send 注册,并重启客户端。 |
| 已发送邮件仍留在 Outbox | 经典版 Outlook 处于脱机状态或未运行;请打开它或运行 mail_sync。 |
从源代码构建
git clone https://github.com/jli-software/outlook-classic-mcp
cd outlook-classic-mcp
go build -o outlook-classic-mcp.exe .
go test .
纯 Go(不使用 CGO),使用 go-ole 处理 COM, 并使用 mcp-go 处理 MCP。
免责声明
这是一个独立的开源项目,与 Microsoft 无关,也未获其认可或赞助。“Microsoft”和“Outlook” 是 Microsoft 集团公司的商标。
License
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。