Microsoft 365 Teams

io.github.mindstone由 GitHub 帳號 mindstone 發布v0.3.3更新於 Nov 7, 2026

Microsoft 365 Teams via Graph: list chats, read/send messages, list teams/channels, presence.

發布方自己的服務:Microsoft Learn MCP

已驗證STDIO僅桌面效率與工作流溝通與協作

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理透過 Microsoft Graph 讀取、搜尋與傳送 Teams 聊天及頻道訊息、查詢同事,並檢視或設定線上狀態。

可以做什麼
  • 列出並檢視聊天,包括聊天詳細資料與最近的聊天訊息
  • 傳送聊天訊息、在對話中回覆,並在傳送前開啟可編輯的撰寫表單
  • 依關鍵字搜尋聊天與頻道訊息,並依姓名或電子郵件查詢同事
  • 建立新的單聊或群組聊天並回傳新的聊天 ID
  • 列出團隊與頻道、讀取頻道訊息,並在頻道張貼或回覆訊息
  • 檢視自己或同事的線上狀態,並設定自己的狀態(可限定持續時間)
適用情境
當你希望助理直接在 Microsoft Teams 中工作時適用:追蹤聊天或頻道、尋找同事、草擬並傳送訊息,或檢視與設定線上狀態。適合已為同一帳號處理 Microsoft 365 登入的宿主環境。
執行需求
透過 npx 在本機執行,需要 Node.js 20+ 與 npm。需要 MS_CLIENT_ID(Microsoft Entra 應用程式用戶端 ID)與 MS_CONFIG_DIR(存放憑證與 accounts.json 的使用者設定目錄)。它本身不執行 OAuth:須由宿主應用程式完成登入並寫入權杖檔案,通常透過搭配的 Microsoft 郵件伺服器的 authenticate_microsoft_account 工具。選用:MS_ACCOUNT_EMAIL、MS_MCP_PACKAGE_ID、MICROSOFT_REQUEST_TIMEOUT_MS。
安裝前請注意
它會從 MS_CONFIG_DIR 讀取權杖檔案,該目錄含有敏感的 Microsoft 憑證,應妥善保護。傳送、回覆與建立聊天會向同事發出真實訊息,set_presence 會改變你對外顯示的狀態。多項工具需要可能須經租用戶系統管理員核准的 Graph 權限,缺少權限時部分呼叫會回傳重新連線的提示。訊息內容與目錄查詢會傳送至 Microsoft Graph。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Microsoft 365 Teams,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@mindstone/mcp-server-microsoft-teams

[npm version] [License: FSL-1.1-MIT]

Microsoft 365 Teams MCP server — list and read Teams chats and channel messages, send messages and replies, start new chats, look up colleagues, search messages, and read or set presence via the Microsoft Graph API.

Cohort-style Microsoft 365 Teams MCP. Reuses the OAuth surface owned by @mindstone/mcp-server-microsoft-mail so the host signs in once and gets Teams plus mail plus calendar plus files plus SharePoint from the same credentials.

Status

Why this exists

When we ported this in May 2026, Microsoft's own Graph MCP lineup did not yet ship a stand-alone Teams server, and the community options at the time treated Teams as its own login surface — every connector ran a separate OAuth dance and stored its own copy of the refresh token. We pulled the bundled connector out of MindstoneRebel as a 1:1 port so that the same five-connector Microsoft 365 cohort (mail, calendar, files, teams, SharePoint) shares a single set of credentials, a single shared-library package for token persistence and request timeouts, and the structured auth_required envelope the host already knows how to recover from. Teams reuses @mindstone/mcp-server-microsoft-mail's authenticate_microsoft_account tool rather than declaring its own. Some Teams Graph APIs may require tenant admin approval — see Microsoft's Teams Graph docs.

Example interaction

"Show me my last 10 messages in the project chat with Alice and Bob."

Tools the host calls:

  1. list_chats — filters chats by participants [email protected] and [email protected].
  2. list_chat_messages — returns the latest 10 messages from the resolved chat ID.

Response (trimmed):

json
{  "chat": {    "id": "19:[email protected]",    "topic": "Project planning",    "members": ["[email protected]", "[email protected]"]  },  "messages": [    { "id": "171...", "from": "Alice", "body": "Pushed the updated forecast", "createdDateTime": "2026-05-19T08:42:00Z" }  ]}

Requirements

  • Node.js 20+
  • npm
  • A host application that performs the Microsoft OAuth flow and writes per-account token files into ${MS_CONFIG_DIR}/credentials/${sanitised-email}.token.json and an ${MS_CONFIG_DIR}/accounts.json index. This server reads those files; it does not initiate OAuth itself.

One-click install

[Add to Cursor] [Add to VS Code] [Add to VS Code Insiders]

After clicking the button, your host will prompt you to fill: MS_CLIENT_ID, MS_CONFIG_DIR, MS_MCP_PACKAGE_ID, MICROSOFT_REQUEST_TIMEOUT_MS.

Manual config for Claude Desktop / Claude Code / Goose / Continue.dev (Microsoft 365 Teams)
json
{  "mcpServers": {    "Microsoft 365 Teams": {      "command": "npx",      "args": [        "-y",        "@mindstone/mcp-server-microsoft-teams"      ],      "env": {        "MS_CLIENT_ID": "",        "MS_CONFIG_DIR": "",        "MS_MCP_PACKAGE_ID": "Microsoft365Teams",        "MICROSOFT_REQUEST_TIMEOUT_MS": "60000"      }    }  }}

