Microsoft Teams MCP
MCP server for Microsoft Graph Teams integration with channels, chats, messages, and user management
Score Breakdown
Server Info
- Package
- @floriscornel/teams-mcp
- Registry
- npm
- Repository
- floriscornel/teams-mcp
- Maintainer
- Community
- Category
- Communication
- Tags
- teamsmicrosoftmessaging
- Last Scanned
- 7 Apr 2026
Findings
4 issuesAuthentication & Identity
HIGHNo per-request auth - requires instance-per-user
Uses MSAL device code flow for OAuth 2.0 authentication with Microsoft Graph. Tokens are cached to ~/.teams-mcp-token-cache.json. Supports a pre-existing AUTH_TOKEN env var. Also supports --read-only CLI flag or TEAMS_MCP_READ_ONLY env var to restrict to read-only scopes. Stdio transport only. For multi-tenant deployment, the platform must spawn a separate server instance per user.
Add HTTP/SSE transport to accept per-request Authorization headers, or implement the MCP OAuth spec.
Data Exposure
MEDIUM3 list operations lack pagination
get_chat_messages supports rich pagination with limit, offset (since/until), fetchAll with page following, and max_results cap at 2000. search_messages has from/size pagination. get_channel_messages has $top limit. list_teams, list_channels, and list_chats lack pagination parameters. Responses return selected fields (summaries), not full Graph API records.
Add limit/offset or cursor-based pagination.
LOWNo field selection on responses
Responses return full records rather than projected fields.
Implement field selection to return only relevant fields.
Maintenance & Trust
LOWCommunity-maintained by Floris Cornel
No official vendor backing.
Seek vendor verification.
Tools
30 total| Name | Description | Risk |
|---|---|---|
| auth_status | Check the authentication status of the Microsoft Graph connection. Returns whether the user is authenticated and shows their basic profile information. | read |
| get_current_user | Get the current authenticated user's profile information including display name, email, job title, and department. | read |
| search_users | Search for users in the organization by name or email address. Returns matching users with their basic profile information. | read |
| get_user | Get detailed information about a specific user by their ID or email address. Returns profile information including name, email, job title, and department. | read |
| list_teams | List all Microsoft Teams that the current user is a member of. Returns team names, descriptions, and IDs. | read |
| list_channels | List all channels in a specific Microsoft Team. Returns channel names, descriptions, types, and IDs for the specified team. | read |
| get_channel_messages | Retrieve recent messages from a specific channel in a Microsoft Team. Returns message content, sender information, and timestamps. | read |
| send_channel_message | Send a message to a specific channel in a Microsoft Team. Supports text and markdown formatting, mentions, and importance levels. | write |
| get_channel_message_replies | Get all replies to a specific message in a channel. Returns reply content, sender information, and timestamps. | read |
| reply_to_channel_message | Reply to a specific message in a channel. Supports text and markdown formatting, mentions, and importance levels. | write |
| list_team_members | List all members of a specific Microsoft Team. Returns member names, email addresses, roles, and IDs. | read |
| search_users_for_mentions | Search for users to mention in messages. Returns users with their display names, email addresses, and mention IDs. | read |
| download_message_hosted_content | Download hosted content (such as images) from a Teams channel message. Returns the content as base64 encoded data along with metadata. | read |
| delete_channel_message | Soft delete a message in a channel. Only the message sender can delete their own messages. The message will be marked as deleted. | write |
| update_channel_message | Update (edit) a message in a channel that was previously sent. Only the message sender can update their own messages. | write |
| set_channel_message_reaction | Add a reaction to a message in a Teams channel. Supports Unicode emoji characters and named reactions (like, angry, sad, laugh, heart, surprised). Can also react to replies. | write |
| unset_channel_message_reaction | Remove a reaction from a message in a Teams channel. Can also remove reactions from replies. | write |
| send_file_to_channel | Upload a local file and send it as a message to a Teams channel. Supports any file type (PDF, DOCX, ZIP, images, etc.). | write |
| list_chats | List all recent chats (1:1 conversations and group chats) that the current user participates in. Returns chat topics, types, and participant information. | read |
| get_chat_messages | Retrieve recent messages from a specific chat conversation. Returns message content, sender information, and timestamps. | read |
| download_chat_hosted_content | Download hosted content (such as images) from a chat message. Returns the content as base64 encoded data along with metadata. | read |
| send_chat_message | Send a message to a specific chat conversation. Supports text and markdown formatting, mentions, and importance levels. | write |
| create_chat | Create a new chat conversation. Can be a 1:1 chat (with one other user) or a group chat (with multiple users). Group chats can optionally have a topic. | write |
| update_chat_message | Update (edit) a chat message that was previously sent. Only the message sender can update their own messages. | write |
| delete_chat_message | Soft delete a chat message that was previously sent. Only the message sender can delete their own messages. | write |
| set_chat_message_reaction | Add a reaction to a message in a chat conversation. Supports Unicode emoji characters and named reactions (like, angry, sad, laugh, heart, surprised). | write |
| unset_chat_message_reaction | Remove a reaction from a message in a chat conversation. | write |
| send_file_to_chat | Upload a local file and send it as a message to a Teams chat. Supports any file type (PDF, DOCX, ZIP, images, etc.). | write |
| search_messages | Search for messages across all Microsoft Teams channels and chats using the Microsoft Search API. The query string supports KQL (Keyword Query Language) syntax for advanced filtering. | read |
| get_my_mentions | Find recent messages where the current user was @mentioned across all Teams channels and chats. | read |
Deploy Microsoft Teams MCP securely
CompleteFlow adds per-user authentication, permission scoping, and audit logging to any MCP server out of the box.
Deploy on CompleteFlow