Teams MCP Plus
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AUTH_TOKEN | No | Pre-issued Microsoft Graph JWT access token for direct token injection (used for the tenant in its 'tid' claim). | |
| TEAMS_MCP_READ_ONLY | No | Set to 'true' to start the MCP server in read-only mode (disables all write tools). | false |
| TEAMS_MCP_TENANT_ID | No | Default tenant ID (GUID) to use when no explicit tenantId is provided. | |
| TEAMS_MCP_CONFIG_DIR | No | Shared credential directory (default: ~/.teams-mcp-plus). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_tenantsA | List connected Microsoft Teams tenants, account names, granted scopes, and configured default. Use the tenantId in subsequent tool calls. Saved connections may require re-authentication; use auth_status to check live access. |
| auth_statusA | Check live authentication for the selected tenant. Returns its tenant ID, user profile, token expiration, and any authentication error. |
| get_current_userA | Get the current authenticated user's profile information including display name, email, job title, and department. |
| search_usersB | Search for users in the organization by name or email address. Returns matching users with their basic profile information. |
| get_userA | Get detailed information about a specific user by their ID or email address. Returns profile information including name, email, job title, and department. |
| list_teamsA | List all Microsoft Teams that the current user is a member of. Returns team names, descriptions, and IDs. |
| list_channelsA | List all channels in a specific Microsoft Team. Returns channel names, descriptions, types, and IDs for the specified team. |
| get_channel_messagesB | List channel messages or read one message or reply by ID. |
| send_channel_messageA | Send a message to a specific channel in a Microsoft Team. Supports text and markdown formatting, mentions, and importance levels. |
| get_channel_message_repliesA | Get all replies to a specific message in a channel. Returns reply content, sender information, and timestamps. |
| reply_to_channel_messageB | Reply to a specific message in a channel. Supports text and markdown formatting, mentions, and importance levels. |
| list_team_membersA | List all members of a specific Microsoft Team. Returns member names, email addresses, roles, and IDs. |
| search_users_for_mentionsA | Search for users to mention in messages. Returns users with their display names, email addresses, and mention IDs. |
| download_message_hosted_contentA | Download hosted content (such as images) from a Teams channel message. Returns the content as base64 encoded data along with metadata. Use this to retrieve images or other inline content embedded in messages. |
| delete_channel_messageA | Soft delete a message in a channel. Only the message sender can delete their own messages. The message will be marked as deleted. |
| update_channel_messageB | Update (edit) a message in a channel that was previously sent. Only the message sender can update their own messages. |
| set_channel_message_reactionA | 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. |
| unset_channel_message_reactionA | Remove a reaction from a message in a Teams channel. Can also remove reactions from replies. |
| send_file_to_channelA | Upload a local file and send it as a message to a Teams channel. Supports any file type (PDF, DOCX, ZIP, images, etc.). The file is uploaded to the channel's SharePoint folder and sent as a reference attachment. If messageId is provided, the file is sent as a reply to that message (thread). |
| list_chatsA | List the current user's 1:1, group, and meeting chats with participants, latest-message previews, and read status. Returns all pages, newest message first. |
| get_chat_messagesB | List chat messages or read one by ID. |
| download_chat_hosted_contentA | Download hosted content (such as images) from a chat message. Returns the content as base64 encoded data along with metadata. Use this to retrieve images or other inline content embedded in chat messages. |
| list_chat_membersB | List all chat members with user IDs, emails, tenant IDs and roles. |
| set_chat_read_stateA | Mark a chat read or unread for the current user. |
| send_chat_messageB | Send a message to a specific chat conversation. Supports text and markdown formatting, mentions, and importance levels. |
| create_chatB | 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. |
| update_chat_messageA | Update (edit) a chat message that was previously sent. Only the message sender can update their own messages. Supports updating content with text or Markdown formatting, mentions, and importance levels. |
| delete_chat_messageA | Soft delete a chat message that was previously sent. Only the message sender can delete their own messages. The message will be marked as deleted but can still be seen as '[This message has been deleted]'. |
| set_chat_message_reactionA | Add a reaction to a message in a chat conversation. Supports Unicode emoji characters and named reactions (like, angry, sad, laugh, heart, surprised). |
| unset_chat_message_reactionA | Remove a reaction from a message in a chat conversation. |
| send_file_to_chatA | Upload a local file and send it as a message to a Teams chat. Supports any file type (PDF, DOCX, ZIP, images, etc.). The file is uploaded to OneDrive and sent as a reference attachment. |
| search_messagesA | 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: from: — messages sent by a person (e.g. from:bob) to: — messages sent to a person mentions: — messages that mention a specific user ID (without dashes) IsMentioned:true — messages that mention the current user hasAttachment:true|false — filter by attachment presence IsRead:true|false — filter by read status sent>=YYYY-MM-DD — messages sent on or after a date sent<=YYYY-MM-DD — messages sent on or before a date Examples: "quarterly report" from:alice sent>=2025-01-01 hasAttachment:true from:bob project update sent>=2025-02-01 Use get_chat_messages or get_channel_messages for browsing a specific conversation. |
| get_my_mentionsA | Find recent messages where the current user was @mentioned across all Teams channels and chats. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 33 tools
The channel/chat message tools are neatly paired and contextually distinct, and reactions/read-state/search tools have clear targets. Minor overlap exists between search_users and search_users_for_mentions, and get_channel_messages can also read a reply by ID, which may cause occasional misselection.
Almost all tools follow a clear snake_case verb_noun pattern (list_teams, send_chat_message, set_chat_read_state). auth_status is the main outlier because it is a noun phrase rather than a verb-prefixed command.
33 tools exceeds the 25+ threshold for a heavy surface. The parity between channel and chat operations inflates the count, though each tool does represent a distinct operation in a broad domain.
The set covers the messaging lifecycle well: create/list/send/update/delete/reply/reactions/files/search for both channels and chats. Gaps like team/channel management and chat-level editing are present but secondary to the apparent messaging-focused purpose.