teams-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@teams-mcpsend 'Good morning' to team chat via Power Automate"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Teams MCP Server (Secure)
A secure Microsoft Teams MCP server using only official Microsoft packages.
Security
This server uses exclusively official Microsoft packages:
Package | Source | Purpose |
| Authentication | |
| Graph API calls | |
| MCP protocol |
No third-party authentication or API wrappers.
Related MCP server: Teams MCP
Prerequisites
Node.js 18+
Azure CLI (
az login) - required for authentication
Installation
npm install
npm run buildAuthentication
The server uses Azure CLI credentials (az login). For enterprise tenants with Conditional Access policies blocking Graph API Chat permissions, use the Power Automate integration instead.
Power Automate Integration (Recommended for Enterprise)
If your organization blocks direct Graph API access to Teams chats, you can use Power Automate as a bridge:
One-time Setup
Go to Power Automate
Create a new Instant cloud flow
Add trigger: "When an HTTP request is received"
Click "Use sample payload" and enter:
{"message": "Hello"}Add action: "Post message in a chat or channel" (Microsoft Teams)
Configure the Teams action with your target chat/channel
For Message, select message from Dynamic content
Save and turn on the flow
Copy the HTTP POST URL from the trigger
Usage
# Set your Power Automate flow URL
export POWER_AUTOMATE_URL="https://....powerplatform.com/.../invoke?api-version=1"
# Post a message (uses Azure AD auth automatically)
curl -X POST "$POWER_AUTOMATE_URL" \
-H "Authorization: Bearer $(az account get-access-token --resource https://service.flow.microsoft.com/ --query accessToken -o tsv)" \
-H "Content-Type: application/json" \
-d '{"message": "Hello from MCP!"}'Usage
Add to your MCP config
VS Code (.vscode/mcp.json):
{
"servers": {
"teams": {
"type": "stdio",
"command": "node",
"args": ["C:/teams-mcp/dist/index.js"]
}
}
}Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"teams": {
"command": "node",
"args": ["C:/teams-mcp/dist/index.js"]
}
}
}Available Tools
Tool | Description |
| Get authenticated user info |
| List user's Teams chats |
| List joined Teams |
| List channels in a Team |
| Send message to a chat (requires Graph permissions) |
| Send message to a channel (requires Graph permissions) |
| Get messages from a chat |
| Get messages from a channel |
| Send message via Power Automate (bypasses Graph restrictions) |
Examples
Send a message via Power Automate (Recommended)
{
"tool": "send_via_power_automate",
"arguments": {
"flowUrl": "https://....powerplatform.com/.../invoke?api-version=1",
"message": "Hello from MCP!"
}
}Send a message to a chat (requires Graph permissions)
{
"tool": "send_chat_message",
"arguments": {
"chatId": "19:abc123@thread.v2",
"message": "Hello from MCP!"
}
}License
MIT
Available Tools
9 toolsget_channel_messagesB
Get recent messages from a Teams channel
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Number of messages to return (default: 20) | |
| teamId | Yes | The ID of the Team | |
| channelId | Yes | The ID of the channel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states this is a read operation ('Get'), but does not mention default message count (despite the schema's 'top' default), ordering, pagination, or any access requirements. For a tool with zero annotation coverage, this is a significant gap beyond stating the bare action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that effectively communicates the core function. Every word earns its place; there is no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with no output schema, the description is minimally adequate but leaves out important context such as the default message limit, what 'recent' means, or how the response is structured. It is not misleading, but it lacks enough detail to be considered complete in isolation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with each parameter (teamId, channelId, top) clearly described. The tool description itself adds no extra parameter detail beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('recent messages from a Teams channel'), clearly distinguishing it from sibling tools like get_chat_messages (which retrieves from chats) and list_channels (which lists channels). There is no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_chat_messages or send_channel_message. There is no mention of prerequisites, filters, or exclusions. The only implied context is that it is for retrieving messages from a channel, but that is not explicitly stated as usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chat_messagesA
Get recent messages from a Teams chat
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Number of messages to return (default: 20) | |
| chatId | Yes | The ID of the chat |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden. 'Get' conveys a non-mutating read, but the description does not disclose ordering, the exact meaning of 'recent', authentication needs, or return format. It is not misleading but is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or redundant detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with two well-documented parameters, the description is minimally sufficient. However, with no output schema, no annotations, and no explicit sibling guidance, the agent lacks context on return values, default ordering, and when to prefer this over channel-message retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with chatId and top both described. The tool description adds no parameter-specific semantics beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('get') and resource ('recent messages from a Teams chat'), clearly distinguishing it from siblings like get_channel_messages and send_chat_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by identifying 'Teams chat' as the target, but it provides no explicit guidance on when to choose this tool over get_channel_messages, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_userA
Get the current authenticated user's information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only operation via 'Get' but does not disclose return format, authentication requirements, or any side effects. For a simple getter, this is minimally adequate but lacks detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler words, directly stating the tool's function. It is appropriately sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is mostly sufficient, but it does not specify what information is returned (e.g., name, email, profile). Sibling tools suggest a messaging context, but the output remains ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description need not explain parameter semantics. The baseline of 4 applies since no parameter information is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the current authenticated user's information, using a specific verb ('Get') and resource ('current authenticated user's information'). It distinguishes from sibling tools like list_chats and send_channel_message, which handle messaging operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as whether it should be called to retrieve user context before other operations. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_channelsB
List channels in a specific Team
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | Yes | The ID of the Team |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavior. It only states the action without mentioning read-only nature, pagination, permissions, or response details, offering minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One-sentence description with clear verb and object, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool with a single parameter and no output schema, the description is adequate but lacks details about expected response or any behavioral constraints, making it minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes teamId with 100% coverage. The description's phrase 'in a specific Team' aligns with the schema but adds no new information beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists channels within a specific team, using a specific verb and resource. It distinguishes itself from sibling tools like list_teams and list_chats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The only implied context is that a teamId is required, but no exclusions or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_chatsB
List the user's Teams chats
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Number of chats to return (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only restates the basic function. It does not disclose any side effects, ordering, pagination behavior, or what happens with the 'top' parameter. The read-only nature is implied but not stated explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler words. It is appropriately sized and front-loaded, quickly conveying the core purpose without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only one optional parameter and no output schema, but the description lacks important contextual details such as how the results are ordered, what fields are returned, or any limits beyond 'top'. It is adequate but leaves gaps in understanding the full behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for the 'top' parameter with its description, so the baseline is 3. The tool description adds no additional semantic value beyond what the schema states, leaving parameter semantics fully handled by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and the resource (the user's Teams chats), which distinguishes it from sibling tools like list_teams and list_channels that target different resources. The verb and resource are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any context, prerequisites, or exclusions. While the resource name implies a distinct use case, there is no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teamsA
List Teams the user has joined
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It implies a read operation ('List') and specifies scope (teams the user joined), but does not disclose potential details like authentication requirements, pagination, or return format. For a simple list, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no fluff. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema list operation, the description fully conveys the function. It lacks only optional details about result ordering or content, but given the low complexity and lack of output schema, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description need not explain any. Schema coverage is 100% vacuously, and the baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with resource 'Teams' and scope 'the user has joined', clearly distinguishing it from sibling tools like list_chats and list_channels. It leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this is for listing teams the user has joined, and sibling names make it obvious that other list tools handle chats/channels. However, it does not explicitly state when-not-to-use or name alternatives, so it lacks the explicit exclusions of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_channel_messageC
Send a message to a Teams channel
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | Yes | The ID of the Team | |
| message | Yes | The message content to send | |
| channelId | Yes | The ID of the channel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only states the action itself. It does not mention irreversibility, required permissions, formatting support, or error behavior. For a mutation tool, this leaves significant gaps in understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant wording. It is quickly readable and contains only the essential information about the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations, output schema, and contextual guidance, this description is insufficient for an agent to fully understand the tool's role. It lacks information about how it fits with sibling tools, what the response will be, and any side effects. The schema covers parameters, but the description fails to provide a broader operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides complete descriptions for all three parameters, so schema coverage is 100%. The description adds no additional parameter-level meaning beyond what is already structured, with no mention of parameter interdependencies or format expectations. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Send a message to a Teams channel' clearly states the action (send) and the resource (Teams channel), which distinguishes it from sibling tools like send_chat_message and send_via_power_automate, though it does not explicitly contrast them. It is specific enough to understand the tool's core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no context for when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing teamId/channelId from list_teams or list_channels), nor does it differentiate from send_chat_message or send_via_power_automate. It entirely lacks usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_chat_messageC
Send a message to a Teams chat
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | The ID of the chat | |
| message | Yes | The message content to send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, and the description does not disclose any behavioral traits beyond the basic action. It offers no information about permissions, return values, rate limits, or message formatting, failing to compensate for the lack of structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasted words. It conveys the essential purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with full schema coverage, the description is minimally adequate. However, it lacks guidance on differentiating between chat and channel messaging, and it provides no behavioral context, leaving some ambiguity in tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with clear descriptions for both chatId and message. The tool description adds no extra parameter semantics, but the high schema coverage grants the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Send') and resource ('a message to a Teams chat'), clearly stating the tool's function. It differentiates from siblings like send_channel_message by targeting chats rather than channels, though it does not explicitly mention alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as send_channel_message or send_via_power_automate. The description only states the action, leaving the agent without contextual selection cues or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_via_power_automateA
Send a message via Power Automate flow (bypasses Graph API auth restrictions)
| Name | Required | Description | Default |
|---|---|---|---|
| flowUrl | Yes | The Power Automate HTTP trigger URL (without sig parameter - uses Azure AD auth) | |
| message | Yes | The message content to send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It mentions the auth-bypass trait and the parameter note about Azure AD auth, but it does not explain what happens after sending, potential side effects, or error behavior. This is a minimal disclosure that leaves significant unknowns for a mutation-like operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the action and the key differentiator. Every word earns its place, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only 2 well-described parameters, so the schema covers inputs well. However, there is no output schema and no description of return values or behavior on success/failure. Given the lack of annotations, the description should provide more context about what the agent can expect when invoking the tool, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description itself does not elaborate on parameters beyond what the schema provides. The flowUrl property includes a useful note about omitting the sig parameter, but this is part of the schema, not the main description, and no additional meaning is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Send a message via Power Automate flow'. It also distinguishes itself from sibling send tools by mentioning it 'bypasses Graph API auth restrictions', which sets it apart from the standard send_chat_message and send_channel_message tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the tool is for use when Graph API auth restrictions are a concern, providing clear context for when this tool is appropriate. However, it does not explicitly name alternatives or state 'use when not possible via Graph API', so it falls short of fully explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v1.0.0- First observed
get_channel_messages - First observed
get_chat_messages - First observed
get_current_user - First observed
list_channels - First observed
list_chats - First observed
list_teams - First observed
send_channel_message - First observed
send_chat_message - First observed
send_via_power_automate
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: user info, listing different entities (chats, teams, channels), and sending/retrieving messages for chat vs. channel. The send_via_power_automate tool is uniquely positioned as an alternative delivery mechanism, so no two tools are easily confused.
All tool names follow a consistent verb_noun pattern using snake_case (get_, list_, send_), making the set predictable and easy to navigate. The one outlier, send_via_power_automate, still adheres to the same verb-first structure.
With 9 tools, the server is well-scoped for a Teams messaging-focused MCP. It provides a solid set of read and send operations without being overbuilt or feeling sparse, fitting comfortably within the ideal 3-15 range.
The tool surface covers the core lifecycle for messaging: listing entities, reading messages, and sending to both chats and channels. Gaps like updating/deleting messages or creating teams/channels exist, but these are reasonable omissions for a communication-focused server and do not block primary workflows.
Maintenance
Related MCP Connectors
Permissioned access to Outlook, OneDrive and Teams via the user's own Microsoft account
Read email/chat conversations, messages, contacts and teams; draft, send and update threads.
Manage Microsoft 365 email, calendar, contacts and inbox rules via the Graph API with OAuth 2.0.
Messaging tools for AI agents: send messages, manage chats, groups and channels.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to manage Microsoft Teams through the Graph API, including sending messages, managing chats, creating teams, and searching communications.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with Microsoft Teams, users, and organizational data via Microsoft Graph APIs, including sending messages, managing chats and channels, and searching messages.MIT
- AlicenseAqualityDmaintenanceEnables AI agents to interact with Microsoft Teams through Microsoft Graph API, using delegated device-code authentication to act on behalf of the user.1615 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to read conversations, send messages, and manage members in Microsoft Teams via the Teams Chat Service REST API.380 npm8MIT