mcpField
M
microsoft-outlook

microsoft-outlook

github.com/zapier生产力182120 次安装10 周前更新
代码仓库

关于 microsoft-outlook

microsoft-outlook 是一个通过 Microsoft Graph 管理用户 Outlook 邮件、日历和个人联系人的 agentskills.io 技能。其脚本涵盖邮件搜索与处理、文件夹和附件、日历事件及联系人记录。

主要功能

  1. 01搜索、读取、撰写和发送邮件
  2. 02回复、转发和整理邮件
  3. 03浏览文件夹及邮件附件
  4. 04列出和管理日历事件
  5. 05搜索和管理个人联系人

适用场景

  1. 01查找并阅读邮箱中的邮件
  2. 02起草或发送回复并整理邮件
  3. 03查看或更新指定日期范围内的事件
  4. 04查找或更新个人联系人信息

MCP 相关

对于支持 MCP 的客户端,该技能可使用已加载的工具,也可注册为本地 MCP 服务。它向 MCP 客户端提供 Outlook 邮件、文件夹、附件、日历及联系人的操作工具。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zapier/connectors --skill microsoft-outlook

安装后在 Claude Code 中输入/microsoft-outlook确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.mcp.json
CHANGELOG.md
cli.js
cli.ts
connections.ts
index.ts
LICENSE
NOTICE
NOTICE.md
package.json
README.md
.claude-plugin/
plugin.json
evals/
evals.json
results.md
lib/
graph.ts
schemas.ts
references/
microsoft-outlook-api-gotchas.md
use-as-cli.md
use-as-mcp.md
use-as-recipe.md
use-as-sdk.md
use-with-zapier.md
use-without-zapier.md
scripts/
copyMessage.ts
createContact.ts
createDraft.ts
createEvent.ts
createMailFolder.ts
createReplyDraft.ts
deleteContact.ts

详细介绍

Microsoft Outlook

