使用说明
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