mcpField
M
microsoft-teams-automation

microsoft-teams-automation

github.com/sickn33生产力48.8k66 次安装今天更新
代码仓库

关于 microsoft-teams-automation

通过 Rube MCP 和 Composio 的 Microsoft Teams 工具包执行 Teams 自动化,面向需要管理团队沟通与协作的工作流。涵盖消息、会议、频道和搜索,并要求先发现实时工具架构并验证授权。

主要功能

  1. 01发送频道和聊天消息
  2. 02创建在线会议
  3. 03管理团队、频道和成员
  4. 04搜索 Teams 消息
  5. 05先发现工具架构并检查连接

适用场景

  1. 01向指定频道发布更新
  2. 02创建一对一或群组聊天
  3. 03安排 Teams 在线会议
  4. 04查找聊天与频道中的消息

MCP 相关

该技能通过 Rube MCP 调用 Composio 的 Microsoft Teams 工具包。客户端需连接 Rube MCP,并完成 Microsoft Teams 身份验证。

安装

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

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

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

详细介绍

通过 Rube MCP 自动化 Microsoft Teams

通过 Rube MCP 使用 Composio 的 Microsoft Teams 工具包自动执行 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

通信与访问范围

执行写入操作前,请确认租户、团队/聊天/频道 ID 和接收者;显示名称可能存在歧义。发送消息、创建会议/聊天以及添加成员等操作,必须获得用户对相应操作的明确授权。读取/搜索请求并不代表已授权联系参与者或扩大访问范围。请保护私密内容和加入链接,遵循 Retry-After;如果写入结果不确定,请检查返回的消息/操作 ID,而不要重新发送。请使用实时发现的架构;此静态 slug/参数列表并不能证明已安装或已获授权。

核心工作流

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;请使用指数退避(1s/2s/4s)
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 用户 ID(GUID),不能使用电子邮件地址
  • 此操作会创建独立会议,不会关联到日历事件
  • 如需创建关联日历的会议,请使用 is_online_meeting=true 的 OUTLOOK_CALENDAR_CREATE_EVENT
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:线程格式的频道 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:、附件和布尔逻辑)

注意事项:

  • 新发布的消息可能需要 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 获取下一页
  • 聊天:自动分页,最多到达指定上限;使用 top 设置每页大小(最大 50)
  • 使用 top 参数控制每页大小
  • 持续获取,直到 @odata.nextLink 不再存在

已知注意事项

身份验证和权限:

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

ID 格式:

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

速率限制:

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

消息格式:

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

快速参考

任务工具 Slug关键参数
列出团队MICROSOFT_TEAMS_TEAMS_LISTfilter, select, top
获取团队详情MICROSOFT_TEAMS_GET_TEAMteam_id
列出频道MICROSOFT_TEAMS_TEAMS_LIST_CHANNELSteam_id, filter
获取频道MICROSOFT_TEAMS_GET_CHANNELteam_id, channel_id
创建频道MICROSOFT_TEAMS_TEAMS_CREATE_CHANNELteam_id, displayName
向频道发帖MICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGEteam_id, channel_id, content
列出聊天MICROSOFT_TEAMS_CHATS_GET_ALL_CHATSuser_id, limit
创建聊天MICROSOFT_TEAMS_TEAMS_CREATE_CHATchatType, members, topic
向聊天发帖MICROSOFT_TEAMS_TEAMS_POST_CHAT_MESSAGEchat_id, content
创建会议MICROSOFT_TEAMS_CREATE_MEETINGsubject, start_date_time, end_date_time
列出用户MICROSOFT_TEAMS_LIST_USERSfilter, select, top
列出团队成员MICROSOFT_TEAMS_LIST_TEAM_MEMBERSteam_id
添加团队成员MICROSOFT_TEAMS_ADD_MEMBER_TO_TEAMteam_id, user_id
搜索消息MICROSOFT_TEAMS_SEARCH_MESSAGESquery
获取聊天消息MICROSOFT_TEAMS_GET_CHAT_MESSAGEchat_id, message_id
列出已加入的团队MICROSOFT_TEAMS_LIST_USER_JOINED_TEAMS(无)

何时使用

本技能适用于执行概述中描述的工作流或操作。

限制

  • 仅当任务明确符合上述范围时才使用本技能。
  • 不要将输出视为针对特定环境的验证、测试或专家评审的替代品。
  • 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。

评论

支持 Markdown