Mcp Teams

io.github.dockndevai由 GitHub 账号 dockndevai 发布v0.2.0更新于 Oct 24, 2026

Read Microsoft Teams teams, channels, chats and messages, and post/reply/send, safe by default.

已验证STDIO仅桌面效率与工作流沟通与协作

概览

AI 生成的概览

一个默认安全的本地 MCP 服务器,让助手读取 Microsoft Teams 的团队、频道、聊天和消息,并可选地发帖、回复或软删除。

可以做什么
确认当前登录账号,列出已加入的团队、频道和团队成员,并默认以只读方式读取频道近期消息、单条消息和话题回复。列出用户的单聊和群聊并读取其中的消息。在读写模式并开启发送后,可向频道发帖、在话题中回复和发送聊天消息。在管理员模式并开启删除后,可软删除自己发送的消息。
适用场景
适合让助手根据 Teams 对话回答问题、汇总频道和聊天内容,或在明确受控的权限下在 Teams 中发帖和回复。也适合希望先只读、之后才主动提升权限进行写入的用户。
运行要求
通过 npx 在本地运行,需要 Node.js。需要注册 Entra(Azure AD)应用:TEAMS_CLIENT_ID,以及 TEAMS_TENANT_ID(默认 common),并授予 Team.ReadBasic.All、Channel.ReadBasic.All、ChannelMessage.Read.All 等委托权限,发帖还需发送和聊天相关权限。默认使用浏览器交互登录并在磁盘缓存令牌;也可用 TEAMS_CLIENT_SECRET 做应用身份认证,或用 TEAMS_TOKEN 提供预先获取的 Graph 令牌。需要访问 Microsoft Graph 的网络。
安装前请注意
发帖对他人可见且无法悄悄撤回,因此需要读写模式加 TEAMS_ALLOW_SEND;删除需要管理员模式加 TEAMS_ALLOW_DELETE,且只作用于自己的消息。TEAMS_CLIENT_SECRET 和 TEAMS_TOKEN 属于机密,缓存的令牌会写入磁盘。应用身份令牌可能无法访问部分 Teams 消息接口。可选的允许列表、试运行和审计日志用于限制写入。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Mcp Teams,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

mcp-teams

[npm] [CI] [licence]

A safe-by-default Model Context Protocol server for Microsoft Teams, over Microsoft Graph. It lets an agent read and operate Teams — list joined teams, channels and members, read channel messages and threaded replies, read 1:1/group chats and their messages, and (in higher modes) post to channels, reply in threads, send chat messages, and soft-delete a message.

Browser sign-in: on first run it opens your browser to the Microsoft sign-in page, then caches the token and refreshes it silently — the server never sees your password.

Part of the dockndevai MCP server suite — one governance model across all of them.

What it gives an agent

The server starts read-only (see Safe by default); higher-capability tools are only registered when you raise the mode.

ToolForNeeds mode
whoamiconfirm which account is in useread-only
list_teamsteams the user has joinedread-only
list_channelschannels in a teamread-only
list_team_membersmembers of a teamread-only
list_channel_messagesrecent messages in a channelread-only
get_channel_messageone channel message + bodyread-only
list_message_repliesa channel message's threadread-only
list_chatsthe user's 1:1 / group chatsread-only
list_chat_messagesmessages in a chatread-only
send_channel_messagepost to a channelread-write + TEAMS_ALLOW_SEND
reply_channel_messagereply in a channel threadread-write + TEAMS_ALLOW_SEND
send_chat_messagesend a chat messageread-write + TEAMS_ALLOW_SEND
delete_channel_messagesoft-delete your own messageadmin + TEAMS_ALLOW_DELETE

Install

bash
npx -y @dockndevai/mcp-teams

You need an Entra (Azure AD) app registration. For the default browser sign-in, register a public client and add the redirect URI http://localhost (platform: Mobile and desktop applications), then use its Application (client) ID as TEAMS_CLIENT_ID. Grant delegated Team.ReadBasic.All, Channel.ReadBasic.All, ChannelMessage.Read.All (and ChannelMessage.Send / Chat.ReadWrite to post). No client secret is needed for interactive use.

Configure

json
{  "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"      }    }  }}

On first use the server opens your browser to sign in and caches the token at ~/.mcp-teams/token.json (0600); later runs refresh silently.

See docs/CLIENTS.md for Claude Code / Cursor / Codex / VS Code / Windsurf snippets, and .env.example for every supported variable.

Authentication

Auth mode is chosen automatically (override with TEAMS_AUTH):

  • interactive (default) — only TEAMS_CLIENT_ID set. Authorization-code + PKCE with a loopback redirect: the browser opens, you approve once, and the access + refresh token are cached on disk. Most Teams messaging APIs are delegated-only, so this is the primary mode. The server never handles your password.
  • client-credentials (app-only) — TEAMS_CLIENT_SECRET present; the server fetches an app token itself. Note that several Teams message APIs are not available to app-only tokens without protected-API approval from Microsoft.
  • token — TEAMS_TOKEN set to a pre-obtained Graph bearer token. You manage its lifetime.

Safe by default

The access model is enforced by src/security.ts — defence in depth on top of the Graph token's own scopes/roles:

  • TEAMS_MODE — read-only (default) → read-write → admin. A tool is registered only if the mode allows its capability. Read-only exposes the 9 read tools; posting needs read-write; deletes need admin.
  • TEAMS_ALLOW_SEND — posting a message is visible to others and can't be silently un-posted, so on top of read-write it also requires this flag.
  • TEAMS_ALLOW_DELETE — deletes require this flag on top of admin mode. Deletes are soft-deletes (recoverable), and only your own messages.
  • TEAMS_TEAM_ALLOWLIST / TEAMS_PROTECTED_TEAMS — confine which teams can be posted to / moderated; mark teams that may be read but never posted to.
  • Interactive confirmation — when the client supports MCP elicitation, posting and deleting pause and ask the human to approve the exact target before running; clients that can't elicit fall back to the TEAMS_ALLOW_SEND / TEAMS_ALLOW_DELETE gates.
  • TEAMS_DRY_RUN — validate and log writes without executing them.
  • TEAMS_AUDIT_LOG — a JSON audit line per guarded operation, on stderr (default on).

See SECURITY.md.

Developing

bash
npm installnpm 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.jsnpm test

Licence

MIT

来源:README.md,提交 684d1de

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

2
  1. v0.2.0最新Sep 29, 2026
  2. v0.1.0Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分