Share via


Microsoft Teams MCP server reference

Important

You need to be part of the Frontier preview program to get early access to Microsoft Agent 365. Frontier connects you directly with Microsoft’s latest AI innovations. Frontier previews are subject to the existing preview terms of your customer agreements. As these features are still in development, their availability and capabilities may change over time.

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.

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 409 if the member is already present, 400 for invalid user references, or 403 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 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 403 if permission is missing, 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 403 without Chat.ReadWrite, 404 for invalid IDs, and may 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, returning metadata like type and topic. Returns 404 if the chat doesn't exist or isn't visible, or 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 404 if the message doesn't exist or is hidden, or 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/guest). Returns 403 without read permissions or 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 may hide content. Errors include 400 for bad queries and 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 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 non-empty body.content; only text supported. May return 429 for throttling, 403 if permissions are missing, or 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. Editing might be blocked for some system or compliance messages. Returns 403 or 400 if editing is disallowed, or 409 on 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 with user@odata.bind, @odata.type, and optional roles (owner or empty). Fails on standard channels, returns 409 if the member is already present, and 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 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 with membershipType: private. Requires members at creation, including at least one owner. Returns 400 if missing members, 409 for duplicate names, or 403 without 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 404 if channel not found or caller lacks access, 403 if permissions insufficient, or 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 403 or 404 if 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, returning metadata about each member such as identity, roles, and membership status. 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 with optional $top and $expand (for example, replies). Pagination is handled through @odata.nextLink. Returns 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 with optional $select or $filter. Returns private and shared channels only if the caller is a member. Fails with 403 if the caller lacks read rights or 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 403 if the caller can't query the user or 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 403 without ChannelMessage.Send, 404 if channel not found, or 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 with body.content. Only plain text is supported. Returns 404 if the parent message isn't found, 403 without rights, or 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 new displayName or description. Restrictions might apply to special channels like General. Returns 403 without rights, 409 on duplicate names, or 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 400 if attempted on standard channels, 403 if unauthorized, or 404 if member not found.

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

Supported operations

  1. Chat management (create, read, update, delete)
  2. Message operations (send, retrieve, edit, delete)
  3. Channel management (create, configure, list)
  4. Member management (add, update, list)
  5. Team operations (retrieve, list)

Key features

  1. Full CRUD operations for chats and channels
  2. Support for private, shared, and standard channels
  3. Message threading and replies
  4. Member role management
  5. OData query support for filtering and pagination