name: microsoft-graph-api description: 当用户询问“阅读我的邮件”、“发送邮件”、“撰写邮件”、“查看我的日历”、“获取日历事件”、“创建会议”、“安排活动”、“添加日历事件”、“搜索邮件”、“列出邮件文件夹”、“显示未读消息”、“我有哪些会议”、“从Microsoft获取邮件”或提及Microsoft Graph、Office 365邮件或Outlook日历集成时,应使用此技能。 version: 0.3.0
Microsoft Graph API 集成
通过Bun执行的TypeScript脚本访问Microsoft 365邮件和日历。
概述
此技能提供对Microsoft Graph API的访问,用于:
- 邮件:列出、阅读、搜索和发送邮件
- 日历:查看、搜索和创建日历事件
所有脚本都返回JSON并自动处理身份验证。
响应格式
所有脚本输出具有一致结构的JSON:
成功
{"status": "success", "data": [...]}
需要身份验证
{
"status": "auth_required",
"userCode": "ABC123",
"verificationUri": "https://microsoft.com/devicelogin",
"expiresAt": "2024-01-15T10:30:00.000Z",
"message": "要登录,请使用Web浏览器..."
}
当您收到auth_required时,向用户显示:
要访问您的邮件,请进行身份验证:
1. 转到:https://microsoft.com/devicelogin
2. 输入代码:ABC123
完成身份验证后请告诉我。
然后重试相同的命令 - 脚本将自动完成身份验证。
身份验证待处理
{
"status": "auth_pending",
"userCode": "ABC123",
"verificationUri": "https://microsoft.com/devicelogin",
"expiresAt": "...",
"message": "..."
}
用户已看到代码但尚未完成登录。提醒他们完成身份验证。
错误
{"status": "error", "error": "错误描述"}
邮件访问
所有脚本位于${CLAUDE_PLUGIN_ROOT}/skills/microsoft-graph/scripts/。
列出邮件
bun run ${CLAUDE_PLUGIN_ROOT}/skills/microsoft-graph/scripts/emails.ts list
bun run emails.ts list --folder "已发送邮件" --top 5
bun run emails.ts list --profile work
阅读特定邮件
bun run emails.ts read --id AAMkAG...
从list命令输出中获取ID。
搜索邮件
bun run emails.ts search --query "from:boss@company.com"
bun run emails.ts search --query "subject:季度报告"
bun run emails.ts search --query "hasAttachments:true"
列出邮件文件夹
bun run emails.ts folders
发送邮件
# 简单邮件
bun run emails.ts send --to "user@example.com" --subject "你好" --body "嗨!"
# 多个收件人带抄送
bun run emails.ts send --to "a@example.com,b@example.com" --cc "c@example.com" --subject "团队更新" --body "这是更新..."
# HTML邮件
bun run emails.ts send --to "user@example.com" --subject "报告" --body "<h1>月度报告</h1><p>详情...</p>" --html
# 带密送
bun run emails.ts send --to "team@example.com" --bcc "manager@example.com" --subject "公告" --body "..."
日历访问
列出即将发生的事件
bun run ${CLAUDE_PLUGIN_ROOT}/skills/microsoft-graph/scripts/calendar.ts list
bun run calendar.ts today
bun run calendar.ts week
bun run calendar.ts list --start tomorrow --end +7d
查看特定事件
bun run calendar.ts view --id AAMkAG...
搜索事件
bun run calendar.ts search --query "团队站会"
日期格式
- 相对:
today,tomorrow,+7d,+1m,+1y - 绝对:ISO格式
2024-01-15或2024-01-15T14:00:00
创建日历事件
# 基本事件(默认1小时时长)
bun run calendar.ts create --subject "团队会议" --start "2024-01-15T14:00:00"
# 带结束时间的事件
bun run calendar.ts create --subject "研讨会" --start "2024-01-15T09:00:00" --end "2024-01-15T12:00:00"
# 带位置和描述的事件
bun run calendar.ts create --subject "午餐" --start "2024-01-15T12:00:00" --location "咖啡馆" --body "团队午餐"
# 带参与者的活动
bun run calendar.ts create --subject "一对一会议" --start tomorrow --end +1d --attendees "colleague@example.com"
# 多个参与者
bun run calendar.ts create --subject "评审" --start "2024-01-15T10:00:00" --attendees "a@ex.com,b@ex.com,c@ex.com"
# 全天事件
bun run calendar.ts create --subject "假期" --start "2024-12-25" --all-day
# 使用相对日期
bun run calendar.ts create --subject "跟进" --start tomorrow --end +1d
多配置文件支持
使用配置文件存储多个账户:
# 使用工作配置文件
bun run emails.ts list --profile work
bun run calendar.ts today --profile work
# 使用个人配置文件
bun run emails.ts list --profile personal
手动身份验证
用于显式身份验证管理(列出/删除配置文件):
# 列出所有配置文件
bun run ${CLAUDE_PLUGIN_ROOT}/skills/microsoft-graph/scripts/auth.ts --list
# 删除配置文件
bun run auth.ts --delete --profile old-account
# 使用自定义Azure AD应用进行身份验证
bun run auth.ts --client-id your-app-id --tenant-id your-tenant-id
令牌生命周期
| 令牌类型 | 生命周期 | 处理方式 |
|---|---|---|
| 访问令牌 | ~1小时 | 自动刷新 |
| 刷新令牌 | ~90天 | 过期时,脚本返回auth_required |
用户仅在刷新令牌过期时(约90天)需要重新进行身份验证。
凭据存储
凭据存储在~/.config/api-skills/credentials.json。
脚本参考
| 脚本 | 用途 |
|---|---|
emails.ts |
邮件列表、阅读、搜索、发送和文件夹操作 |
calendar.ts |
日历查看、搜索和创建操作 |
auth.ts |
手动凭据管理(列出、删除配置文件) |
附加资源
有关详细的API参考,请参阅:
references/graph-api.md- Microsoft Graph API端点和参数