auth_status
Check the authentication status of the Microsoft Graph connection. Returns whether the user is authenticated and shows their basic profile information.
Follow a Teams thread, search what was said months ago, and answer in place — including reactions and file attachments — without switching to the Teams window.
LABSCO SUMMARY
Reading a thread, replying inside it, reacting and posting a file all run through Microsoft Graph, so the whole exchange happens where the work is. search_messages takes KQL, which turns 'what did Bob say about the migration' into a query with from: and a date window rather than ten minutes of scrolling.
A Microsoft Teams client over Microsoft Graph, 30 tools split between channel messages, chat messages, people lookup and tenant-wide search.
npx on your PATH and a Microsoft 365 account, signed in once with npx @floriscornel/teams-mcp@latest authenticate — a device-code sign-in whose tokens are cached and refresh on their own; auth_status reports whether that connection is authenticated and which profile it carries.
Follow the published steps
USE CASES
Start from recent @mentions of you across channels and chats, open the replies under each one, and read the direct messages that arrived alongside them.
Reply to the message that raised the question, resolve the mention IDs of the people who need to see it, and acknowledge the original with a reaction so the thread reads as handled.
Query across every channel and chat with KQL — sender, recipient, mention — then read the surrounding messages in the channel it came from.
Post the file into the channel that owns the work, or open a chat with the two people who need it and send it there — the upload goes to SharePoint or OneDrive and the message carries the reference.
Pull hosted content down from the channel message or the chat message that carries it, as base64 with its metadata, rather than asking somebody to re-send the screenshot.
Edit the message in place where the wording was wrong, or soft-delete it where it should not have gone out. Both are limited to messages you sent yourself.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
auth_statusCheck the authentication status of the Microsoft Graph connection. Returns whether the user is authenticated and shows their basic profile information.
create_chatCreate 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.
delete_channel_messageSoft delete a message in a channel. Only the message sender can delete their own messages. The message will be marked as deleted.
delete_chat_messageSoft 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]'.
download_chat_hosted_contentDownload 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.
download_message_hosted_contentDownload 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.
get_channel_message_repliesGet all replies to a specific message in a channel. Returns reply content, sender information, and timestamps.
get_channel_messagesRetrieve recent messages from a specific channel in a Microsoft Team. Returns message content, sender information, and timestamps.
get_chat_messagesRetrieve recent messages from a specific chat conversation. Returns message content, sender information, and timestamps.
get_current_userGet the current authenticated user's profile information including display name, email, job title, and department.
get_my_mentionsFind recent messages where the current user was @mentioned across all Teams channels and chats.
get_userGet detailed information about a specific user by their ID or email address. Returns profile information including name, email, job title, and department.
list_channelsList all channels in a specific Microsoft Team. Returns channel names, descriptions, types, and IDs for the specified team.
list_chatsList all recent chats (1:1 conversations and group chats) that the current user participates in. Returns chat topics, types, and participant information.
list_team_membersList all members of a specific Microsoft Team. Returns member names, email addresses, roles, and IDs.
list_teamsList all Microsoft Teams that the current user is a member of. Returns team names, descriptions, and IDs.
reply_to_channel_messageReply to a specific message in a channel. Supports text and markdown formatting, mentions, and importance levels.
search_messagesSearch 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:<name> — messages sent by a person (e.g. from:bob) to:<name> — messages sent to a person mentions:<userId> — 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.
search_usersSearch for users in the organization by name or email address. Returns matching users with their basic profile information.
search_users_for_mentionsSearch for users to mention in messages. Returns users with their display names, email addresses, and mention IDs.
send_channel_messageSend a message to a specific channel in a Microsoft Team. Supports text and markdown formatting, mentions, and importance levels.
send_chat_messageSend a message to a specific chat conversation. Supports text and markdown formatting, mentions, and importance levels.
send_file_to_channelUpload 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).
send_file_to_chatUpload 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.
set_channel_message_reactionAdd 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.
set_chat_message_reactionAdd a reaction to a message in a chat conversation. Supports Unicode emoji characters and named reactions (like, angry, sad, laugh, heart, surprised).
unset_channel_message_reactionRemove a reaction from a message in a Teams channel. Can also remove reactions from replies.
unset_chat_message_reactionRemove a reaction from a message in a chat conversation.
update_channel_messageUpdate (edit) a message in a channel that was previously sent. Only the message sender can update their own messages.
update_chat_messageUpdate (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.
BEFORE YOU INSTALL
30 tools when we connected. The documentation lists 26 and omits four message-reaction tools. TEAMS_MCP_READ_ONLY=true or --read-only disables write tools and requests only read scopes, leaving roughly 16.
All 5 documented setups run the server on your machine.
CONTEXT COST
Rated by the size of the 30 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
First, authenticate with Microsoft Graph:
npx @floriscornel/teams-mcp@latest authenticate{
"mcpServers": {
"teams-mcp": {
"command": "npx",
"args": [
"-y",
"@floriscornel/teams-mcp@latest"
]
}
}
}{
"servers": {
"teams-mcp": {
"command": "npx",
"args": [
"-y",
"@floriscornel/teams-mcp@latest"
]
}
}
}{
"mcpServers": {
"teams-mcp": {
"command": "npx",
"args": [
"-y",
"@floriscornel/teams-mcp@latest"
],
"env": {
"AUTH_TOKEN": "<YOUR_AUTH_TOKEN>"
}
}
}
}{
"mcpServers": {
"teams-mcp": {
"command": "npx",
"args": [
"-y",
"@floriscornel/teams-mcp@latest"
],
"env": {
"TEAMS_MCP_READ_ONLY": "true"
}
}
}
}