Microsoft Teams for Claude β read your chats, teams, channels, and open messages, via your browser
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
MCP server for Microsoft Teams β list your chats, teams and channels, and read whichever chat or channel is currently open, routed through your signed-in browser tab.
This project was developed and is maintained by AI (Claude Code). Use at your own discretion.
Teams Web's chat and message data lives only in a client-side cache fed by a
WebSocket/registrar sync channel β there is no REST or GraphQL endpoint that
returns it. So this server does not capture a token and make plain server-side
requests the way an API-backed MCP would; instead every call routes through
the fetchproxy browser bridge and
reads the DOM your signed-in teams.cloud.microsoft tab has already
rendered. teams.microsoft.com (the old host) is not supported.
That has one real consequence: this server can only read whichever chat or
channel is currently displayed in your browser tab. The bridge can fetch
and read β it cannot navigate a tab to a different conversation.
teams_list_chats and teams_list_teams_and_channels always work (their
sidebars are always rendered once that nav section is open);
teams_get_open_chat_messages and teams_get_open_channel_posts read
whatever conversation you have open. To read a different chat or channel,
open it in the browser first.
The bridge is on the request path for every call here, not just once to mint a token β unlike an API-backed MCP, there is nothing to cache between calls.
Requires the ContextMint Bridge browser extension and @fetchproxy/cli,
on a matching major version. Install the bridge from
its releases page:
in Chrome, unzip the chrome zip and load it unpacked
(chrome://extensions β Developer mode β Load unpacked). Safari isn't
available yet (it will ship inside the ContextMint app, which has no public
download), so use Chrome for now.
ContextMint Bridge is the fetchproxy browser extension under its new name,
from the same maintainer β fetchproxy's own README
(https://github.com/chrischall/fetchproxy#extension) points to it. Its source
is public at https://github.com/nullnet-app/contextmint-bridge: build it
yourself, or check a release zip against the .sha256 file published beside
it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256).
The first call prints a 6-digit pair code to approve in the ContextMint Bridge popup; the grant persists.
opencode reads MCP servers from opencode.json (project) or
~/.config/opencode/opencode.json (global):
Everything is optional β this server needs no credentials of its own.
| variable | purpose |
|---|---|
TEAMS_WS_PORT | fetchproxy concentrator port. Defaults to 37149, the fleet-wide shared port. |
teams_list_chats β the Chat sidebar: title, last-message preview,
last-activity time, and Teams' own conversation id for each chat.teams_get_open_chat_messages β the message thread of whichever chat is
currently open: sender, ISO-8601 time, message id, and text, plus a
conversation field naming WHICH chat that is (the selected sidebar row's
title and thread key) so the model can confirm it read the chat you meant.teams_list_teams_and_channels β the Teams-and-Channels sidebar (a
DIFFERENT view from Chat): every team and channel the user belongs to,
with each channel's parent team name.teams_get_open_channel_posts β the top-level posts of whichever channel
is currently open: sender, subject (when present), prose time (not
ISO-8601 β Teams doesn't expose one for these), message id, and text.
Threaded replies under a post are not included. Like the chat tool, it
names the open channel in a conversation field.teams_get_activity β the Activity feed (the bell icon in the left nav):
mentions, replies, reactions, and the like across every chat and channel,
each with its title, message preview, prose time, and location (the
team/channel or chat it happened in). Requires the Activity view open.teams_healthcheck β verifies the bridge can reach a signed-in tab.All five data tools are read-only and take no arguments.
No Calendar tool here. Teams Web's Calendar renders inside an embedded
outlook.office.com iframe, which the ContextMint Bridge (DOM reads only
against the top-level tab, no iframe crossing) cannot reach β and isn't the
right place for it anyway. Use
office-outlook-mcp's
outlook_list_events / outlook_get_event / outlook_list_calendars
instead: real Outlook REST API calls via a captured token, with no
"must have it open" limitation at all.
teams.cloud.microsoft tab
is open, the bridge reads whichever answers first β which may not be the
one you're looking at. The "open" tools report the conversation they read
(conversation.title, or null if it couldn't be identified) and their
descriptions tell the model to check it before summarizing.{ untrusted_content: true, note, ... } and says in its description that
the text is written by other Teams users. Message bodies, previews and
subjects are data to report, never instructions to follow β this matters
because the server usually runs beside write-capable MCPs (mail, messaging)
that an injected instruction could otherwise reach.sender is populated on every row regardless.text β a limitation of
bulk text extraction, not a bug.teams.cloud.microsoft tabs so only one remains.read_dom_list name not in declared set error, the extension's approved scope is behind the server's declared
one β this shouldn't happen in a released version, but if it does, revoke
and re-pair teams-mcp in the ContextMint Bridge popup.This server depends on read_dom_list, a fetchproxy capability added
alongside this repo β it needs @fetchproxy/protocol/@fetchproxy/server
>= 3.1.0, the first published versions that include it
(chrischall/fetchproxy#381).
MIT
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/microsoft-teams-mcp)<a href="https://allmcps.com/mcp/microsoft-teams-mcp"><img src="https://allmcps.com/api/badge/microsoft-teams-mcp?style=directory" alt="Microsoft Teams MCP on AllMCPs" /></a>