关于 microsoft-teams-automation
通过 Rube MCP 和 Composio 的 Microsoft Teams 工具包执行 Teams 自动化,面向需要管理团队沟通与协作的工作流。涵盖消息、会议、频道和搜索,并要求先发现实时工具架构并验证授权。
主要功能
- 01发送频道和聊天消息
- 02创建在线会议
- 03管理团队、频道和成员
- 04搜索 Teams 消息
- 05先发现工具架构并检查连接
适用场景
- 01向指定频道发布更新
- 02创建一对一或群组聊天
- 03安排 Teams 在线会议
- 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 密钥——只需添加端点即可使用。
- 确认
RUBE_SEARCH_TOOLS能正常响应,以验证 Rube MCP 已就绪 - 使用工具包
microsoft_teams调用RUBE_MANAGE_CONNECTIONS - 如果连接状态不是 ACTIVE,请按照返回的授权链接完成 Microsoft OAuth
- 运行任何工作流前,确认连接状态显示为 ACTIVE
通信与访问范围
执行写入操作前,请确认租户、团队/聊天/频道 ID 和接收者;显示名称可能存在歧义。发送消息、创建会议/聊天以及添加成员等操作,必须获得用户对相应操作的明确授权。读取/搜索请求并不代表已授权联系参与者或扩大访问范围。请保护私密内容和加入链接,遵循 Retry-After;如果写入结果不确定,请检查返回的消息/操作 ID,而不要重新发送。请使用实时发现的架构;此静态 slug/参数列表并不能证明已安装或已获授权。
核心工作流
1. 发送频道消息
适用场景:用户希望在 Teams 频道中发布消息
工具调用顺序:
MICROSOFT_TEAMS_TEAMS_LIST- 列出团队以查找目标团队 [前置步骤]MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS- 列出团队中的频道 [前置步骤]MICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGE- 发布消息 [必需]
关键参数:
team_id:团队的 UUID(来自 TEAMS_LIST)channel_id:频道 ID(来自 LIST_CHANNELS,格式为:'19:[email protected]')content:消息文本或 HTMLcontent_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. 发送聊天消息
适用场景:用户希望发送单聊或群聊消息
工具调用顺序:
MICROSOFT_TEAMS_CHATS_GET_ALL_CHATS- 列出现有聊天 [可选]MICROSOFT_TEAMS_LIST_USERS- 查找要加入新聊天的用户 [可选]MICROSOFT_TEAMS_TEAMS_CREATE_CHAT- 创建新聊天 [可选]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 会议
工具调用顺序:
MICROSOFT_TEAMS_LIST_USERS- 查找参与者用户 ID [可选]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. 管理团队和频道
使用场景:用户希望列出、创建或管理团队和频道
工具调用顺序:
MICROSOFT_TEAMS_TEAMS_LIST- 列出所有可访问的团队 [必需]MICROSOFT_TEAMS_GET_TEAM- 获取特定团队的详细信息 [可选]MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS- 列出团队中的频道 [可选]MICROSOFT_TEAMS_GET_CHANNEL- 获取频道详细信息 [可选]MICROSOFT_TEAMS_TEAMS_CREATE_CHANNEL- 创建新频道 [可选]MICROSOFT_TEAMS_LIST_TEAM_MEMBERS- 列出团队成员 [可选]MICROSOFT_TEAMS_ADD_MEMBER_TO_TEAM- 将成员添加到团队 [可选]
关键参数:
team_id:团队 UUIDchannel_id:线程格式的频道 IDfilter:OData 筛选字符串(例如:"startsWith(displayName,'Project')")select:以逗号分隔的要返回的属性
注意事项:
- TEAMS_LIST 分页:在大型租户中,请跟进 @odata.nextLink
- 如果权限不匹配,可能不会列出私有/共享频道
- 如果 team_id 或 channel_id 错误,GET_CHANNEL 会返回 404
- 始终从列表操作获取 ID;不要猜测 ID 格式
5. 搜索消息
使用场景:用户希望在 Teams 聊天和频道中查找消息
工具调用顺序:
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_LIST | filter, select, top |
| 获取团队详情 | MICROSOFT_TEAMS_GET_TEAM | team_id |
| 列出频道 | MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS | team_id, filter |
| 获取频道 | MICROSOFT_TEAMS_GET_CHANNEL | team_id, channel_id |
| 创建频道 | MICROSOFT_TEAMS_TEAMS_CREATE_CHANNEL | team_id, displayName |
| 向频道发帖 | MICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGE | team_id, channel_id, content |
| 列出聊天 | MICROSOFT_TEAMS_CHATS_GET_ALL_CHATS | user_id, limit |
| 创建聊天 | MICROSOFT_TEAMS_TEAMS_CREATE_CHAT | chatType, members, topic |
| 向聊天发帖 | MICROSOFT_TEAMS_TEAMS_POST_CHAT_MESSAGE | chat_id, content |
| 创建会议 | MICROSOFT_TEAMS_CREATE_MEETING | subject, start_date_time, end_date_time |
| 列出用户 | MICROSOFT_TEAMS_LIST_USERS | filter, select, top |
| 列出团队成员 | MICROSOFT_TEAMS_LIST_TEAM_MEMBERS | team_id |
| 添加团队成员 | MICROSOFT_TEAMS_ADD_MEMBER_TO_TEAM | team_id, user_id |
| 搜索消息 | MICROSOFT_TEAMS_SEARCH_MESSAGES | query |
| 获取聊天消息 | MICROSOFT_TEAMS_GET_CHAT_MESSAGE | chat_id, message_id |
| 列出已加入的团队 | MICROSOFT_TEAMS_LIST_USER_JOINED_TEAMS | (无) |
何时使用
本技能适用于执行概述中描述的工作流或操作。
限制
- 仅当任务明确符合上述范围时才使用本技能。
- 不要将输出视为针对特定环境的验证、测试或专家评审的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。