针对单个用户的 Outlook 邮箱提供工具,使用 Microsoft Graph API v1.0(https://graph.microsoft.com/v1.0/):读取和搜索邮件、撰写/发送/回复/转发邮件、整理邮件(已读状态、标记、重要性、类别、移动、复制、删除)、浏览邮件文件夹和附件、管理日历事件,以及管理个人联系人。包含 30 个脚本,涵盖个人资料、邮件、文件夹、类别、日历和联系人。所有调用均使用同一个 OAuth bearer token 进行授权。

这是一个独立的非官方 Microsoft Outlook 连接器,与 Microsoft Outlook 无关联,也未获其认可或赞助。“Microsoft Outlook”是其所有者的商标,在此仅用于标识此连接器所连接的服务。

何时使用

  • Agent 需要读取或搜索邮件——按文件夹、KQL 或 OData 筛选条件列出/搜索邮件、读取完整邮件,以及列出和下载附件。
  • Agent 需要发送或回复邮件——撰写并发送邮件、创建草稿并稍后发送、回复/回复所有人,或转发邮件。
  • Agent 需要整理邮件——将邮件标记为已读/未读、添加标记、设置重要性、分类、移动、复制或删除邮件;浏览和创建邮件文件夹。
  • Agent 需要处理日历或联系人——列出日历、列出事件或查看某个日期范围内的事件、创建/更新/删除事件,以及创建/读取/更新/删除个人联系人。

设置

这是一个 agentskills.io 技能。

如果尚未将此连接器安装为技能,请先使用 npx skills add zapier/connectors --skill microsoft-outlook 安装(或使用你所用运行框架提供的技能安装机制),然后继续操作。安装技能会复制这些文件,不会安装依赖项。运行 CLI、本地 MCP 服务或 zapier-sdk 身份验证命令之前,请先在此处运行一次 npm install --omit=dev。如果要在自己的项目中将已发布的包作为依赖项导入?npm install 已会解析所有依赖项——请参阅 references/use-as-sdk.md。

如果你需要实际的仓库源码——以浏览 references/、运行此连接器的测试或修改代码,请参阅 README.md,了解如何进行范围限定的 git clone。

此连接器需要 Node.js 22.18+。选择与你的运行方式相符的参考文档,并在执行其他操作前先加载:

你拥有……加载
支持 MCP 的客户端——工具可能已加载(例如 mcp__microsoft-outlook__<tool>),或者你可以自行注册本地服务(也可以引导用户注册)references/use-as-mcp.md
终端/子进程访问权限(可以运行 node)references/use-as-cli.md
只有自己的代码,并将此包作为依赖项导入references/use-as-sdk.md
无工具访问权限、无终端,也无法导入此包——你要编写自己的代码,直接调用 Microsoft Outlook API(例如在代码执行沙箱中)references/use-as-recipe.md

脚本

所有脚本都使用单一连接 microsoft-outlook。邮件和日历脚本接受可选的 mailbox 输入,用于操作共享邮箱;六个事件脚本接受可选的 calendarId(通过 listCalendars 获取)。

ScriptScript nameConnectionsDescription
scripts/getMe.tsgetMemicrosoft-outlook获取已登录用户的个人资料(姓名、电子邮件、UPN)。解析“我的电子邮件”。
scripts/sendMail.tssendMailmicrosoft-outlook一步完成撰写并发送电子邮件(不返回 ID)。
scripts/createDraft.tscreateDraftmicrosoft-outlook创建电子邮件草稿;返回供 sendDraft 使用的草稿 ID。
scripts/sendDraft.tssendDraftmicrosoft-outlook根据 ID 发送现有草稿。
scripts/replyToMessage.tsreplyToMessagemicrosoft-outlook回复(或回复所有人)并立即发送。
scripts/createReplyDraft.tscreateReplyDraftmicrosoft-outlook创建回复草稿(或回复所有人),以便发送前编辑。
scripts/forwardMessage.tsforwardMessagemicrosoft-outlook将邮件转发给新的收件人并立即发送。
scripts/updateMessage.tsupdateMessagemicrosoft-outlook更新邮件的已读状态、标记、重要性或类别。
scripts/moveMessage.tsmoveMessagemicrosoft-outlook将邮件移至其他文件夹(返回新的 ID)。
scripts/copyMessage.tscopyMessagemicrosoft-outlook将邮件复制到其他文件夹,并保留原邮件。
scripts/deleteMessage.tsdeleteMessagemicrosoft-outlook删除邮件(将其移至“已删除邮件”;可撤销)。
scripts/listMessages.tslistMessagesmicrosoft-outlook按最新优先列出或搜索邮件(用于解析 ID 的入口)。
scripts/getMessage.tsgetMessagemicrosoft-outlook根据 ID 获取单封邮件,包括完整正文。
scripts/listAttachments.tslistAttachmentsmicrosoft-outlook列出邮件的附件。
scripts/getAttachment.tsgetAttachmentmicrosoft-outlook根据 ID 获取单个附件,包括其 base64 内容。
scripts/listMailFolders.tslistMailFoldersmicrosoft-outlook列出邮件文件夹(顶层文件夹或某个文件夹的子文件夹)。
scripts/createMailFolder.tscreateMailFoldermicrosoft-outlook创建邮件文件夹(顶层文件夹或子文件夹)。
scripts/listCategories.tslistCategoriesmicrosoft-outlook列出邮箱的类别名称和颜色。
scripts/listCalendars.tslistCalendarsmicrosoft-outlook列出用户的日历(解析 calendarId)。
scripts/listEvents.tslistEventsmicrosoft-outlook列出事件和重复系列的主事件。
scripts/listCalendarView.tslistCalendarViewmicrosoft-outlook列出日期范围内的事件,并展开重复事件(“我的日历上有什么”)。
scripts/getEvent.tsgetEventmicrosoft-outlook根据 ID 获取单个事件(与会者、正文、重复规则)。
scripts/createEvent.tscreateEventmicrosoft-outlook创建日历事件。
scripts/updateEvent.tsupdateEventmicrosoft-outlook更新事件字段或与会者(与会者列表将被替换)。
scripts/deleteEvent.tsdeleteEventmicrosoft-outlook删除(取消)日历事件。
scripts/listContacts.tslistContactsmicrosoft-outlook列出或搜索个人联系人。
scripts/getContact.tsgetContactmicrosoft-outlook根据 ID 获取单个个人联系人。
scripts/createContact.tscreateContactmicrosoft-outlook创建个人联系人。
scripts/updateContact.tsupdateContactmicrosoft-outlook更新个人联系人的字段(数组字段将被替换)。
scripts/deleteContact.tsdeleteContactmicrosoft-outlook根据 ID 删除个人联系人。

歧义处理与拒绝

写入前先消除歧义。 对通过名称/主题查找到的联系人、事件或邮件采取操作之前(例如,通过 listContacts 找到联系人后更新,或通过 listEvents 找到事件后回复),请统计名称/主题不区分大小写的完全匹配项:

  • 恰好匹配一项 — 对其执行操作。不要过度追问;唯一明确的匹配项就是答案。
  • 匹配两项或更多,且无法区分 — 停止操作。列出这些候选项及其区分字段(联系人的 emailAddresses/companyName、事件的 start/organizer、邮件的 from/receivedDateTime),并询问用户指的是哪一项。不要随意选择,也不要对所有匹配项执行写入操作。

不支持的操作 — 说明后停止;不要用其他工具伪装实现。 本目录明确不支持以下操作:

  • 监控新邮件或事件(触发器)。 没有“有新邮件时通知我”或轮询工具;此连接器仅支持请求/响应。不要通过反复调用 listMessages 来模拟订阅并声称已订阅。
  • 发送超过 3 MB 的附件。 仅支持小于 3 MB 的内嵌附件;不支持大型文件上传会话。不要声称已发送大型文件。
  • 访问群组/共享_日历_或通讯组列表。 不提供群组日历和目录群组。(共享_邮箱_可通过 mailbox 输入访问。)
  • 永久删除邮件(deleteMessage 是可撤销的移至“已删除邮件”操作),也不支持管理邮箱规则、自动回复或重点收件箱设置。

如果用户要求执行以上任何操作,请告知用户不支持,然后停止 — 不要尝试调用无关工具来近似实现。

身份验证

每种形态都将身份验证信息作为一个连接选择器传递,而非密钥 — 格式为 [<resolver>:]<value> 字符串。每个连接器都接受 zapier:<connection-id>(由 Zapier 管理的身份验证 — 通过 Zapier 的身份验证、重试和治理层进行路由);有些连接器还接受一个或多个直接令牌解析器(名称和数量因连接器而异)— 请查看此连接器自身的解析器,不要想当然。<resolver>: 前缀可省略;裸值会交给第一个认领它的解析器 — 符合 UUID 格式的裸值始终由 zapier: 认领。每个脚本都会声明所需的连接及其接受的解析器。传递连接的确切语法(以及如何查看此连接器的解析器列表)因形态而异 — 请参阅上方加载的参考文档。

想先检查已配置的连接?不要为此转储环境变量值 — env 或 env | grep <name> 会连同名称一起打印值;如果设置了值,就会将有效凭据泄露到对话记录中。只检查名称(env | cut -d= -f1 | grep -i <name>),或直接测试已知名称([ -n "$VAR_NAME" ])。

还没有连接?选择一种方式 — 并按照相应参考文档中的流程获取连接;不要直接向用户索要连接 ID 或令牌,仿佛他们早已记住这些信息:

加载
直接传递凭据references/use-without-zapier.md
通过 Zapier 连接进行路由references/use-with-zapier.md

输出格式

每个脚本都会返回一个 { data, meta } 封装:

  • data — 脚本的结果(其形状由 outputSchema 声明;有关如何检查形状对应的脚本确切架构,请参阅你上面加载的参考文件)。
  • meta.outputDataValidation — 对 data 进行验证的结果:
    • { skipped: false, droppedPaths: null } — 已验证,未移除任何内容。
    • { skipped: false, droppedPaths: [...], instruction } — 已验证,但这些路径已从 data 中剥离:脚本从 API 返回、但 outputSchema 未声明的字段。如果需要这些字段,请跳过输出验证后重新运行。
    • { skipped: true } — 已绕过验证;data 是未经检查的脚本原始输出。

读取已剥离的字段 / skipOutputDataValidation。 如需接收未经验证的原始结果,请选择退出输出验证(具体语法因形状而异;请参阅你上面加载的参考文件)。输入验证永远不会跳过。

精简结果 / filterOutputData。 如需将大型结果缩减为所需字段,请传入一个 jq 表达式,对 data 进行后处理(具体语法同样因形状而异)。jq 仅针对 data 运行,而非 { data, meta } 封装,因此表达式应以 data 为根(运行脚本的 --help,或形状对应的命令,查看其输出架构)。转换后的值会替换 data,meta 保持不变,且结果不会再根据输出架构进行验证。

参考资料

在相应领域工作前,请加载匹配的参考文件:

参考资料涵盖内容在以下情况下加载
references/microsoft-outlook-api-gotchas.mdAPI 错误恢复(401/403/404/413/429)、移动后的 ID 稳定性、分页、search 与 filter 的区别、附件(3 MB 限制)、全天/在线事件、日期时间与时区、联系人最多 3 个电子邮件地址、类别。调用出错且需要恢复指导、移动后某个 ID 无法再解析,或不确定分页、search 与 filter 的区别、附件、全天/在线事件、日期时间与时区、联系人最多 3 个电子邮件地址或类别的行为时。

评论

支持 Markdown