# Microsoft Teams — MCP server on mcp.ai > Microsoft Teams in natural language: read chats and channel messages, post messages and replies, manage teams, channels and members, create meetings. The platform provides the OAuth app, just click Connect and pick your Microsoft account. Multiple accounts can be connected to the same MCP. By: mcp.ai · official Page: https://mcp.ai/microsoft_teams ## Connect (MCP protocol) Remote MCP endpoint (HTTP, streamable): https://api.mcp.ai/p_microsoft_teams?ms=1781045700000 Add it as a custom/remote MCP connector, then authenticate when prompted. ## REST API (no MCP client required) Every tool is also a REST endpoint, authed with a workspace API key. Discover: GET https://api.mcp.ai/api/microsoft_teams/_endpoints # public; lists every endpoint Call: POST https://api.mcp.ai/api/microsoft_teams/ Authorization: Bearer sk_live_… # create one at https://mcp.ai/settings/api-keys Content-Type: application/json Body: { …args } → { "ok": true, "tool": "", "result": { … } } ## Developer docs How to use (MCP or REST), markdown: https://mcp.ai/microsoft_teams/skill.md Postman collection (v2.1): https://mcp.ai/microsoft_teams/postman.json ## Tools - microsoft_teams_add_member_to_team(roles?: string[], team_id: string, user_id: string) — Tool to add a user to a microsoft teams team. use when granting or updating membership for a user. - microsoft_teams_archive_team(team_id: string, should_set_spo_site_read_only_for_members?: boolean) — Tool to archive a microsoft teams team. use after confirming the team id; returns 202 if accepted. - microsoft_teams_chats_get_all_chats(top?: integer, filter?: string, select?: string[], user_id?: string) — Retrieves all microsoft teams chats a specified user is part of, supporting filtering, property selection, and pagination. - microsoft_teams_chats_get_all_messages(top?: integer, filter?: string, select?: string[], chat_id: string) — Retrieves all messages from a specified microsoft teams chat using the microsoft graph api, automatically handling pagination; ensure `chat id` is valid and odata expressions in `filter` or `select` a - microsoft_teams_create_meeting(subject: string, participants?: object[], end_date_time: string, start_date_time: string, is_passcode_required?: boolean) — Use to schedule a new standalone microsoft teams online meeting, i.e., one not linked to any calendar event. - microsoft_teams_create_team(members?: object[], visibility: string, description?: string, displayName: string, firstChannelName?: string, template_odata_bind?: string) — Tool to create a new microsoft teams team. use when you need to provision a team with optional template, channels, and members. - microsoft_teams_delete_team(team_id: string) — Tool to delete a microsoft teams team. use after confirming the target team id. - microsoft_teams_get_channel(team_id: string, channel_id: string) — Tool to get a specific channel in a team. use after obtaining valid team and channel ids to fetch channel details. - microsoft_teams_get_chat_message(chat_id: string, message_id: string) — Tool to get a specific chat message. use after confirming chat id and message id. - microsoft_teams_get_team(team_id: string) — Tool to get a specific team. use when full details of one team by id are needed. - microsoft_teams_list_message_replies(top?: integer, team_id: string, channel_id: string, message_id: string) — Tool to list replies to a channel message. use after obtaining team, channel, and message ids. - microsoft_teams_list_team_members(top?: integer, team_id: string) — Tool to list members of a microsoft teams team. use when you need to retrieve the members of a specific team, for auditing or notifications. - microsoft_teams_list_teams_templates(top?: integer, skip?: integer, count?: boolean, filter?: string, select?: string, orderby?: string) — Tool to list available microsoft teams templates. use when retrieving templates for team creation or customization workflows. - microsoft_teams_list_users($top?: integer, $skip?: integer, $expand?: string, $filter?: string, $select?: string, $orderby?: string, consistencyLevel?: string) — Tool to list all users in the organization. use when you need to retrieve directory users with filtering, pagination, and field selection. - microsoft_teams_teams_create_channel(name: string, team_id: string, description?: string, membership_type?: string) — Creates a new 'standard', 'private', or 'shared' channel within a specified microsoft teams team. - microsoft_teams_teams_create_chat(topic?: string, members: object[], chatType: string) — Creates a new chat; if a 'oneonone' chat with the specified members already exists, its details are returned, while 'group' chats are always newly created. - microsoft_teams_teams_get_message(team_id: string, channel_id: string, message_id: string) — Retrieves a specific message from a microsoft teams channel using its team, channel, and message ids. - microsoft_teams_teams_list(top?: integer, filter?: string, select?: string) — Retrieves microsoft teams accessible by the authenticated user, allowing filtering, property selection, and pagination. - microsoft_teams_teams_list_channels(filter?: string, select?: string, team_id: string, include_shared_channels?: boolean) — Retrieves channels for a specified microsoft teams team id (must be valid and for an existing team), with options to include shared channels, filter results, and select properties. - microsoft_teams_teams_list_chat_messages(top?: integer, chat_id: string) — Retrieves messages (newest first) from an existing and accessible microsoft teams one-on-one chat, group chat, or channel thread, specified by `chat id`. - microsoft_teams_teams_list_people(top?: integer, skip?: integer, filter?: string, search?: string, select?: string, orderby?: string, user_id?: string) — Retrieves a list of people relevant to a specified user from microsoft graph, noting the `search` parameter is only effective if `user id` is 'me'. - microsoft_teams_teams_post_channel_message(content: string, team_id: string, channel_id: string, content_type?: string) — Posts a new text or html message to a specified channel in a microsoft teams team. - microsoft_teams_teams_post_chat_message(chat_id: string, content: string, content_type?: string) — Sends a non-empty message (text or html) to a specified, existing microsoft teams chat; content must be valid html if `content type` is 'html'. - microsoft_teams_teams_post_message_reply(content: string, team_id: string, channel_id: string, message_id: string, content_type?: string) — Sends a reply to an existing message, identified by `message id`, within a specific `channel id` of a given `team id` in microsoft teams. - microsoft_teams_unarchive_team(team_id: string) — Tool to unarchive a microsoft teams team. use when you need to restore an archived team to active state. - microsoft_teams_update_channel_message(content: string, team_id: string, channel_id: string, message_id: string, content_type?: string) — Tool to update a message in a channel. use when you need to modify an existing channel message after confirming channel and message ids. - microsoft_teams_update_chat_message(chat_id: string, content: string, message_id: string, content_type?: string) — Tool to update a specific message in a chat. use when you need to correct or modify a sent chat message. - microsoft_teams_update_team(team_id: string, funSettings?: object, memberSettings?: object, messagingSettings?: object) — Tool to update the properties of a team. use when you need to modify team settings such as member, messaging, or fun settings. ## Example prompts - "Summarize the unread messages from my recent Teams chats" - "List this week's messages in the General channel of the Engineering team" - "Post an announcement in the Announcements channel about tomorrow's meeting" ## Links Docs: https://mcp.ai/docs/mcps/microsoft_teams Website: https://mcp.ai/mcps/microsoft_teams