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 分