mcpField
M
microsoft-teams-automation

microsoft-teams-automation

github.com/composiohq生产力78.3k72 次安装14 周前更新
代码仓库

关于 microsoft-teams-automation

通过 Rube MCP 和 Composio 的 Microsoft Teams 工具包自动处理 Teams 操作,支持消息、会议、团队与频道管理以及消息搜索。

主要功能

  1. 01发送频道和聊天消息
  2. 02创建在线会议
  3. 03管理团队、频道和成员
  4. 04搜索 Teams 消息

适用场景

  1. 01在频道发布进展
  2. 02发送一对一或群组聊天消息
  3. 03安排在线会议
  4. 04查找聊天和频道中的消息

MCP 相关

使用 Rube MCP 与 Composio 的 Microsoft Teams 工具包;操作需要有效的 Microsoft Teams 连接和最新工具架构。

安装

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

$npx skills add https://github.com/composiohq/awesome-claude-skills --skill microsoft-teams-automation

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

详细介绍

通过 Rube MCP 自动化 Microsoft Teams

通过 Rube MCP 使用 Composio 的 Microsoft Teams 工具包,自动化 Microsoft Teams 操作。

工具包文档:composio.dev/toolkits/microsoft_teams

前提条件

  • 必须已连接 Rube MCP(可使用 RUBE_SEARCH_TOOLS)
  • 通过 RUBE_MANAGE_CONNECTIONS 建立有效的 Microsoft Teams 连接,并使用工具包 microsoft_teams
  • 始终先调用 RUBE_SEARCH_TOOLS,以获取当前工具架构

设置

获取 Rube MCP:在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务。无需 API 密钥——只需添加端点即可使用。

  1. 确认 RUBE_SEARCH_TOOLS 能够响应,以验证 Rube MCP 是否可用
  2. 使用工具包 microsoft_teams 调用 RUBE_MANAGE_CONNECTIONS
  3. 如果连接状态不是 ACTIVE,请按照返回的授权链接完成 Microsoft OAuth
  4. 确认连接状态显示为 ACTIVE 后,再运行任何工作流

核心工作流

1. 发送频道消息

适用场景:用户想要在 Teams 频道中发布消息

工具调用顺序:

  1. MICROSOFT_TEAMS_TEAMS_LIST - 列出团队以查找目标团队 [前置步骤]
  2. MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS - 列出团队中的频道 [前置步骤]
  3. MICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGE - 发布消息 [必需]

关键参数:

  • team_id:团队的 UUID(来自 TEAMS_LIST)
  • channel_id:频道 ID(来自 LIST_CHANNELS,格式:'19:[email protected]')
  • content:消息文本或 HTML
  • content_type:'text' 或 'html'

注意事项:

  • team_id 必须是有效的 UUID 格式
  • channel_id 必须采用 thread 格式(例如,'19:[email protected]')
  • TEAMS_LIST 可能会分页(每页约 100 项);请通过 @odata.nextLink 查找所有团队
  • 如果用户无权访问团队,LIST_CHANNELS 可能返回 403
  • 超过约 28KB 的消息可能触发 400/413 错误;请拆分长内容
  • 限流可能返回 429;请使用指数退避(1 秒/2 秒/4 秒)
2. 发送聊天消息

适用场景:用户想要发送一对一或群组聊天消息

工具调用顺序:

  1. MICROSOFT_TEAMS_CHATS_GET_ALL_CHATS - 列出现有聊天 [可选]
  2. MICROSOFT_TEAMS_LIST_USERS - 查找新聊天所需的用户 [可选]
  3. MICROSOFT_TEAMS_TEAMS_CREATE_CHAT - 创建新聊天 [可选]
  4. MICROSOFT_TEAMS_TEAMS_POST_CHAT_MESSAGE - 发送消息 [必需]

关键参数:

  • chat_id:聊天 ID(来自 GET_ALL_CHATS 或 CREATE_CHAT)
  • content:消息内容
  • content_type:'text' 或 'html'
  • chatType:'oneOnOne' 或 'group'(用于 CREATE_CHAT)
  • members:成员对象数组(用于 CREATE_CHAT)

注意事项:

  • CREATE_CHAT 要求已通过身份验证的用户是成员之一
  • 如果两个用户之间已存在一对一聊天,oneOnOne 聊天会返回现有聊天
  • 群组聊天要求至少有一名成员具有 'owner' 角色
  • 成员的 user_odata_bind 必须使用完整的 Microsoft Graph URL 格式
  • 聊天筛选支持非常有限;必要时请在客户端进行筛选
3. 创建在线会议

适用场景:用户想要安排 Microsoft Teams 会议

工具调用顺序:

  1. MICROSOFT_TEAMS_LIST_USERS - 查找参与者用户 ID [可选]
  2. MICROSOFT_TEAMS_CREATE_MEETING - 创建会议 [必需]

关键参数:

  • subject:会议标题
  • start_date_time:ISO 8601 开始时间(例如,'2024-08-15T10:00:00Z')
  • end_date_time:ISO 8601 结束时间(必须晚于开始时间)
  • participants:包含 user_id 和 role 的用户对象数组

注意事项:

  • end_date_time 必须严格晚于 start_date_time
  • 参与者必须使用有效的 Microsoft 用户 user_id(GUID),不能使用电子邮件地址
  • 此操作会创建独立会议,不会关联日历事件
  • 如需关联日历的会议,请使用 OUTLOOK_CALENDAR_CREATE_EVENT 并设置 is_online_meeting=true
