Microsoft Teams has 320 million monthly active users. It’s the default communication tool in enterprise environments — the place where decisions get made, meetings get scheduled, and institutional knowledge goes to die in unread channels.
Unlike Discord (which still has no official MCP server), Microsoft shipped one. The official Work IQ Teams server, part of the microsoft/mcp catalog (2,800 stars across all Microsoft MCP servers), provides 24 tools for full CRUD operations on chats, channels, teams, and messages. Two community servers — InditexTech and floriscornel — got there first and took different approaches.
Here’s how the landscape breaks down.
The Contenders
| Server | Stars | Language | Tools | Commits | License | Auth |
|---|---|---|---|---|---|---|
| Microsoft Work IQ Teams | 2,800* | C# | 24 | 1,479* | — | OAuth (Entra ID) |
| InditexTech/mcp-teams-server | 358 | Python | 5 | 141 | Apache-2.0 | Entra ID app creds |
| floriscornel/teams-mcp | 63 | TypeScript | 25 | 138 | MIT | OAuth 2.0 (Graph) |
*Stars and commits are for the entire microsoft/mcp catalog, not the Teams server alone.
All three use Microsoft Graph API under the hood. All three require Azure AD (Entra ID) credentials. None can avoid the Microsoft identity stack — that’s both a security feature and a setup hurdle.
Microsoft Work IQ Teams — The Official Server
Microsoft’s own Teams MCP server is part of the broader “Microsoft Agent 365” platform and the microsoft/mcp catalog alongside servers for Mail, Calendar, Copilot Chat, Azure DevOps, Fabric, and more.
24 tools across 2 categories:
Chat tools (12):
mcp_graph_chat_createChat— Create one-on-one or group chatsmcp_graph_chat_getChat/mcp_graph_chat_listChats— Retrieve chat metadatamcp_graph_chat_postMessage— Send messages (plain text only)mcp_graph_chat_updateChat— Update chat properties (topic for group chats)mcp_graph_chat_deleteChat— Soft-delete chatsmcp_graph_chat_getChatMessage/mcp_graph_chat_listChatMessages— Read messages with OData filteringmcp_graph_chat_updateChatMessage/mcp_graph_chat_deleteChatMessage— Edit or soft-delete messagesmcp_graph_chat_addChatMember/mcp_graph_chat_listChatMembers— Manage chat participants
Channel and Team tools (12):
mcp_graph_teams_listTeams/mcp_graph_teams_getTeam— List and inspect teamsmcp_graph_teams_listChannels/mcp_graph_teams_getChannel— List and inspect channelsmcp_graph_teams_createChannel/mcp_graph_teams_createPrivateChannel— Create standard or private channelsmcp_graph_teams_updateChannel— Update channel name/descriptionmcp_graph_teams_postChannelMessage/mcp_graph_teams_replyToChannelMessage— Send and replymcp_graph_teams_listChannelMessages— Read channel message historymcp_graph_teams_addChannelMember/mcp_graph_teams_listChannelMembers— Manage membershipmcp_graph_teams_updateChannelMember— Update member roles
Transport: Hosted remote server at agent365.svc.cloud.microsoft. Streamable HTTP. No local process needed.
Auth: OAuth via Microsoft Entra ID. Requires McpServers.Teams.All scope. Operations respect existing Graph permissions, user privileges, and tenant security policies.
Status: Preview. Microsoft’s own docs warn: “Preview features aren’t meant for production use and might have restricted functionality.”
What works well
Full CRUD on both chats and channels. This is the most complete official Teams MCP server — create, read, update, delete across chats, messages, channels, teams, and members. 24 tools cover the full lifecycle of Teams communication.
Hosted architecture. Like Slack’s mcp.slack.com, Microsoft hosts the server. No npm packages, no Docker containers, no local processes. Your MCP client connects directly to Microsoft’s endpoint. This eliminates entire categories of deployment problems.
OData query support. The chat and channel listing tools accept $top, $filter, $orderby, and $expand parameters. This means server-side filtering and pagination — agents don’t need to pull all messages and filter locally.
Security model is enterprise-grade. Every operation goes through Microsoft Graph permissions. RBAC is enforced server-side. Soft-delete means compliance retention policies still apply. Chat membership changes respect tenant policies. This is what enterprise Teams integration should look like.
What doesn’t
Preview means preview. Microsoft explicitly warns these features may be “substantially modified before release.” Building production workflows on preview APIs is a gamble. The microsoft/mcp repo has 214 open issues across all its servers.
Plain text only for messages. Both postMessage and postChannelMessage accept only plain text in body.content. No rich formatting, no Adaptive Cards, no @mentions in the message body. For a platform that heavily relies on formatted messages, this is a real limitation.
No search. The official server can list messages, but it can’t search across teams and channels the way Slack’s MCP server or floriscornel’s community server can. KQL-based message search is missing entirely.
No file operations. No uploading, downloading, or managing files in channels or chats. For a collaboration platform where file sharing is core, this gap matters.
No meeting support. No scheduling, joining, or managing Teams meetings. Microsoft Graph has calendar and meeting APIs, but they’re not exposed in this MCP server (they’re in a separate Calendar MCP server instead).
InditexTech/mcp-teams-server — Focused and Production-Ready
Built by Inditex (the company behind Zara), this is the most popular community server by stars (358) and the most clearly production-oriented.
5 tools:
- Start threads in channels with title, content, and user mentions
- Reply to existing threads with content and mentions
- Read thread replies
- List channel team members
- Read channel messages
Transport: stdio (local process).
Auth: MS Entra ID application credentials (APP_ID + APP_PASSWORD). Supports SingleTenant and MultiTenant.
Docker: Pre-built images at ghcr.io/inditextech/mcp-teams-server.
Python 3.10+, UV package manager, Apache-2.0 license.
What works well
Zero open issues. 358 stars, 141 commits, 0 open issues. That’s exceptional maintenance. The v1.0.7 release (March 2026) suggests active development with versioned stability.
Thread-first design. Rather than exposing generic message operations, InditexTech focuses on thread workflows — start a discussion, reply to it, read the replies. This maps well to how Teams channels actually get used.
Mention support built in. Every message tool supports @mentioning team members. The official Microsoft server doesn’t even have this in message bodies.
Docker out of the box. Pre-built container images mean enterprise deployment teams can integrate this into existing infrastructure without installing Python or UV locally.
What doesn’t
Only 5 tools. Can’t create chats, manage channels, search messages, handle files, or do anything outside the channel thread workflow. If your use case extends beyond “post to channels and read threads,” you’ll hit walls.
App credentials, not OAuth. Uses application-level credentials (APP_ID/APP_PASSWORD) rather than delegated OAuth. This means the server acts as the app, not as the user — fine for bot-like scenarios, but doesn’t support per-user permissions in the same way.
Single channel scope. Configuration requires TEAM_ID and TEAMS_CHANNEL_ID environment variables, suggesting the server is scoped to one channel at a time. Multi-channel workflows would need multiple instances or configuration changes.
floriscornel/teams-mcp — Most Tools, Broadest Coverage
The second community server takes the opposite approach from InditexTech: cover as much of the Graph API surface as possible.
25 tools across 6 categories:
- Authentication (2):
auth_status,get_current_user - User Operations (2):
search_users,get_user - Teams (11):
list_teams,list_channels,get_channel_messages,get_channel_message_replies,send_channel_message,reply_to_channel_message,update_channel_message,delete_channel_message,list_team_members,search_users_for_mentions,send_file_to_channel - Chat (7):
list_chats,get_chat_messages,send_chat_message,create_chat,update_chat_message,delete_chat_message,send_file_to_chat - Media (2):
download_message_hosted_content,download_chat_hosted_content - Search (2):
search_messages(KQL syntax),get_my_mentions
Transport: stdio via npx.
Auth: OAuth 2.0 with Microsoft Graph. Two modes: full access and read-only (TEAMS_MCP_READ_ONLY=true).
MIT license, TypeScript, 63 stars, 32 forks, 138 commits.
What works well
Message search with KQL. The search_messages tool uses Microsoft’s Keyword Query Language for searching across teams and channels. This is the only Teams MCP server with search — neither the official server nor InditexTech has it.
File operations. send_file_to_channel and send_file_to_chat with large file support (>4MB via resumable upload sessions). Media download tools for hosted content. The official server has no file operations at all.
Read-only mode. Setting TEAMS_MCP_READ_ONLY=true restricts to read-only Graph permissions — useful for monitoring or research agents that shouldn’t be able to post messages. Good security practice.
LLM-optimized responses. Message content returns as Markdown by default with HTML sanitization. This reduces token waste compared to raw Graph API JSON responses.
Most feature-complete. 25 tools vs the official server’s 24, but floriscornel covers search and files that the official server lacks. It’s the broadest single Teams MCP server available.
What doesn’t
8 open issues including auth problems. Issue #16 (device code expired during auth), #3 (token refresh persistence), and #4 (stdio security hardening) suggest the auth flow needs polish. For an OAuth-based server, auth reliability is critical.
No Docker support. Issue #1 has been open since the repo’s creation (June 2025). Enterprise deployments that standardize on containers will need to write their own Dockerfile.
63 stars suggests limited adoption. Compare with InditexTech’s 358 or the broader microsoft/mcp catalog’s 2,800. Lower adoption means less community validation, fewer bug reports, and a higher chance of encountering uncharted edge cases.
No calendar or meeting integration. Issue #5 (calendar integration) has been open since June 2025. Teams meetings remain inaccessible.
Also in the Landscape
pnp/cli-microsoft365-mcp-server (87 stars, TypeScript, MIT) — Wraps the CLI for Microsoft 365 with 3 meta-tools that can execute any M365 CLI command via natural language. Not Teams-specific but can create teams, post messages, and manage channels through the CLI layer. Interesting approach but adds indirection.
CDataSoftware/microsoft-teams-mcp-server-by-cdata — Read-only access via CData JDBC drivers. Commercial product (CData Connect AI) with a free read-only tier.
therealjohn/microsoft-teams-mcp (2 stars, Python, 3 commits) — Single tool for sending Teams notifications via bot framework. Reference-quality only.
Microsoft MCP Server for Enterprise — Hosted at mcp.svc.cloud.microsoft/enterprise with 3 tools for natural-language Graph API queries. Not Teams-specific — focuses on identity and directory data (users, groups, devices). Read-only. Free (no additional license). Rate limited to 100 calls/min/user.
How Teams Compares to Slack and Discord
| Feature | Slack MCP (4/5) | Teams MCP (Official) | Discord MCP (3/5) |
|---|---|---|---|
| Official server | Yes (Slack) | Yes (Microsoft) | No |
| Hosted | Yes (mcp.slack.com) |
Yes (agent365.svc.cloud.microsoft) |
No |
| Auth model | OAuth (first-party) | OAuth (Entra ID) | Bot tokens only |
| Message search | Yes | No | No |
| File operations | No | No | No |
| Rich formatting | Yes | Plain text only | Varies |
| Read-only mode | Scoped by OAuth | By permission | No |
| Community alternatives | 1 (legacy) | 4+ active | 5 community servers |
| Preview/GA | GA | Preview | N/A |
Slack still leads. Hosted, OAuth, search, GA status, purpose-built for LLM consumption with natural language responses. Teams’ official server matches the architecture (hosted, OAuth) but is in preview and lacks search and file operations.
Teams beats Discord decisively. Official server with Microsoft backing, hosted infrastructure, enterprise auth, full CRUD — all things Discord’s fragmented community servers lack. Enterprise Teams users have a clear path forward; Discord communities still don’t.
Which Teams Server Should You Use?
Use the official Work IQ Teams server if you’re building with Microsoft Agent 365, need enterprise-grade auth and compliance, can tolerate preview status, and your use case is chat/channel messaging without search or file operations.
Use floriscornel/teams-mcp if you need message search, file uploads, or read-only mode. It’s the most feature-complete Teams MCP server and the only one with KQL search. Accept that it’s community-maintained with 63 stars and some auth issues.
Use InditexTech/mcp-teams-server if your use case is posting to and reading from Teams channels — specifically thread-based workflows. Zero open issues, Docker support, and production maturity from a major enterprise (Inditex). Accept the narrow 5-tool scope.
Wait if you need meetings, calendar integration, rich formatting, or GA stability. The Teams MCP ecosystem is less mature than Slack’s, and Microsoft’s preview status means things will change.
The Bottom Line
Rating: 3.5/5 — Microsoft did the right thing shipping an official hosted Teams MCP server with 24 tools, enterprise auth, and full CRUD for chats and channels. But it’s in preview, lacks search and file operations, and only supports plain text messages. The community servers fill real gaps — floriscornel adds search and files, InditexTech adds production polish and Docker. Together they cover what Teams integration needs, but no single server nails it yet.
Compared to Slack MCP (4/5), Teams is a half-step behind: same hosted architecture, same OAuth model, but missing search and stuck in preview. Compared to Discord (3/5), Teams is ahead: official server exists, enterprise auth works, the path forward is clear. When the official server exits preview and adds search, this will be a 4/5 category. It’s not there yet.
This review covers the Microsoft Teams MCP server landscape as of March 2026. ChatForest researches MCP servers by reading source code, analyzing GitHub repositories and issues, studying documentation, and examining community signals. We do not install or run the servers ourselves. See our methodology for details.