mcpField
M
microsoft-teams

microsoft-teams

github.com/acedatacloud生产力17170 次安装今天更新
代码仓库

关于 microsoft-teams

这项 Skill 使用 Microsoft Graph、curl 和 jq 读取及发送 Microsoft Teams 聊天消息,并说明工作或学校账户授权要求,以及不支持频道消息和个人账户的限制。

主要功能

  1. 01列出一对一和群组聊天
  2. 02读取近期聊天消息
  3. 03发送聊天消息
  4. 04说明账户与权限错误

适用场景

  1. 01查看近期对话
  2. 02向 Teams 聊天发送消息

MCP 相关

这是 Skill,而非 MCP 服务;它介绍通过 curl 和 jq 使用 Microsoft Graph。

安装

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

$npx skills add https://github.com/acedatacloud/skills --skill microsoft-teams

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

详细介绍

通过 curl + jq 操作 Microsoft Graph 中的 Microsoft Teams 聊天。用户的 OAuth bearer token 位于 $MICROSOFT_TEAMS_TOKEN 中;每次调用都需要 Authorization: Bearer $MICROSOFT_TEAMS_TOKEN。基础 URL: https://graph.microsoft.com/v1.0。

失败响应格式为 {"error":{"code","message"}}——原样显示 message。401 = 重新安装。发送时出现 403/Forbidden 表示用户授予的是只读权限 (Chat.Read)→ 重新连接并授予 Chat.ReadWrite + ChatMessage.Send。

/me/chats 返回 403 "No authorization information present on the request" = 已连接的账户是个人 Microsoft 账户。 Teams 聊天是工作或学校(组织)功能——对于个人 MSA 账户(outlook.com/hotmail 等),Microsoft Graph 不会开放 /me/chats,也不会授予 Chat.* 作用域。请直接告知用户:“Microsoft Teams 聊天需要工作或学校账户;你连接的是个人 Microsoft 账户。请重新连接 Teams 并选择工作或学校账户。”不要重试——该账户无法成功调用。

G="https://graph.microsoft.com/v1.0"; AUTH="Authorization: Bearer $MICROSOFT_TEAMS_TOKEN"
# My chats (1:1 + group), most recent first; expand members for names
curl -sS -H "$AUTH" "$G/me/chats?\$top=20&\$expand=members" \
  | jq '.value[] | {id, chatType, topic, members: [.members[].displayName]}'

读取和发送聊天消息

CHAT="CHAT_ID"
# Recent messages
curl -sS -H "$AUTH" "$G/chats/$CHAT/messages?\$top=20" \
  | jq '.value[] | {from: .from.user.displayName, created: .createdDateTime, text: .body.content}'

# Send a message (confirm content with the user first). contentType html|text.
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" \
  -d '{"body":{"contentType":"html","content":"Hi from the assistant 👋"}}' \
  "$G/chats/$CHAT/messages" | jq '{id, created: .createdDateTime}'

注意事项

  • 仅限聊天。 读取 Teams 频道消息需要 ChannelMessage.Read.All——这是 Microsoft 的“受保护 API”,需要租户管理员 授权;此连接器有意不申请该权限。不要尝试调用 /teams/{id}/channels/.../messages;它会返回 403。
  • HTML 消息的 body.content 包含标记语言——总结时请移除标签。
  • OData $top/$expand 中的 $ 需要在 shell 中转义;请为 URL 加上引号。

评论

支持 Markdown