4. 管理团队和频道

使用场景:用户希望列出、创建或管理团队和频道

工具调用顺序:

  1. MICROSOFT_TEAMS_TEAMS_LIST - 列出所有可访问的团队 [必需]
  2. MICROSOFT_TEAMS_GET_TEAM - 获取特定团队的详细信息 [可选]
  3. MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS - 列出团队中的频道 [可选]
  4. MICROSOFT_TEAMS_GET_CHANNEL - 获取频道详细信息 [可选]
  5. MICROSOFT_TEAMS_TEAMS_CREATE_CHANNEL - 创建新频道 [可选]
  6. MICROSOFT_TEAMS_LIST_TEAM_MEMBERS - 列出团队成员 [可选]
  7. MICROSOFT_TEAMS_ADD_MEMBER_TO_TEAM - 将成员添加到团队 [可选]

关键参数:

  • team_id:团队 UUID
  • channel_id:采用 thread 格式的频道 ID
  • filter:OData 筛选字符串(例如,"startsWith(displayName,'Project')")
  • select:以逗号分隔的要返回的属性

注意事项:

  • TEAMS_LIST 分页:大型租户中请跟进 @odata.nextLink
  • 如果权限不匹配,可能不会显示专用频道或共享频道
  • 如果 team_id 或 channel_id 不正确,GET_CHANNEL 会返回 404
  • 始终从列表操作中获取 ID;不要猜测 ID 格式
5. 搜索消息

使用场景:用户希望在 Teams 聊天和频道中查找消息

工具调用顺序:

  1. MICROSOFT_TEAMS_SEARCH_MESSAGES - 使用 KQL 语法搜索 [必需]

关键参数:

  • query:KQL 搜索查询(支持 from:、sent:、attachments 和布尔逻辑)

注意事项:

  • 新发布的消息可能需要 30-60 秒才会出现在搜索结果中
  • 搜索最终一致;不要依赖它来即时确认消息是否送达
  • 使用消息列表工具实时验证消息

常见模式

团队和频道 ID 解析
1. Call MICROSOFT_TEAMS_TEAMS_LIST
2. Find team by displayName
3. Extract team id (UUID format)
4. Call MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS with team_id
5. Find channel by displayName
6. Extract channel id (19:[email protected] format)
用户解析
1. Call MICROSOFT_TEAMS_LIST_USERS
2. Filter by displayName or email
3. Extract user id (UUID format)
4. Use for meeting participants, chat members, or team operations
分页
  • 团队/用户:跟进 @odata.nextLink URL 获取下一页
  • 聊天:自动分页,最多达到 limit;使用 top 设置页面大小(最大为 50)
  • 使用 top 参数控制页面大小
  • 持续获取,直到 @odata.nextLink 不再存在

已知注意事项

身份验证和权限:

  • 不同操作需要不同的 Microsoft Graph 权限
  • 403 错误表示权限不足或无权访问团队
  • 某些操作需要在 Azure AD 租户中获得管理员同意

ID 格式:

  • 团队 ID:UUID 格式(例如,'87b0560f-fc0d-4442-add8-b380ca926707')
  • 频道 ID:Thread 格式(例如,'19:[email protected]')
  • 聊天 ID:多种格式(例如,'19:[email protected]')
  • 用户 ID:UUID 格式
  • 切勿猜测 ID;始终从列表操作中解析

速率限制:

  • Microsoft Graph 会实施请求限制
  • 429 响应中包含 Retry-After 标头
  • 每秒请求数控制在几次以内
  • 批量操作有助于减少请求总数

消息格式:

  • HTML content_type 支持富文本格式
  • 自适应卡片需要额外处理
  • 消息大小限制约为 28KB
  • 将较长内容拆分为多条消息

Quick Reference

TaskTool SlugKey Params
List teamsMICROSOFT_TEAMS_TEAMS_LISTfilter, select, top
Get team detailsMICROSOFT_TEAMS_GET_TEAMteam_id
List channelsMICROSOFT_TEAMS_TEAMS_LIST_CHANNELSteam_id, filter
Get channelMICROSOFT_TEAMS_GET_CHANNELteam_id, channel_id
Create channelMICROSOFT_TEAMS_TEAMS_CREATE_CHANNELteam_id, displayName
Post to channelMICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGEteam_id, channel_id, content
List chatsMICROSOFT_TEAMS_CHATS_GET_ALL_CHATSuser_id, limit
Create chatMICROSOFT_TEAMS_TEAMS_CREATE_CHATchatType, members, topic
Post to chatMICROSOFT_TEAMS_TEAMS_POST_CHAT_MESSAGEchat_id, content
Create meetingMICROSOFT_TEAMS_CREATE_MEETINGsubject, start_date_time, end_date_time
List usersMICROSOFT_TEAMS_LIST_USERSfilter, select, top
List team membersMICROSOFT_TEAMS_LIST_TEAM_MEMBERSteam_id
Add team memberMICROSOFT_TEAMS_ADD_MEMBER_TO_TEAMteam_id, user_id
Search messagesMICROSOFT_TEAMS_SEARCH_MESSAGESquery
Get chat messageMICROSOFT_TEAMS_GET_CHAT_MESSAGEchat_id, message_id
List joined teamsMICROSOFT_TEAMS_LIST_USER_JOINED_TEAMS(none)

Powered by Composio

评论

支持 Markdown