mcpField
M
mcp-teams

mcp-teams

本地服务
github.com/dockndevai通信协作03 天前更新

关于 mcp-teams

mcp-teams 是面向 Agent 的 Microsoft Teams MCP 服务,可读取团队、频道、聊天和消息。默认只读,只有启用更高权限模式及安全限制后才开放发送或删除操作。

主要功能

  1. 01列出团队、频道和成员
  2. 02读取频道消息及主题回复
  3. 03读取聊天及聊天消息
  4. 04在安全限制下发送频道和聊天消息
  5. 05管理员模式下软删除自己的消息

适用场景

  1. 01查看频道近期讨论和回复
  2. 02核对成员及可用频道
  3. 03发送聊天或频道更新
  4. 04在管理员限制下删除自己的消息

MCP 相关

通过 Microsoft Graph 向 MCP 客户端提供 Microsoft Teams 数据和消息操作。写入工具受配置的模式与确认机制限制。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"dockndevai-mcp-teams": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-teams"
],
"env": {
"TEAMS_CLIENT_ID": "<TEAMS_CLIENT_ID>",
"TEAMS_TENANT_ID": "<TEAMS_TENANT_ID>",
"TEAMS_CLIENT_SECRET": "<TEAMS_CLIENT_SECRET>",
"TEAMS_TOKEN": "<TEAMS_TOKEN>",
"TEAMS_MODE": "<TEAMS_MODE>",
"TEAMS_ALLOW_SEND": "<TEAMS_ALLOW_SEND>"
}
}
}
}
启动命令npx -y @dockndevai/mcp-teams
需要配置的环境变量
TEAMS_CLIENT_IDEntra (Azure AD) app (client) id. For browser sign-in, register a public client with redirect URI http://localhost.
TEAMS_TENANT_IDDirectory tenant: a tenant id, or common | organizations | consumers (default common).
TEAMS_CLIENT_SECRET密钥App secret for app-only (client-credentials) auth. Omit to use interactive browser sign-in.
TEAMS_TOKEN密钥A pre-obtained Microsoft Graph bearer token (alternative to browser or app-only auth).
TEAMS_MODEAccess mode: read-only | read-write | admin. Starts read-only; writes need read-write.
TEAMS_ALLOW_SENDSet true to permit posting messages (channel/chat send & reply). Off by default.

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

安装包
npm@dockndevai/mcp-teams0.2.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-teams

npm CI licence

一款默认安全的 Model Context Protocol 服务,用于通过 Microsoft Graph 操作 Microsoft Teams。它让 Agent 能够读取和操作 Teams——列出已加入的团队、频道和成员,读取频道消息和线程回复,读取 1:1 聊天、群组聊天及其消息;在更高权限模式下,还可以向频道发帖、在线程中回复、发送聊天消息,以及软删除消息。

**浏览器登录:**首次运行时会打开浏览器并跳转到 Microsoft 登录页面,随后缓存令牌并在后台静默刷新——服务永远不会接触你的密码。

这是 dockndevai MCP 服务套件的一部分——所有服务采用统一的治理模式。

它能为 Agent 提供什么

服务以只读模式启动(参见默认安全);只有提高模式后,才会注册更高权限的工具。

工具用途所需模式
whoami确认当前使用的帐户只读
list_teams用户已加入的团队只读
list_channels团队中的频道只读
list_team_members团队成员只读
list_channel_messages频道中的近期消息只读
get_channel_message单条频道消息及其正文只读
list_message_replies频道消息的线程只读
list_chats用户的 1:1 / 群组聊天只读
list_chat_messages聊天中的消息只读
send_channel_message向频道发帖读写 + TEAMS_ALLOW_SEND
reply_channel_message在频道线程中回复读写 + TEAMS_ALLOW_SEND
send_chat_message发送聊天消息读写 + TEAMS_ALLOW_SEND
delete_channel_message软删除自己的消息管理员 + TEAMS_ALLOW_DELETE

安装

npx -y @dockndevai/mcp-teams

你需要一个 Entra (Azure AD) 应用注册。若要使用默认的浏览器登录方式,请注册一个公共客户端并添加重定向 URI http://localhost(平台:移动和桌面应用程序),然后将其应用程序(客户端)ID用作 TEAMS_CLIENT_ID。授予委派权限 Team.ReadBasic.All、Channel.ReadBasic.All、ChannelMessage.Read.All(若要发帖,还需 ChannelMessage.Send / Chat.ReadWrite)。交互式使用无需客户端密钥。

配置

{
  "mcpServers": {
    "teams": {
      "command": "npx",
      "args": ["-y", "@dockndevai/mcp-teams"],
      "env": {
        "TEAMS_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
        "TEAMS_TENANT_ID": "common",
        "TEAMS_MODE": "read-only"
      }
    }
  }
}

首次使用时,服务会打开浏览器供你登录,并将令牌缓存到 ~/.mcp-teams/token.json(0600);后续运行会在后台静默刷新。

Claude Code / Cursor / Codex / VS Code / Windsurf 配置示例请参阅 docs/CLIENTS.md;所有受支持的变量请参阅 .env.example。

身份验证

身份验证模式会自动选择(可通过 TEAMS_AUTH 覆盖):

  • interactive(默认)——仅设置 TEAMS_CLIENT_ID。使用带 PKCE 的授权码流程和环回重定向:浏览器打开后,你只需批准一次,访问令牌和刷新令牌便会缓存到磁盘。大多数 Teams 消息 API 仅支持委派权限,因此这是主要模式。服务永远不会处理你的密码。
  • client-credentials(仅应用)——设置了 TEAMS_CLIENT_SECRET;服务会自行获取应用令牌。请注意,若未获得 Microsoft 的受保护 API 审批,若干 Teams 消息 API 不支持仅应用令牌。
  • token——将 TEAMS_TOKEN 设置为预先获取的 Graph 持有者令牌。令牌有效期由你管理。

默认安全

访问模型由 src/security.ts 强制执行,基于 Graph 令牌自身的范围/角色实施纵深防御:

  • TEAMS_MODE — read-only(默认)→ read-write → admin。只有模式允许相应功能时,才会注册工具。只读模式开放 9 个读取工具;发布消息需要 read-write;删除需要 admin。
  • TEAMS_ALLOW_SEND — 发布的消息会对其他人可见,且无法悄悄撤回,因此除 read-write 外,还需要启用此标志。
  • TEAMS_ALLOW_DELETE — 删除操作除需要 admin 模式外,还需要启用此标志。删除属于软删除(可恢复),且仅限删除你自己的消息。
  • TEAMS_TEAM_ALLOWLIST / TEAMS_PROTECTED_TEAMS — 限制可发布消息/执行管理操作的团队;标记可读取但禁止发布消息的团队。
  • 交互式确认 — 当客户端支持 MCP elicitation 时,发布和删除操作会暂停,并请求人工批准确切目标后才会执行;不支持 elicitation 的客户端则会回退到 TEAMS_ALLOW_SEND / TEAMS_ALLOW_DELETE 门控。
  • TEAMS_DRY_RUN — 验证并记录写入操作,但不执行。
  • TEAMS_AUDIT_LOG — 在 stderr 中为每个受保护操作记录一行 JSON 审计日志(默认开启)。

请参阅 SECURITY.md。

开发

npm install
npm run build
# introspect the tool list without signing in (uses a fake token, no network):
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | TEAMS_TOKEN=x node dist/index.js
npm test

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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