Teams Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Teams Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A secure Microsoft Teams MCP server using only official Microsoft packages.
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.
az login) - required for authenticationnpm install
npm run buildThe 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:
{"message": "Hello"}# 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!"}'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"]
}
}
}| 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) |
{
"tool": "send_via_power_automate",
"arguments": {
"flowUrl": "https://....powerplatform.com/.../invoke?api-version=1",
"message": "Hello from MCP!"
}
}{
"tool": "send_chat_message",
"arguments": {
"chatId": "19:[email protected]",
"message": "Hello from MCP!"
}
}MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.