Outlook桌面控制服务

一个本地MCP服务器,通过COM自动化提供对Outlook桌面的全面控制,包括日历、电子邮件、联系人和任务管理,无需Azure AD或云权限。

  • by PeterTriebe
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 PeterTriebe/outlook-mcp

使用说明

Outlook桌面MCP服务器

一个本地MCP服务器,可以完全控制 Outlook桌面 通过COM自动化——日历、电子邮件、联系人和任务。
无需Azure AD,无需管理员同意,也不需要云权限。 仅限Windows。


快速设置(适用于Copilot代理)

如果您是为用户设置此设置的Copilot代理,请严格遵循以下步骤。

先决条件

要求 详细信息
OS Windows(COM自动化需要Win32)
Outlook 经典Outlook桌面必须 已安装并正在运行 (不是“新展望”)
Python 3.10或更高版本,可从终端访问
VS代码 已安装GitHub Copilot扩展

步骤1–安装依赖项

在项目根目录中运行:

cd <project-root>            # e.g. C:\GIT\outlook-mcp
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt

唯一的依赖关系是 mcp>=1.0.0 和 pywin32>=306.

步骤2-在VS Code中注册MCP服务器

将以下条目添加到用户级MCP配置文件中。

文件位置: %APPDATA%\Code\User\mcp.json
VS代码命令: MCP: Open User Configuration (Ctrl+Shift+P)

将此添加到 "servers" key(调整路径以匹配实际项目位置):

{
  "servers": {
    "outlook": {
      "type": "stdio",
      "command": "<project-root>\\.venv\\Scripts\\python.exe",
      "args": [
        "<project-root>\\server.py"
      ]
    }
  }
}

替换 <project-root> 随着 绝对路径 使用双反斜杠指向此存储库。
例子: "C:\\GIT\\outlook-mcp\\.venv\\Scripts\\python.exe"

步骤3–验证服务器是否正在运行

保存后 mcp.json,VS Code将自动检测并启动服务器。

  • 打开 Ctrl+Shift+P → MCP: List Servers
  • 这 outlook 服务器应显示绿色状态指示器
  • 如果它没有启动,请选择它并单击 开始

第四步:使用它

打开Copilot聊天(Ctrl+Shift+I)并尝试以下提示:

  • “我今天有什么会议?”
  • “在我的电子邮件中搜索季度报告”
  • “发送电子邮件至jane.doe@example.com主题为“你好”
  • “明天下午2点创建一个会议:团队起立”
  • “显示我的未读电子邮件”
  • “标记有关预算审查的电子邮件以进行跟进”
  • “列出我的未完成任务”

Copilot会根据您的要求自动选择正确的MCP工具。

故障排除

问题 解决方案
服务器无法启动 请验证 python.exe 路径在 mcp.json 指向 .venv Python可执行文件
导入错误 激活venv(.venv\Scripts\activate)然后跑 pip install -r requirements.txt
COM/Outlook错误 请确保 Outlook桌面 打开(不仅仅是最小化到系统托盘)
工具不可见 Ctrl+Shift+P → MCP: List Servers → 检查那个 outlook 已列出且为绿色

功能–35工具

日历(9工具)

工具 说明
get_next_meeting 显示您的下一次会议
list_events_today 今天剩下的所有活动
list_events 任何日期范围内的事件
get_event_details 活动的全部细节(与会者、正文)
search_events 按主题、组织者或与会者搜索
create_event 创建新的日历事件
respond_to_meeting 接受/暂定/拒绝会议
update_event 更新主题、时间、地点等。
delete_event 删除事件

电子邮件(21个工具)

工具 说明
list_unread_emails 收件箱中未读的电子邮件
list_recent_emails 最近的电子邮件
search_emails 按主题快速搜索(COM过滤器)
search_emails_full 按日期范围在主题、正文和发件人之间进行深度搜索
read_email 阅读电子邮件的全文
send_email 发送电子邮件
reply_to_email 回复或全部回复电子邮件
forward_email 转发电子邮件
delete_email 删除电子邮件
move_email 将电子邮件移动到其他文件夹
mark_email 标记为已读/未读
flag_email 标记/取消标记以供后续跟进
list_email_folders 列出所有包含项目和未读计数的文件夹
list_sent_emails 最近发送的电子邮件
list_drafts 电子邮件草稿
create_draft 创建草稿(已保存,未发送)
list_email_attachments 列出电子邮件的附件
save_attachment 将附件保存到本地磁盘

联系人(3个工具)

工具 说明
search_contacts 按姓名、电子邮件或公司搜索
get_contact_details 完整的联系方式(电话、地址等)
create_contact 创建新联系人

任务(5个工具)

工具 说明
list_tasks 列出任务(可选包括已完成的任务)
create_task 创建一个新任务,包括截止日期、优先级等。
complete_task 将任务标记为已完成
update_task 更新主题、截止日期、状态、进度
delete_task 删除任务

项目结构

outlook-mcp/
├── server.py                  # Entry point – FastMCP setup & tool registration
├── requirements.txt           # mcp + pywin32
├── outlook_client/            # COM automation client (mixin-based)
│   ├── __init__.py            # Exports OutlookClient
│   ├── _helpers.py            # Shared utilities, constants, serializers
│   ├── calendar.py            # CalendarMixin – 9 calendar methods
│   ├── email.py               # EmailMixin – 18 email methods
│   ├── contacts.py            # ContactsMixin – 3 contact methods
│   ├── tasks.py               # TasksMixin – 5 task methods
│   └── client.py              # OutlookClient (composes all mixins)
└── tools/                     # MCP tool definitions (thin wrappers)
    ├── __init__.py             # register_all_tools()
    ├── calendar.py             # 9 calendar tools
    ├── email.py                # 21 email tools
    ├── contacts.py             # 3 contact tools
    └── tasks.py                # 5 task tools