使用说明
outlookcli
通过Microsoft Graph为Microsoft Outlook提供生产就绪的CLI和MCP服务器。
github: https://github.com/selvin-paul-raj/outlook-cli
这个包裹能给你什么
- 全局CLI命令:
outlook-cli - 一次性OAuth令牌存储——在运行和更新过程中重复使用
- 人性化的命令,具有丰富的终端输出、主题预设和机器友好性
--json/--ai模式 - Claude和其他AI助手可以通过共享工具注册表使用21个MCP工具
- 通过Microsoft Graph API进行完整的电子邮件、日历、文件夹和规则管理
安装
全球(推荐)
npm i -g outlook-cli
outlook-cli --help
本地开发
npm install
npm run cli -- --help
要求: Node.js>=18.0.0
Azure应用程序安装程序(必需)
在使用此软件包之前,您需要注册Azure应用程序:
- 首选 portal.azure.com → Azure Active Directory→ 应用注册→ 新注册
- 将重定向URI设置为:
http://localhost:3333/auth/callback - 在“API权限”下,添加Microsoft Graph委派权限:
Mail.Read,Mail.ReadWrite,Mail.SendCalendars.Read,Calendars.ReadWriteUser.Readoffline_access
- 证书和秘密→ 新客户端机密--复制 价值 (不是秘密ID)
- 从“概述”页面复制您的应用程序(客户端)ID
快速开始
1.设置凭据
PowerShell(Windows):
$env:OUTLOOK_CLIENT_ID="your-client-id-here"
$env:OUTLOOK_CLIENT_SECRET="your-client-secret-value-here"
Bash/zsh(Linux/Mac):
export OUTLOOK_CLIENT_ID="your-client-id-here"
export OUTLOOK_CLIENT_SECRET="your-client-secret-value-here"
或者使用 .env 文件(复制自 .env.example):
cp .env.example .env
# Edit .env with your credentials
2.启动身份验证服务器(首次登录时需要)
npm run auth-server
# or
outlook-cli auth server --start
这将在端口3333上启动OAuth回调服务器。在身份验证期间保持其运行。
3.认证一次
outlook-cli auth login --open --start-server --wait
这将打开您的浏览器,进入Microsoft登录页面。批准后,令牌将保存到 ~/.outlook-mcp-tokens.json 并在未来的所有运行中重复使用。
4.验证和探索
outlook-cli auth status # confirm authenticated
outlook-cli tools list # see all available tools
outlook-cli email list # list recent inbox emails
outlook-cli calendar list # list upcoming events
环境变量
必需
| 变量 | 描述 |
|---|---|
OUTLOOK_CLIENT_ID |
Azure应用程序应用程序(客户端)ID |
OUTLOOK_CLIENT_SECRET |
Azure应用程序客户端机密 价值 (不是秘密ID) |
可选的
| 变量 | 默认值 | 描述 |
|---|---|---|
OUTLOOK_REDIRECT_URI |
http://localhost:3333/auth/callback |
OAuth重定向URL |
OUTLOOK_SCOPES |
offline_access Mail.Read Mail.ReadWrite Mail.Send User.Read Calendars.Read Calendars.ReadWrite |
Microsoft Graph权限范围 |
OUTLOOK_TOKEN_STORE_PATH |
~/.outlook-mcp-tokens.json |
令牌保存在磁盘上的位置 |
OUTLOOK_TOKEN_ENDPOINT |
Microsoft消费者OAuth端点 | 令牌交换URL |
OUTLOOK_AUTH_SERVER_URL |
http://localhost:3333 |
身份验证服务器基本URL |
USE_TEST_MODE |
false |
使用模拟数据而不是真正的API调用 |
遗留别名 (向后兼容): MS_CLIENT_ID, MS_CLIENT_SECRET, MS_REDIRECT_URI, MS_SCOPES, MS_TOKEN_STORE_PATH, MS_TOKEN_ENDPOINT, MS_AUTH_SERVER_URL
命令组
auth --身份验证
| 命令 | 描述 | 示例 |
|---|---|---|
auth status |
显示当前身份验证状态 | outlook-cli auth status |
auth login |
启动身份验证流程 | outlook-cli auth login --open --start-server --wait |
auth url |
在不打开浏览器的情况下显示OAuth URL | outlook-cli auth url |
auth server |
检查/启动本地OAuth回调服务器 | outlook-cli auth server --start |
auth logout |
清除存储的令牌 | outlook-cli auth logout |
旗帜 auth login:
--open--在浏览器中自动打开身份验证URL--start-server--自动启动OAuth回调服务器--wait--返回前等待身份验证完成--client-id--在运行时提供应用程序(客户端)ID(可选)--client-secret--在运行时提供客户端机密值(可选)--prompt-credentials--提示交互式终端中缺少凭据
示例:
# Full login with browser open and wait
outlook-cli auth login --open --start-server --wait
# Just get the URL to open manually
outlook-cli auth url
# Check if you're logged in
outlook-cli auth status
# Force re-authentication
outlook-cli auth login --open --force
# Runtime credentials (useful outside repo where .env is not loaded)
outlook-cli auth login --open --client-id <id> --client-secret <secret>
# Start or check auth callback server
outlook-cli auth server --start
outlook-cli auth server --status
email --电子邮件管理
| 命令 | 描述 | 示例 |
|---|---|---|
email list |
列出最近的电子邮件 | outlook-cli email list --count 20 |
email search |
按条件搜索电子邮件 | outlook-cli email search --from boss@company.com |
email read |
阅读完整的电子邮件内容 | outlook-cli email read --id AAMkAGVm... |
email attachments |
在一封电子邮件中列出附件 | outlook-cli email attachments --id AAMkAGVm... |
email attachment |
获取一个附件并可选择保存 | outlook-cli email attachment --id AAMkAGVm... --attachment-id AA... --save-path ./downloads/ |
email send |
发送新电子邮件 | outlook-cli email send --to user@example.com --subject "Hi" --body "Hello" |
email mark-read |
将电子邮件标记为已读或未读 | outlook-cli email mark-read --id AAMkAGVm... |
email list --列出最近的电子邮件
列出文件夹中的电子邮件,按最新邮件排序。
参数:
| 标志 | 类型 | 默认值 | 描述 |
|---|---|---|---|
--folder |
字符串 | inbox |
要列出的文件夹: inbox, sent, drafts, deleted, junk, archive,或任何自定义文件夹名称 |
--count |
编号 | 10 |
要返回的电子邮件数量(1-50) |
示例:
# Default: 10 most recent inbox emails
outlook-cli email list
# Last 25 inbox emails
outlook-cli email list --count 25
# 10 most recent sent emails
outlook-cli email list --folder sent
# 15 emails from a custom folder
outlook-cli email list --folder "Project Alpha" --count 15
# Output as JSON for scripting
outlook-cli email list --count 5 --json
输出显示: 电子邮件ID、发件人、主题、日期、已读/未读状态、附件指示器、正文预览。
email search --搜索电子邮件
使用文本和/或筛选条件搜索电子邮件。同时支持多个条件。
参数:
| 标志 | 类型 | 描述 |
|---|---|---|
--query |
string | 跨主题、正文和发件人的全文搜索 |
--folder |
string | 要搜索的文件夹(默认值: inbox) |
--from |
string | 按发件人电子邮件或姓名筛选 |
--to |
string | 按收件人电子邮件筛选 |
--subject |
string | 按主题文本筛选 |
--hasAttachments |
boolean | 仅显示带附件的电子邮件 |
--unreadOnly |
boolean | 仅显示未读电子邮件 |
--count |
number | 最大结果(1–50,默认值:10) |
示例:
# Search by keyword
outlook-cli email search --query "quarterly report"
# Find unread emails from a specific sender
outlook-cli email search --from manager@company.com --unreadOnly
# Find emails with attachments about invoices
outlook-cli email search --subject invoice --hasAttachments
# Search sent folder for emails to a client
outlook-cli email search --folder sent --to client@example.com
# Complex search
outlook-cli email search --from finance@company.com --subject "budget" --unreadOnly --count 20
# JSON output
outlook-cli email search --query "meeting notes" --json
email read --阅读完整电子邮件
通过ID读取一封电子邮件的完整内容。
参数:
| 标志 | 类型 | 必填 | 描述 |
|---|---|---|---|
--id |
string | yes | 来自的电子邮件ID email list 或 email search 输出 |
示例:
# Read a specific email
outlook-cli email read --id AAMkAGVmMDAwAT...
# Read and output as JSON
outlook-cli email read --id AAMkAGVmMDAwAT... --json
输出显示: 发件人、收件人、抄送、密件抄送、主题、日期、重要性、附件状态、全文(HTML自动转换为纯文本)。
提示: 从获取电子邮件ID email list 或 email search 输出第一。
email attachments --列出电子邮件附件
列出特定电子邮件的附件。
参数:
| 标志 | 类型 | 必填 | 默认 | 描述 |
|---|---|---|---|---|
--id |
string | yes | -- | 来自的消息ID email list 或 email search |
--count |
编号 | 否 | 25 |
列表的最大附件数(1-50) |
示例:
# List attachments for one message
outlook-cli email attachments --id AAMkAGVmMDAwAT...
# Limit to first 10 attachments
outlook-cli email attachments --id AAMkAGVmMDAwAT... --count 10
输出显示: 附件ID,类型(fileAttachment, itemAttachment,或 referenceAttachment)、内容类型、大小、内联标志和上次修改日期。
email attachment --获取/下载一个附件
获取一个附件的元数据,并可选择将其保存到磁盘。
参数:
| 标志 | 类型 | 必填 | 默认 | 描述 |
|---|---|---|---|---|
--id |
string | 是 | -- | 消息ID |
--attachmentId |
string | yes | -- | 附件ID来自 email attachments |
--savePath |
string | no | -- | 保存下载字节的文件路径或目录路径 |
--includeContent |
boolean | 否 | false |
当附件内容为文本时,包括文本预览 |
--expandItem |
boolean | 否 | false |
展开项目附件的元数据 |
--overwrite |
boolean | 否 | false |
覆盖目标路径中的现有文件 |
示例:
# Get metadata only
outlook-cli email attachment --id AAMkAGVmMDAwAT... --attachment-id AAMkAGVmMDAwAT...=
# Save attachment to downloads directory
outlook-cli email attachment \
--id AAMkAGVmMDAwAT... \
--attachment-id AAMkAGVmMDAwAT...= \
--save-path ./downloads/
# Save and include text preview when possible
outlook-cli email attachment \
--id AAMkAGVmMDAwAT... \
--attachment-id AAMkAGVmMDAwAT...= \
--save-path ./downloads/ \
--include-content
笔记:
referenceAttachment是一个云链接,无法从该端点作为原始字节下载。- 项目附件在下载时使用MIME原始内容。
email send --发送电子邮件
从用户帐户撰写并发送电子邮件。
参数:
| 标志 | 类型 | 必填 | 默认 | 描述 |
|---|---|---|---|---|
--to |
string | yes | -- | 收件人,逗号分隔为多个 |
--subject |
string | 是 | -- | 电子邮件主题 |
--body |
string | yes | -- | 电子邮件正文(纯文本或HTML) |
--cc |
string | no | -- | 抄送收件人,逗号分隔 |
--bcc |
string | no | -- | 密件抄送收件人,逗号分隔 |
--importance |
string | 否 | normal |
优先级: normal, high,或 low |
--saveToSentItems |
boolean | 否 | true |
将副本保存到“已发送”文件夹 |
示例:
# Simple email
outlook-cli email send \
--to colleague@company.com \
--subject "Meeting notes" \
--body "Here are today's action items..."
# Email to multiple recipients with CC and high priority
outlook-cli email send \
--to "team@company.com,manager@company.com" \
--cc hr@company.com \
--subject "URGENT: System outage" \
--body "We are investigating..." \
--importance high
# Email without saving to sent folder
outlook-cli email send \
--to test@example.com \
--subject "Test" \
--body "Hello" \
--saveToSentItems false
笔记:
- 当正文包含以下内容时,会自动检测HTML正文
<html. - 目前尚不支持发送附件,仅支持正文。
email mark-read --标记电子邮件为已读/未读
更改电子邮件的读取状态。
参数:
| 标志 | 类型 | 必填 | 默认 | 描述 |
|---|---|---|---|---|
--id |
string | 是 | -- | 电子邮件ID |
--isRead |
boolean | 否 | true |
true =标记读取, false =标记为未读 |
示例:
# Mark as read (default)
outlook-cli email mark-read --id AAMkAGVmMDAwAT...
# Mark as unread
outlook-cli email mark-read --id AAMkAGVmMDAwAT... --isRead false
calendar --日历管理
| 命令 | 描述 |
|---|---|
calendar list |
列出即将举行的活动 |
calendar create |
创建新事件 |
calendar decline |
拒绝活动邀请 |
calendar cancel |
取消您组织的活动 |
calendar delete |
删除事件 |
calendar list --列出即将举行的活动
按开始时间顺序列出从现在开始的即将发生的日历事件。
参数:
| 标志 | 类型 | 默认值 | 描述 |
|---|---|---|---|
--count |
编号 | 10 |
要返回的事件数(1-50) |
示例:
# Next 10 events (default)
outlook-cli calendar list
# Next 30 events
outlook-cli calendar list --count 30
# JSON output
outlook-cli calendar list --count 5 --json
输出显示: 活动ID、主题、地点、开始时间、结束时间、组织者、与会者列表。
提示: 从输出中复制事件ID以与一起使用 decline, cancel,或 delete 命令。
calendar create --创建日历事件
在日历上创建新事件。可选择邀请与会者。
参数:
| 标志 | 类型 | 必填 | 描述 |
|---|---|---|---|
--subject |
string | 是 | 事件标题 |
--start |
string | yes | 开始日期时间: YYYY-MM-DDTHH:MM:SS |
--end |
string | yes | 结束日期时间: YYYY-MM-DDTHH:MM:SS |
--attendees |
string | no | 逗号分隔的与会者电子邮件地址 |
--body |
string | 否 | 事件描述/议程 |
示例:
# Simple personal event
outlook-cli calendar create \
--subject "Focus time" \
--start "2026-04-10T09:00:00" \
--end "2026-04-10T11:00:00"
# Team meeting with attendees and agenda
outlook-cli calendar create \
--subject "Q2 Planning" \
--start "2026-04-15T14:00:00" \
--end "2026-04-15T15:30:00" \
--attendees "alice@company.com,bob@company.com" \
--body "Agenda: review Q1, plan Q2 roadmap, assign owners"
# All-day event (use midnight to midnight)
outlook-cli calendar create \
--subject "Company holiday" \
--start "2026-04-25T00:00:00" \
--end "2026-04-25T23:59:00"
笔记:
- 日期时间必须在
YYYY-MM-DDTHH:MM:SS没有时区偏移的格式。 - 默认情况下,服务器使用中欧标准时间。
calendar decline --拒绝活动邀请
拒绝收到的活动邀请,并可选择向组织者发送消息。
参数:
| 标志 | 类型 | 必填 | 描述 |
|---|---|---|---|
--eventId |
string | yes | 事件ID来自 calendar list |
--comment |
string | 否 | 要发送给组织者的消息 |
示例:
# Decline without a message
outlook-cli calendar decline --eventId AAMkAGVmMDAwAT...
# Decline with a reason
outlook-cli calendar decline \
--eventId AAMkAGVmMDAwAT... \
--comment "Sorry, I have a conflict. Can we reschedule to next week?"
calendar cancel --取消您的活动
取消您组织的活动并通知所有与会者。
参数:
| 标志 | 类型 | 必填 | 描述 |
|---|---|---|---|
--eventId |
string | yes | 事件ID来自 calendar list |
--comment |
string | 否 | 已向与会者发送取消原因 |
示例:
# Cancel without message
outlook-cli calendar cancel --eventId AAMkAGVmMDAwAT...
# Cancel with explanation
outlook-cli calendar cancel \
--eventId AAMkAGVmMDAwAT... \
--comment "This meeting is no longer needed. Details will follow by email."
注: 使用 cancel (不是 delete)当您希望与会者收到取消通知时。
calendar delete --删除事件
从日历中永久删除事件,而不通知与会者。
参数:
| 标志 | 类型 | 必填 | 描述 |
|---|---|---|---|
--eventId |
string | yes | 事件ID来自 calendar list |
示例:
outlook-cli calendar delete --eventId AAMkAGVmMDAwAT...
提示: 使用 cancel 而不是 delete 与与会者会面,以便他们收到适当的通知。
folder --邮件文件夹管理
| 命令 | 描述 |
|---|---|
folder list |
列出所有邮件文件夹 |
folder create |
创建新文件夹 |
folder move |
将电子邮件移动到另一个文件夹 |
folder list --列出邮件文件夹
列出帐户中的所有邮件文件夹。(可选)显示项目计数和子文件夹层次结构。
参数:
| 标志 | 类型 | 默认值 | 描述 |
|---|---|---|---|
--includeItemCounts |
布尔值 | false |
显示总邮件数和未读邮件数 |
--includeChildren |
布尔值 | false |
显示嵌套子文件夹 |
示例:
# Simple folder list
outlook-cli folder list
# With message counts
outlook-cli folder list --includeItemCounts
# Full hierarchy with counts
outlook-cli folder list --includeItemCounts --includeChildren
# JSON output for scripting
outlook-cli folder list --includeItemCounts --json
提示: 在使用自定义文件夹名称之前,使用此功能可以发现它们 email list, email search, folder move,或 rule create.
folder create --创建邮件文件夹
在根级别或现有文件夹内创建新的邮件文件夹。
参数:
| 标志 | 类型 | 必填 | 默认 | 描述 |
|---|---|---|---|---|
--name |
string | yes | -- | 新文件夹的名称 |
--parentFolder |
string | no | root | 现有父文件夹的名称 |
示例:
# Create top-level folder
outlook-cli folder create --name "Project Alpha"
# Create subfolder inside an existing folder
outlook-cli folder create --name "2026 Invoices" --parentFolder "Finance"
# Create a subfolder under inbox
outlook-cli folder create --name "Action Required" --parentFolder inbox
folder move --移动电子邮件
将一封或多封电子邮件从一个文件夹移动到另一个文件夹。
参数:
| 标志 | 类型 | 必填 | 默认 | 描述 |
|---|---|---|---|---|
--emailIds |
string | yes | -- | 逗号分隔的电子邮件ID |
--targetFolder |
string | yes | -- | 目标文件夹名称 |
--sourceFolder |
string | 否 | inbox |
源文件夹(用于上下文) |
示例:
# Move one email to archive
outlook-cli folder move \
--emailIds AAMkAGVmMDAwAT... \
--targetFolder archive
# Move multiple emails to a custom folder
outlook-cli folder move \
--emailIds "AAMkAGVm...,BBMkAHXn...,CCMkAIYo..." \
--targetFolder "Project Alpha"
# Move from a non-inbox folder
outlook-cli folder move \
--emailIds AAMkAGVmMDAwAT... \
--sourceFolder "Junk" \
--targetFolder inbox
输出: 报告任何失败移动的成功计数、失败计数和错误详细信息(最多显示3条错误消息)。
rule --收件箱规则
| 命令 | 描述 |
|---|---|
rule list |
列出所有收件箱规则 |
rule create |
创建新收件箱规则 |
rule sequence |
更改规则的执行顺序 |
rule list --列出收件箱规则
按顺序列出所有收件箱规则(执行顺序——先执行较低的运行)。
参数:
| 标志 | 类型 | 默认值 | 描述 |
|---|---|---|---|
--includeDetails |
布尔值 | false |
显示完整的条件和操作 |
示例:
# Just rule names and enabled status
outlook-cli rule list
# Full detail — conditions and actions for each rule
outlook-cli rule list --includeDetails
# JSON for scripting
outlook-cli rule list --includeDetails --json
输出(含详细信息)显示:
- 条件:from地址、主题包含、正文包含、有附件、重要性
- 操作:moveToFolder、copyToFolder、markAsRead、markImportance、forwardTo、delete
rule create --创建收件箱规则
创建自动处理传入电子邮件的收件箱规则。需要一个名称、至少一个条件和至少一个操作。
参数:
| 标志 | 类型 | 必填 | 描述 |
|---|---|---|---|
--name |
string | yes | 规则名称 |
--fromAddresses |
string | 条件 | 要匹配的逗号分隔的发件人电子邮件 |
--containsSubject |
string | condition | 必须出现在主题中的文本 |
--hasAttachments |
boolean | 条件 | 仅匹配带有附件的电子邮件 |
--moveToFolder |
string | action | 要将匹配的电子邮件移动到的文件夹名称 |
--markAsRead |
boolean | action | 自动将匹配的电子邮件标记为已读 |
--isEnabled |
boolean | -- | 规则是否处于活动状态(默认值: true) |
--sequence |
number | -- | 执行顺序(低=先);如果省略,则自动分配 |
至少一个条件(--fromAddresses, --containsSubject, --hasAttachments)以及至少一个动作(--moveToFolder, --markAsRead)是必需的。
示例:
# Auto-move emails from boss to Important folder
outlook-cli rule create \
--name "Boss emails" \
--fromAddresses boss@company.com \
--moveToFolder Important
# Auto-file newsletters and mark as read
outlook-cli rule create \
--name "Newsletter handler" \
--fromAddresses "news@service.com,digest@news.com" \
--moveToFolder Newsletters \
--markAsRead \
--sequence 10
# Rule based on subject text
outlook-cli rule create \
--name "Invoice sorter" \
--containsSubject invoice \
--hasAttachments \
--moveToFolder Finance
# Disabled rule (create but don't activate yet)
outlook-cli rule create \
--name "Temp filter" \
--fromAddresses test@example.com \
--markAsRead \
--isEnabled false
笔记:
- 这
moveToFolder目标必须已经存在。首先创建它folder create. - 如果
--sequence如果未提供,则将该规则放置在所有现有规则之后。
rule sequence --更改规则执行顺序
更改现有规则的顺序(执行顺序)。较低的序列号先运行。
参数:
| 标志 | 类型 | 必填 | 描述 |
|---|---|---|---|
--ruleName |
string | yes | 要重新排序的规则的确切名称 |
--sequence |
number | yes | 新序列号 |
示例:
# Make boss email rule run first
outlook-cli rule sequence --ruleName "Boss emails" --sequence 1
# Push newsletter rule later in the order
outlook-cli rule sequence --ruleName "Newsletter handler" --sequence 500
tools --工具检查
| 命令 | 描述 | 示例 |
|---|---|---|
tools list |
列出所有可用的MCP工具 | outlook-cli tools list |
tools schema |
显示特定工具的架构 | outlook-cli tools schema list-emails |
示例:
# See all tools
outlook-cli tools list
# Inspect a tool's parameters
outlook-cli tools schema send-email
outlook-cli tools schema create-event
call --通用工具调用
使用JSON参数直接按名称调用任何MCP工具。
outlook-cli call <tool-name> --args-json '<json>'
示例:
# List emails via generic call
outlook-cli call list-emails --args-json '{"folder":"inbox","count":5}'
# Send email via generic call
outlook-cli call send-email --args-json '{"to":"user@example.com","subject":"Hi","body":"Hello"}'
# With JSON output
outlook-cli call list-events --args-json '{"count":10}' --json
agents --AI代理指南
显示AI代理的最佳实践命令流(Claude、Codex、VS Code、自动化脚本)。
outlook-cli agents guide
代理工作流程(推荐):
outlook-cli auth status --json
outlook-cli tools list --json
outlook-cli tools schema send-email --json
outlook-cli call list-emails --args-json '{"folder":"inbox","count":5}' --ai
doctor --诊断
运行一系列诊断检查,并报告哪些工作正常,哪些需要修复。
outlook-cli doctor
检查:Node.js版本、环境变量、令牌文件存在、令牌有效性、服务器连接。
update --更新CLI
# Check for updates
outlook-cli update
# Run the update automatically
outlook-cli update --run
或者直接通过npm更新:
npm i -g outlook-cli@latest
输出标志(所有命令)
| 标志 | 描述 |
|---|---|
--json |
输出原始JSON而不是人类可读的文本 |
--ai |
JSON模式的代理安全别名(抑制富UI输出) |
| `--theme k9s | ocean |
--plain |
无颜色或格式 |
--no-color |
仅禁用颜色 |
--no-animate |
禁用微调器动画 |
在JSON模式下,响应包括:
result(原始MCP工具有效载荷)structured(标准化的机器友好字段,如summary,items,以及解析的元数据)
示例:
outlook-cli auth status --json
outlook-cli tools list --ai
outlook-cli email list --count 10 --json
outlook-cli --theme ocean --help
outlook-cli calendar list --plain
完整的MCP工具目录
所有21个工具都可以通过共享的MCP工具注册表获得,该注册表由Claude和其他AI助手使用,也可以通过以下方式调用 outlook-cli call <tool-name>.
身份验证工具
| 工具 | 功能 | 必需 | 可选 |
|---|---|---|---|
about |
返回服务器名称、版本、描述 | none | none |
authenticate |
启动OAuth流,返回auth URL | none | force (布尔值) |
check-auth-status |
返回当前身份验证状态 | none | none |
日历工具
| 工具 | 功能 | 必需 | 可选 |
|---|---|---|---|
list-events |
列出即将发生的日历事件 | 无 | count (1–50) |
create-event |
创建新事件 | subject, start, end |
attendees (阵列), body |
decline-event |
拒绝活动邀请 | eventId |
comment |
cancel-event |
取消活动并通知与会者 | eventId |
comment |
delete-event |
以静默方式删除事件 | eventId |
没有 |
电子邮件工具
| 工具 | 功能 | 必需 | 可选 |
|---|---|---|---|
list-emails |
列出文件夹中最近的电子邮件 | 无 | folder, count |
search-emails |
使用文本和筛选条件搜索 | 无 | query, folder, from, to, subject, hasAttachments, unreadOnly, count |
read-email |
阅读一封电子邮件的全部内容 | id |
没有 |
list-attachments |
列出邮件中的附件 | messageId |
count |
get-attachment |
获取一个附件元数据,并可选择下载 | messageId, attachmentId |
savePath, includeContent, expandItem, overwrite |
send-email |
发送新电子邮件 | to, subject, body |
cc, bcc, importance, saveToSentItems |
mark-as-read |
将电子邮件标记为已读或未读 | id |
isRead (布尔值,默认值 true) |
文件夹工具
| 工具 | 功能 | 必需 | 可选 |
|---|---|---|---|
list-folders |
列出所有邮件文件夹 | 无 | includeItemCounts, includeChildren |
create-folder |
创建新文件夹 | name |
parentFolder |
move-emails |
将电子邮件移动到另一个文件夹 | emailIds (逗号分隔), targetFolder |
sourceFolder |
规则工具
| 工具 | 功能 | 必需 | 可选 |
|---|---|---|---|
list-rules |
按执行顺序列出收件箱规则 | 无 | includeDetails |
create-rule |
创建收件箱规则(1个条件+1个最小操作) | name +条件+行动 |
isEnabled, sequence |
edit-rule-sequence |
更改规则执行顺序 | ruleName, sequence |
没有 |
MCP服务器模式(适用于Claude和AI助手)
作为标准MCP stdio服务器运行,与Claude Desktop或其他MCP客户端一起使用:
npm run mcp-server
# or
node index.js
Claude桌面配置
添加到您的Claude Desktop配置文件(claude-config-sample.json 作为参考):
{
"mcpServers": {
"outlook": {
"command": "node",
"args": ["/path/to/outlook-mcp/index.js"],
"env": {
"OUTLOOK_CLIENT_ID": "your-client-id",
"OUTLOOK_CLIENT_SECRET": "your-client-secret"
}
}
}
}
或者,如果全局安装:
{
"mcpServers": {
"outlook": {
"command": "outlook-cli",
"args": ["mcp-server"],
"env": {
"OUTLOOK_CLIENT_ID": "your-client-id",
"OUTLOOK_CLIENT_SECRET": "your-client-secret"
}
}
}
}
AI助手技能
AI助手(Claude和其他人)的完整技能参考见 技能/前景-mcp.md本文档涵盖了每个工具、每个参数、常见工作流程和示例,可用于RAG系统或作为系统提示添加。
代币行为
- 代币存储在
~/.outlook-mcp-tokens.json(Windows:%USERPROFILE%\.outlook-mcp-tokens.json) - 令牌在包更新和重新安装后仍然有效——升级后无需重新进行身份验证
- 访问令牌过期时自动刷新(使用刷新令牌)
- 随时强制重新身份验证
outlook-cli auth login --force或authenticate { force: true }
测试模式
USE_TEST_MODE=true outlook-cli email list
随着 USE_TEST_MODE=true,所有API调用都使用模拟数据-不需要真正的Microsoft帐户。可用于开发和CI测试。
故障排除
| 问题 | 解决方案 |
|---|---|
AADSTS7000215 错误 |
您使用的是机密ID而不是机密 价值 在Azure中 |
| 身份验证服务器无法启动 | 运行 npx kill-port 3333 然后再试一次 |
| 令牌存在后“未通过身份验证” | 令牌过期,没有刷新令牌--运行 auth login 再一次 |
create-rule 在文件夹上失败 |
文件夹不存在--运行 folder create 首先 |
move-emails 部分失败 |
某些电子邮件ID无效--使用验证ID email list |
| 缺少依赖项 | 运行 npm install |
AI助手技能
这 skills/outlook-automation/ 文件夹包含Claude Code、OpenAI Codex和VS Code的结构化技能。
安装技能
# Claude Code — personal
uv run python tools/install_skill.py --personal
# Claude Code — project/team
uv run python tools/install_skill.py --project
# OpenAI Codex
uv run python tools/install_skill.py --codex
# Verify
uv run python tools/install_skill.py --verify --personal
注: OpenAI Codex技能需要实验功能标志。添加
~/.codex/config.toml:[features] skills = true
技能结构
| 文件 | 内容 |
|---|---|
| 技能/前景自动化/SKILL.md | 主要技能条目——概述、行为规则、快速示例、安装说明 |
| 技能/前景自动化/参考/cli.md | 完整的CLI命令参考——每个命令、标志和示例 |
| 技能/前景自动化/参考/json-schema.md | 所有21个MCP工具的JSON模式 |
| 技能/前景自动化/参考/安全.md | OAuth流程、令牌生命周期、权限范围、AI安全规则 |
| 技能/前景自动化/参考/故障排除.md | 常见错误、诊断清单、逐步修复 |
文档
| 文件 | 内容 |
|---|---|
| 文档/参考.md | 全参数逐参数API参考 |
| CLI.md | CLI快速参考卡 |
| QUICKSTART.md | 新用户设置演练 |
| 文档/项目结构.md | 代码库架构和模块概述 |
| docs/PUBLISHING.md | 发布维护人员检查表 |
| claude-config-sample.json | 克劳德桌面MCP配置示例 |
脚本参考
| 脚本 | 命令 | 描述 |
|---|---|---|
npm start |
node cli.js |
运行CLI |
npm run mcp-server |
node index.js |
以MCP stdio服务器运行 |
npm run cli |
node cli.js |
CLI别名 |
npm run auth-server |
node outlook-auth-server.js |
在端口3333上启动OAuth回调服务器 |
npm run doctor |
node cli.js doctor |
运行诊断程序 |
npm run inspect |
MCP检查器 | 交互式测试MCP服务器 |
npm test |
Jest | 运行单元测试 |