
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 分