Share via


Overview

Server ID Display name Scope Description
mcp_TeamsServer Microsoft Teams MCP Server McpServers.Teams.All Microsoft Teams Graph MCP Server to manage chats, channels, and users or messages within them. Use this MCP Server for Teams operations like creating, updating, and retrieving chats and chat messages, managing teams and channels, and performing administrative tasks related to these tasks.

Chat tools

mcp_graph_chat_addChatMember

Endpoint: POST /v1.0/chats/{chat-id}/members

Adds a member to a chat by using user@odata.bind, @odata.type, and optional roles (member, owner). Returns a 409 error code if the member is already present, a 400 error code for invalid user references, or a 403 error code if policies restrict adding.

Required parameters: chat-id, @odata.type, user@odata.bind, roles

mcp_graph_chat_createChat

Endpoint: POST /v1.0/chats

Creates a new Teams chat with chatType (oneOnOne requires exactly two participants, group requires more than two) and members. Returns a 400 if oneOnOne has the wrong member count, 409 if the same participants already have a chat, or 403 if the caller lacks rights.

Required parameters: chatType, members

mcp_graph_chat_deleteChat

Endpoint: DELETE /v1.0/chats/{chat-id}

Soft-deletes a chat. Returns a 403 if permission is missing or a 404 if already deleted, and is subject to tenant retention policies.

Required parameters: chat-id

mcp_graph_chat_deleteChatMessage

Endpoint: POST /v1.0/users/{user-id}/chats/{chat-id}/messages/{chatMessage-id}/softDelete

Soft-deletes a chat message. Returns a 403 without Chat.ReadWrite, a 404 for invalid IDs, and might still retain the message for compliance.

Required parameters: user-id, chat-id, chatMessage-id

mcp_graph_chat_getChat

Endpoint: GET /v1.0/chats/{chat-id}

Retrieves a chat by ID. Returns metadata like type and topic. Returns a 404 if the chat doesn't exist or isn't visible, or a 403 if permissions are denied.

Required parameters: chat-id

mcp_graph_chat_getChatMessage

Endpoint: GET /v1.0/chats/{chat-id}/messages/{message-id}

Retrieves a chat message by ID. Returns a 404 if the message doesn't exist or is hidden, or a 403 without proper rights.

Required parameters: chat-id, message-id

mcp_graph_chat_listChatMembers

Endpoint: GET /v1.0/chats/{chat-id}/members

Lists chat participants. Returns roles (member, owner, or guest). Returns a 403 without read permissions or a 404 if chat not found.

Required parameters: chat-id

mcp_graph_chat_listChatMessages

Endpoint: GET /v1.0/chats/{chat-id}/messages

Lists messages in a chat with optional $top, $filter, and $orderby. Returns paged results. Compliance might hide content. Errors include a 400 for bad queries and a 429 for throttling.

Required parameters: chat-id

Optional Parameters: $top, $filter, $orderby

mcp_graph_chat_listChats

Endpoint: GET /v1.0/chats

Lists chats for the caller with optional $top, $filter, $expand, and $orderby. Returns only visible chats; hidden or system chats might be excluded. Returns a 400 for invalid sort expressions.

Optional Parameters: $top, $orderby, $expand, $filter

mcp_graph_chat_postMessage

Endpoint: POST /v1.0/chats/{chat-id}/messages

Posts a new plain-text message in a chat. Needs chat-id and nonempty body.content; only text supported. Might return a 429 for throttling, a 403 if permissions are missing, or a 404 if chat is invalid. Not idempotent—avoid blind retries.

Required parameters: chat-id, body

mcp_graph_chat_updateChat

Endpoint: PATCH /v1.0/chats/{chat-id}

Updates chat properties, such as the topic for group chats only. Fails with 400 if used on a one-on-one chat, 403 without rights, or 404 if chat not found.

Required parameters: chat-id, topic

mcp_graph_chat_updateChatMessage

Endpoint: PATCH /v1.0/chats/{chat-id}/messages/{message-id}

Updates a chat message with new plain-text content. Some system or compliance messages block editing. The operation returns a 403 or 400 if editing is disallowed, or a 409 for conflicts.

Required parameters: chat-id, message-id

Channel and Team tools

mcp_graph_teams_addChannelMember

Endpoint: POST /v1.0/teams/{team-id}/channels/{channel-id}/members

Adds a member to a private or shared channel by using user@odata.bind, @odata.type, and optional roles (owner or empty). Fails on standard channels. Returns a 409 if the member is already present, and a 403 if lacking permissions.

Required parameters: team-id, channel-id, displayName, roles, user@odata.bind, @odata.type

mcp_graph_teams_createChannel

