关于 Microsoft 365 Teams
面向 Microsoft 365 Teams 的 MCP 服务,可通过 Microsoft Graph 操作聊天、频道、消息、同事信息和在线状态。它复用由宿主的 Microsoft 365 登录流程管理的 OAuth 凭据。
主要功能
- 01列出聊天并读取消息
- 02发送聊天和频道消息
- 03创建聊天并在线程中回复
- 04搜索聊天和频道消息
- 05浏览团队和频道
- 06读取和设置在线状态
适用场景
- 01查看项目聊天中的近期消息
- 02回复聊天或频道消息
- 03按关键词查找消息
- 04查看或更新在线状态
MCP 相关
向 MCP 客户端提供 17 个工具,用于 Teams 聊天、消息、团队、频道、用户查询、搜索和在线状态。它不提供独立身份验证工具,而是复用 Microsoft 365 邮件服务登录流程的凭据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @mindstone/mcp-server-microsoft-teamsMS_CLIENT_IDMicrosoft Entra (Azure AD) application client IDMS_CONFIG_DIRPath to the per-user Microsoft config directory (credentials/, accounts.json)MS_ACCOUNT_EMAILAccount email when running in multi-account per-instance mode (falls back to the first account in accounts.json)MS_MCP_PACKAGE_IDLogical package ID surfaced in error responsesMICROSOFT_REQUEST_TIMEOUT_MSOverride the upstream Microsoft Graph request timeout in milliseconds (max 300000 = 5 min)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
17收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| top | number | 否 | 最多返回的聊天数(默认:25,最多:50) |
详细介绍
@mindstone/mcp-server-microsoft-teams
Microsoft 365 Teams MCP 服务——通过 Microsoft Graph API 列出和读取 Teams 聊天及频道消息、发送消息和回复、发起新聊天、查找同事、搜索消息,以及读取或设置在线状态。
面向 Microsoft 365 Teams 的 Cohort 风格 MCP。它复用由 @mindstone/mcp-server-microsoft-mail 管理的 OAuth 接口,因此宿主只需登录一次,即可使用 Teams、邮件、日历、文件和 SharePoint,共用同一组凭据。
状态
- 版本: 0.3.1 · npm
- 身份验证: OAuth(由宿主协调,与
mcp-server-microsoft-mail共用)(MS_CLIENT_ID) - 工具: 17(聊天、消息、团队、频道、用户、搜索、在线状态)
- 接口类型: cloud-api
- 机器可读信息:
STATUS.json - 共享库:
@mindstone/mcp-server-microsoft-shared
为什么要开发它
2026 年 5 月移植此项目时,Microsoft 自家的 Graph MCP 产品线尚未推出独立的 Teams 服务,而当时的社区方案都将 Teams 视为独立的登录入口——每个连接器都要单独进行 OAuth 流程,并各自保存一份刷新令牌。我们将 MindstoneRebel 中打包的连接器独立出来,按 1:1 移植,使同一组由五个连接器组成的 Microsoft 365 Cohort(邮件、日历、文件、Teams、SharePoint)能够共用一组凭据、一个用于令牌持久化和请求超时的共享库包,以及宿主已能够处理的结构化 auth_required 响应。Teams 复用 @mindstone/mcp-server-microsoft-mail 的 authenticate_microsoft_account 工具,而不是自行声明该工具。部分 Teams Graph API 可能需要租户管理员批准——请参阅 Microsoft 的 Teams Graph 文档。
交互示例
“显示我与 Alice 和 Bob 的项目聊天中最近的 10 条消息。”
宿主调用的工具:
list_chats— 按参与者[email protected]和[email protected]筛选聊天。list_chat_messages— 返回已解析聊天 ID 中最新的 10 条消息。
响应(节选):
{
"chat": {
"id": "19:[email protected]",
"topic": "Project planning",
"members": ["[email protected]", "[email protected]"]
},
"messages": [
{ "id": "171...", "from": "Alice", "body": "Pushed the updated forecast", "createdDateTime": "2026-05-19T08:42:00Z" }
]
}
要求
- Node.js 20+
- npm
- 能够执行 Microsoft OAuth 流程,并将每个帐户的令牌文件写入
${MS_CONFIG_DIR}/credentials/${sanitised-email}.token.json,同时将${MS_CONFIG_DIR}/accounts.json作为索引写入的宿主应用。本服务读取这些文件;不会自行发起 OAuth 流程。
一键安装
点击按钮后,宿主将提示你填写:MS_CLIENT_ID、MS_CONFIG_DIR、MS_MCP_PACKAGE_ID、MICROSOFT_REQUEST_TIMEOUT_MS。
Claude Desktop / Claude Code / Goose / Continue.dev 手动配置(Microsoft 365 Teams)
{
"mcpServers": {
"Microsoft 365 Teams": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-microsoft-teams"
],
"env": {
"MS_CLIENT_ID": "",
"MS_CONFIG_DIR": "",
"MS_MCP_PACKAGE_ID": "Microsoft365Teams",
"MICROSOFT_REQUEST_TIMEOUT_MS": "60000"
}
}
}
}
快速开始
安装和构建
cd <path-to-repo>/connectors/microsoft-teams
npm install
npm run build
npx(发布后使用)
npx -y @mindstone/mcp-server-microsoft-teams
本地
node dist/index.js
配置
此服务与负责 Microsoft 365 OAuth 流程的宿主应用一同运行。宿主会将凭据写入磁盘;此服务会读取这些凭据。
必需的环境变量
| 名称 | 描述 |
|---|---|
MS_CLIENT_ID | Microsoft Entra(Azure AD)应用客户端 ID。 |
MS_CONFIG_DIR | 每用户 Microsoft 配置目录的路径(credentials/、accounts.json)。 |
可选的环境变量
| 名称 | 描述 | 默认值 |
|---|---|---|
MS_ACCOUNT_EMAIL | 以多账户实例模式运行时的账户邮箱。 | accounts.json 中的第一个账户。 |
MS_MCP_PACKAGE_ID | 错误响应中显示的逻辑包 ID。 | Microsoft365Teams |
MICROSOFT_REQUEST_TIMEOUT_MS | 覆盖上游 Microsoft Graph 请求超时时间(最大 300000 毫秒)。 | 60000 |
MICROSOFT_DISABLE_REFRESH | 设为 1 可在此接口上禁用令牌刷新。工具将以结构化的 auth_required 响应安全失败,以便宿主执行重新授权。云端接口会将其设为 1。 | 未设置 |
宿主配置示例
Claude Desktop / Cursor
{
"mcpServers": {
"Microsoft365Teams": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-microsoft-teams"],
"env": {
"MS_CLIENT_ID": "your-entra-application-client-id",
"MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"
}
}
}
}
请先通过 @mindstone/mcp-server-microsoft-mail 登录并调用 authenticate_microsoft_account;随后 Teams 工具会复用其写入 ${MS_CONFIG_DIR}/ 的凭据。
本地开发(无需发布到 npm)
{
"mcpServers": {
"Microsoft365Teams": {
"command": "node",
"args": ["<path-to-repo>/connectors/microsoft-teams/dist/index.js"],
"env": {
"MS_CLIENT_ID": "your-entra-application-client-id",
"MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"
}
}
}
}
工具(17)
| 工具 | 描述 |
|---|---|
list_chats | 列出最近的 Teams 聊天。 |
get_chat | 获取特定聊天的详细信息。 |
list_chat_messages | 列出聊天中的近期消息。 |
send_chat_message | 向聊天发送消息。 |
reply_to_message | 回复特定聊天消息,创建串线回复。 |
compose_chat_message | 打开内嵌可编辑的撰写表单;用户点击发送后,表单会通过 send_chat_message 发布消息。 |
find_user | 按显示名称或电子邮件查找人员。需要 User.ReadBasic.All。 |
create_chat | 按成员电子邮件/用户 ID 创建 1:1 或群组聊天,并返回新聊天 ID。 |
search_messages | 按关键词搜索聊天和频道消息。 |
list_teams | 列出你所属的团队。 |
list_channels | 列出团队中的频道。 |
list_channel_messages | 列出频道中的近期消息。需要 ChannelMessage.Read.All。 |
send_channel_message | 向频道发布新消息。需要 ChannelMessage.Send。 |
reply_to_channel_message | 回复现有频道消息。需要 ChannelMessage.Send。 |
get_presence | 获取你当前的在线状态。 |
get_user_presence | 获取同事的在线状态。需要 Presence.Read.All。 |
set_presence | 设置你自己的在线状态,也可设置有限时长。需要 Presence.ReadWrite。 |
某些 Teams Graph API 可能需要租户管理员批准。标注了所需权限的工具会预先检查已连接帐户的令牌;如果缺少权限,则会提供可行的重新连接指引(根据 Microsoft 的托管授权政策,在大多数租户中,ChannelMessage.Read.All 需要管理员授权)。
安全说明
- 本身不提供身份验证工具;登录委托给
@mindstone/mcp-server-microsoft-mail,使该工具组共用一个 OAuth 接入点。 - 每个工具的 Graph 调用都会使用组合后的调用方和工具组超时信号运行。
许可证
FSL-1.1-MIT — Functional Source License,1.1 版,未来采用 MIT 许可证。可免费用于非竞争用途;在 LICENSE 中规定的转换日期重新授权为 MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。