mcpField
M
Microsoft 365 Teams

Microsoft 365 Teams

本地服务
github.com/mindstone通信协作13今天更新

关于 Microsoft 365 Teams

面向 Microsoft 365 Teams 的 MCP 服务,可通过 Microsoft Graph 操作聊天、频道、消息、同事信息和在线状态。它复用由宿主的 Microsoft 365 登录流程管理的 OAuth 凭据。

主要功能

  1. 01列出聊天并读取消息
  2. 02发送聊天和频道消息
  3. 03创建聊天并在线程中回复
  4. 04搜索聊天和频道消息
  5. 05浏览团队和频道
  6. 06读取和设置在线状态

适用场景

  1. 01查看项目聊天中的近期消息
  2. 02回复聊天或频道消息
  3. 03按关键词查找消息
  4. 04查看或更新在线状态

MCP 相关

向 MCP 客户端提供 17 个工具,用于 Teams 聊天、消息、团队、频道、用户查询、搜索和在线状态。它不提供独立身份验证工具,而是复用 Microsoft 365 邮件服务登录流程的凭据。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mindstone-mcp-server-microsoft-teams": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-microsoft-teams"
],
"env": {
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_CONFIG_DIR": "<MS_CONFIG_DIR>",
"MS_ACCOUNT_EMAIL": "<MS_ACCOUNT_EMAIL>",
"MS_MCP_PACKAGE_ID": "<MS_MCP_PACKAGE_ID>",
"MICROSOFT_REQUEST_TIMEOUT_MS": "<MICROSOFT_REQUEST_TIMEOUT_MS>"
}
}
}
}
启动命令npx -y @mindstone/mcp-server-microsoft-teams
需要配置的环境变量
MS_CLIENT_IDMicrosoft Entra (Azure AD) application client ID
MS_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 responses
MICROSOFT_REQUEST_TIMEOUT_MSOverride the upstream Microsoft Graph request timeout in milliseconds (max 300000 = 5 min)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@mindstone/mcp-server-microsoft-teams0.3.1

工具

17

收录的工具列表 · 更新于 2 周前

参数类型必填说明
topnumber否最多返回的聊天数(默认:25,最多:50)

详细介绍

@mindstone/mcp-server-microsoft-teams

npm version License: FSL-1.1-MIT

Microsoft 365 Teams MCP 服务——通过 Microsoft Graph API 列出和读取 Teams 聊天及频道消息、发送消息和回复、发起新聊天、查找同事、搜索消息,以及读取或设置在线状态。

面向 Microsoft 365 Teams 的 Cohort 风格 MCP。它复用由 @mindstone/mcp-server-microsoft-mail 管理的 OAuth 接口,因此宿主只需登录一次,即可使用 Teams、邮件、日历、文件和 SharePoint,共用同一组凭据。

状态

为什么要开发它

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 条消息。”

宿主调用的工具:

  1. list_chats — 按参与者 [email protected] 和 [email protected] 筛选聊天。
  2. 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 流程。

一键安装

添加到 Cursor 添加到 VS Code 添加到 VS Code Insiders

点击按钮后,宿主将提示你填写: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_IDMicrosoft 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。