Quick Start

Install & build

bash
cd <path-to-repo>/connectors/microsoft-teamsnpm installnpm run build

npx (once published)

bash
npx -y @mindstone/mcp-server-microsoft-teams

Local

bash
node dist/index.js

Configuration

This server runs alongside a host application that owns the Microsoft 365 OAuth flow. The host writes credentials to disk; this server reads them.

Required environment variables

NameDescription
MS_CLIENT_IDMicrosoft Entra (Azure AD) application client ID.
MS_CONFIG_DIRPath to the per-user Microsoft config directory (credentials/, accounts.json).

Optional environment variables

NameDescriptionDefault
MS_ACCOUNT_EMAILAccount email when running in multi-account per-instance mode.First account in accounts.json.
MS_MCP_PACKAGE_IDLogical package ID surfaced in error responses.Microsoft365Teams
MICROSOFT_REQUEST_TIMEOUT_MSOverride the upstream Microsoft Graph request timeout (max 300000 ms).60000
MICROSOFT_DISABLE_REFRESHSet to 1 to disable token refresh on this surface. Tools fail closed with the structured auth_required response so the host can drive reauth. Cloud surfaces set this to 1.unset

Host configuration examples

Claude Desktop / Cursor

json
{  "mcpServers": {    "Microsoft365Teams": {      "command": "npx",      "args": ["-y", "@mindstone/mcp-server-microsoft-teams"],      "env": {        "MS_CLIENT_ID": "your-entra-application-client-id",        "MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"      }    }  }}

Sign in via @mindstone/mcp-server-microsoft-mail's authenticate_microsoft_account first; the Teams tools then reuse the credentials it writes to ${MS_CONFIG_DIR}/.

Local development (no npm publish needed)

json
{  "mcpServers": {    "Microsoft365Teams": {      "command": "node",      "args": ["<path-to-repo>/connectors/microsoft-teams/dist/index.js"],      "env": {        "MS_CLIENT_ID": "your-entra-application-client-id",        "MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"      }    }  }}

Tools (17)

ToolDescription
list_chatsList recent Teams chats.
get_chatGet details about a specific chat.
list_chat_messagesList recent messages from a chat.
send_chat_messageSend a message to a chat.
reply_to_messageReply to a specific chat message, creating a threaded reply.
compose_chat_messageOpen an inline editable compose form before sending; the form posts via send_chat_message when the user clicks Send.
find_userLook up people by display name or email. Requires User.ReadBasic.All.
create_chatCreate a 1:1 or group chat by member email/user ID and return the new chat ID.
search_messagesSearch chat and channel messages by keyword.
list_teamsList teams you are a member of.
list_channelsList channels in a team.
list_channel_messagesList recent messages in a channel. Requires ChannelMessage.Read.All.
send_channel_messagePost a new message to a channel. Requires ChannelMessage.Send.
reply_to_channel_messageReply to an existing channel message. Requires ChannelMessage.Send.
get_presenceGet your current presence status.
get_user_presenceGet a colleague's presence status. Requires Presence.Read.All.
set_presenceSet your own presence status, optionally for a limited duration. Requires Presence.ReadWrite.

Some Teams Graph APIs may require tenant admin approval. Tools marked with a required permission check the connected account's token up front and return actionable reconnect guidance when the permission is missing (under Microsoft's managed consent policy, ChannelMessage.Read.All is admin-consent-gated in most tenants).

Compose send status

In hosts that remember send status, sending a message closes its other compose copies. Reloaded cards show "Message sent" with the send time and hide Reopen because they do not have the sent contents. The copy used to send keeps its posted contents in a read-only sent view, including when confirmation follows a lost reply. After an error or block reply, a later sent status from another copy shows only the sent bar, without this copy's contents. While a send is in progress, other copies show “Sending…” with Send, Retry, Cancel and Save draft (where available) disabled. Replies to this copy’s own requests keep those controls locked until the other send ends. If the send ends without a confirmed outcome, those copies return to editing and keep any earlier uncertainty. A copy waiting for its own Send reply keeps its sending view. Sent views stay read-only, and uncertainty remains until a send is confirmed. After an error or missing confirmation, check whether the message was sent before using Retry; the notice stays visible while editing and returns on Reopen. Collapsing the card does not resolve that uncertainty. Policy-block explanations stay visible while editing with Send disabled. Cancel says "Nothing sent" only when no send may have gone through, including a not-dispatched failure before the request left the device.

When sending is blocked by your settings, your organization or security policy, the card hides Retry and keeps Cancel. If the server is stopped, Retry remains available.

Send requests declare _meta: { 'mcp-app/cardOutcome': 'sent' } to supporting hosts.

Security notes

  • No authentication tool of its own; sign-in is delegated to @mindstone/mcp-server-microsoft-mail so the cohort has a single OAuth surface.
  • Per-tool Graph calls run under a composed caller + cohort timeout signal.

Licence

FSL-1.1-MIT — Functional Source License, Version 1.1, with MIT future licence. Free for non-competing use; relicenses to MIT on the converter date in LICENSE.

來源:connectors/microsoft-teams/README.md,提交 5510a4b

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.3.2Nov 4, 2026
  2. v0.3.1Sep 16, 2026

評分

已滿足適用檢查項的 80%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。

其他 Microsoft 整合