Endpoint: POST /v1.0/teams/{team-id}/channels

Creates a channel in a team with displayName, optional description, membershipType (standard, private, shared), and optional members. Private or shared channels require explicit members. Duplicates or invalid membership cause a 400 or 409.

Required parameters: team-id, displayName

Optional Parameters: description, membershipType, members

mcp_graph_teams_createPrivateChannel

Endpoint: POST /v1.0/teams/{team-id}/channels

Creates a private channel by setting membershipType to private. You must include members when you create the channel, and the members list must have at least one owner. Returns a 400 if the members are missing, a 409 for duplicate names, or a 403 if the caller doesn't have permissions.

Required parameters: team-id, displayName, members

mcp_graph_teams_getChannel

Endpoint: GET /v1.0/teams/{team-id}/channels/{channel-id}

Retrieves a channel with optional $select and $filter. Returns a 404 if the channel isn't found or the caller lacks access, a 403 if permissions are insufficient, or a 400 for unsupported filters.

Required parameters: team-id, channel-id

Optional Parameters: $select, $filter

mcp_graph_teams_getTeam

Endpoint: GET /v1.0/teams/{team-id}

Retrieves team properties with optional $select and $expand. Returns a 403 or 404 if the team is inaccessible.

Required parameters: team-id

Optional Parameters: $select, $expand

mcp_graph_teams_listChannelMembers

Endpoint: GET /v1.0/teams/{team-id}/channels/{channel-id}/members

Lists all members of a specific Microsoft Teams channel. Returns metadata about each member, such as identity, roles, and membership status. This information is useful for auditing channel participation, verifying membership before role updates, or ensuring compliance.

Required parameters: team-id, channel-id

Optional Parameters: $top, $expand

mcp_graph_teams_listChannelMessages

Endpoint: GET /v1.0/teams/{team-id}/channels/{channel-id}/messages

Lists messages in a channel. Use the optional $top and $expand parameters to customize the results. For example, use $expand to include replies. Pagination is handled through @odata.nextLink. Returns a 403 without read permission or 400 for invalid query options.

Required parameters: team-id, channel-id

Optional Parameters: $top, $expand

mcp_graph_teams_listChannels

Endpoint: GET /v1.0/teams/{team-id}/allChannels

Lists channels in a team. Use the optional $select or $filter parameters to customize the results. Returns private and shared channels only if the caller is a member. Fails with a 403 if the caller lacks read rights or a 400 on invalid OData queries.

Required parameters: team-id

Optional Parameters: $select, $filter

mcp_graph_teams_listTeams

Endpoint: GET /v1.0/users/{user-id}/joinedTeams

Lists the joined teams of a specific user. Returns only memberships of that user, not all tenant teams. Returns a 403 if the caller can't query the user or a 404 if the ID is invalid.

Required parameters: user-id

mcp_graph_teams_postChannelMessage

Endpoint: POST /v1.0/teams/{team-id}/channels/{channel-id}/messages

Posts a plain-text message to a channel. Requires team-id, channel-id, and body.content. Returns a 403 without ChannelMessage.Send, a 404 if channel not found, or a 400 if content is missing.

Required parameters: team-id, channel-id, body

mcp_graph_teams_replyToChannelMessage

Endpoint: POST /v1.0/teams/{team-id}/channels/{channel-id}/messages/{message-id}/replies

Replies to a message in a channel by using body.content. Only plain text is supported. Returns a 404 if the parent message isn't found, a 403 without rights, or a 400 for invalid content.

Required parameters: team-id, channel-id, message-id, body

mcp_graph_teams_updateChannel

Endpoint: PATCH /teams/{team-id}/channels/{channel-id}

Updates a channel with a new displayName or description. Restrictions might apply to special channels like General. Returns a 403 without rights, a 409 on duplicate names, or a 400 for invalid input.

Required parameters: team-id, channel-id

Optional Parameters: displayName, description

mcp_graph_teams_updateChannelMember

Endpoint: PATCH /teams/{team-id}/channels/{channel-id}/members/{membership-id}

Updates a member's role in a private or shared channel by changing roles. Standard channels inherit roles from the team and usually reject updates. Returns a 400 if attempted on standard channels, a 403 if unauthorized, or a 404 if member not found.

Required parameters: team-id, channel-id, membership-id, roles

Supported operations

  • Chat management (create, read, update, delete)
  • Message operations (send, retrieve, edit, delete)
  • Channel management (create, configure, list)
  • Member management (add, update, list)
  • Team operations (retrieve, list)

Key features

  • Full create, read, update, and delete (CRUD) operations for chats and channels
  • Support for private, shared, and standard channels
  • Message threading and replies
  • Member role management
  • OData query support for filtering and pagination