Skip to main content
Glama

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

@azure/identity

Microsoft Azure SDK

Authentication

@microsoft/microsoft-graph-client

Microsoft Graph SDK

Graph API calls

@modelcontextprotocol/sdk

Anthropic MCP

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 build

Authentication

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.

If your organization blocks direct Graph API access to Teams chats, you can use Power Automate as a bridge:

One-time Setup

  1. Go to Power Automate

  2. Create a new Instant cloud flow

  3. Add trigger: "When an HTTP request is received"

  4. Click "Use sample payload" and enter: {"message": "Hello"}

  5. Add action: "Post message in a chat or channel" (Microsoft Teams)

  6. Configure the Teams action with your target chat/channel

  7. For Message, select message from Dynamic content

  8. Save and turn on the flow

  9. 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_current_user

Get authenticated user info

list_chats

List user's Teams chats

list_teams

List joined Teams

list_channels

List channels in a Team

send_chat_message

Send message to a chat (requires Graph permissions)

send_channel_message

Send message to a channel (requires Graph permissions)

get_chat_messages

Get messages from a chat

get_channel_messages

Get messages from a channel

send_via_power_automate

Send message via Power Automate (bypasses Graph restrictions)

Examples

{
  "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

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/imatiach-msft/teams-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server