The server reads and posts only in the channels of the TEAM_ID you configure, defaulting to TEAMS_CHANNEL_ID — so the blast radius of pointing an assistant at your workspace is one channel, not the tenant. The cost is the setup: the Entra application, bot registration and Teams app publishing are all real steps, and the repository's setup document is a map rather than a script.
A Teams integration that reads and writes messages in one channel: start threads, reply to them, mention members, and list who is in the team.
- Start a thread in a channel with a title and contents, mentioning users
- Reply into an existing thread, mentioning users
- Read the replies on a thread
- Read channel messages
- List the members of the channel's team
Python 3.12 and uv. Five environment variables: TEAMS_APP_ID, TEAMS_APP_PASSWORD, TEAMS_APP_TENANT_ID, TEAM_ID and TEAMS_CHANNEL_ID. Behind those sits real Azure setup — a Microsoft Entra ID application with a client secret, an Azure Bot registered against it and connected to the Teams channel, and a Teams app installed into the group. No web app needs deploying. Runs over stdio by default, or streamable-http; a prebuilt image is published on ghcr.io.
One command plus a key — docker pull ghcr.io/inditextech/mcp-teams-server:latest, then supply credentials
