mcp-teams
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TEAMS_AUTH | No | Authentication mode override: interactive, client-credentials, or token | |
| TEAMS_MODE | No | Access mode: read-only, read-write, or admin | read-only |
| TEAMS_TOKEN | No | Pre-obtained Microsoft Graph bearer token for token-based authentication | |
| TEAMS_DRY_RUN | No | If set, validate and log writes without executing them | |
| TEAMS_AUDIT_LOG | No | If set, emit a JSON audit line per guarded operation | true |
| TEAMS_CLIENT_ID | No | Azure AD application (client) ID for the app registration | |
| TEAMS_TENANT_ID | No | Azure AD tenant ID (default: common) | common |
| TEAMS_ALLOW_SEND | No | Set to enable sending messages (requires read-write mode) | |
| TEAMS_ALLOW_DELETE | No | Set to enable message deletion (requires admin mode) | |
| TEAMS_CLIENT_SECRET | No | Client secret for client-credentials (app-only) authentication | |
| TEAMS_TEAM_ALLOWLIST | No | Comma-separated list of team IDs that can be posted to | |
| TEAMS_PROTECTED_TEAMS | No | Comma-separated list of team IDs that are read-only/protected |
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 |
|---|---|
| whoamiA | Return the signed-in user's identity (display name, user principal name, id). Use this to confirm which account the server is operating as before reading or posting. |
| list_teamsA | List the teams the signed-in user is a member of, with their ids, display names, and descriptions. Start here to get a team id for list_channels. |
| list_channelsA | List the channels in a team, with their ids, display names, and membership type (standard/private/shared). |
| list_team_membersA | List the members of a team (display name, email, roles). |
| list_channel_messagesA | List the top-level messages in a channel, most recent first. Returns compact summaries (id, from, created, body, webUrl). Use list_message_replies for a message's thread. |
| get_channel_messageA | Fetch a single channel message by id, with its full body and metadata. |
| list_message_repliesA | List the replies in a channel message's thread, most recent first. |
| list_chatsA | List the signed-in user's 1:1 and group chats (id, topic, type, last updated). Use a chat id with list_chat_messages. |
| list_chat_messagesA | List the messages in a 1:1 or group chat, most recent first. Returns compact summaries. |
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 9 tools
Each tool targets a distinct Teams entity and action: identity, teams, channels, members, channel messages, replies, and chats. The potentially similar message tools are clearly separated by scope (channel vs. chat vs. reply) and by singular vs. plural retrieval.
The naming is overwhelmingly consistent with a list_* / get_* verb-noun pattern. The main deviation is whoami, which is a common standard command, and the distinction between list and get is semantically clear.
Nine tools is well-scoped for a read-only Microsoft Teams server. Every tool earns its place by covering a distinct read operation without unnecessary redundancy or bloat.
Core read workflows are covered well: identity, teams, channels, members, channel messages with replies, and chats. The main gaps are the lack of a full get_chat_message equivalent, no search capability, and no write actions, but these are workable for a listing-focused server.