
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.
概览
一个默认安全的本地 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 的网络。
安装
在 SourceWeft 中
- 打开 控制台中的 Mcp Teams,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
mcp-teams
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.
Install
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
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_IDset. 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_SECRETpresent; 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_TOKENset 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 needsread-write; deletes needadmin.TEAMS_ALLOW_SEND— posting a message is visible to others and can't be silently un-posted, so on top ofread-writeit also requires this flag.TEAMS_ALLOW_DELETE— deletes require this flag on top ofadminmode. 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_DELETEgates. 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
Licence
MIT
来源:README.md,提交 684d1de
工具
0版本历史
2- v0.2.0最新Sep 29, 2026
- v0.1.0Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分