# Microsoft 365 Teams

This MCP server lets an agent work with Teams chats, channel messages, and presence through Microsoft Graph. Use it to search conversations or send replies from your coding host.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 13
- Author: mindstone
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/mindstone/mcp-servers/tree/HEAD/connectors/microsoft-teams
- Updated: 2026-10-22
- HTML: https://affpapa.org/en/nevibecode/mcp/microsoft-365-teams

## What it does

The server can list chats and channel messages, start chats, send messages and replies, find colleagues, search message content, and read or change presence. Its Teams operations use Microsoft Graph.

A host application handles Microsoft OAuth and writes account credentials to files under `MS_CONFIG_DIR`; the server reads those files rather than starting sign-in itself. This means the host must complete authentication before the server can use the account. You also need Node.js 20+ and npm, and some Teams Graph APIs may require tenant administrator approval.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `MS_CLIENT_ID`, `MS_CONFIG_DIR`, `MS_ACCOUNT_EMAIL`, `MS_MCP_PACKAGE_ID`, `MICROSOFT_REQUEST_TIMEOUT_MS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env MS_CLIENT_ID=<MS_CLIENT_ID> --env MS_CONFIG_DIR=<MS_CONFIG_DIR> --env MS_ACCOUNT_EMAIL=<MS_ACCOUNT_EMAIL> --env MS_MCP_PACKAGE_ID=<MS_MCP_PACKAGE_ID> --env MICROSOFT_REQUEST_TIMEOUT_MS=<MICROSOFT_REQUEST_TIMEOUT_MS> --transport stdio microsoft-teams -- npx -y @mindstone/mcp-server-microsoft-teams
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add microsoft-teams --env MS_CLIENT_ID=<MS_CLIENT_ID> --env MS_CONFIG_DIR=<MS_CONFIG_DIR> --env MS_ACCOUNT_EMAIL=<MS_ACCOUNT_EMAIL> --env MS_MCP_PACKAGE_ID=<MS_MCP_PACKAGE_ID> --env MICROSOFT_REQUEST_TIMEOUT_MS=<MICROSOFT_REQUEST_TIMEOUT_MS> -- npx -y @mindstone/mcp-server-microsoft-teams
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "microsoft-teams": {
            "command": "npx",
            "args": [
                "-y",
                "@mindstone/mcp-server-microsoft-teams"
            ],
            "env": {
                "MS_CLIENT_ID": "<MS_CLIENT_ID>",
                "MS_CONFIG_DIR": "<MS_CONFIG_DIR>",
                "MS_ACCOUNT_EMAIL": "<MS_ACCOUNT_EMAIL>",
                "MS_MCP_PACKAGE_ID": "<MS_MCP_PACKAGE_ID>",
                "MICROSOFT_REQUEST_TIMEOUT_MS": "<MICROSOFT_REQUEST_TIMEOUT_MS>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "microsoft-teams": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@mindstone/mcp-server-microsoft-teams"
            ],
            "env": {
                "MS_CLIENT_ID": "<MS_CLIENT_ID>",
                "MS_CONFIG_DIR": "<MS_CONFIG_DIR>",
                "MS_ACCOUNT_EMAIL": "<MS_ACCOUNT_EMAIL>",
                "MS_MCP_PACKAGE_ID": "<MS_MCP_PACKAGE_ID>",
                "MICROSOFT_REQUEST_TIMEOUT_MS": "<MICROSOFT_REQUEST_TIMEOUT_MS>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e MS_CLIENT_ID=<MS_CLIENT_ID> -e MS_CONFIG_DIR=<MS_CONFIG_DIR> -e MS_ACCOUNT_EMAIL=<MS_ACCOUNT_EMAIL> -e MS_MCP_PACKAGE_ID=<MS_MCP_PACKAGE_ID> -e MICROSOFT_REQUEST_TIMEOUT_MS=<MICROSOFT_REQUEST_TIMEOUT_MS> microsoft-teams npx -y @mindstone/mcp-server-microsoft-teams
```
Replace <…> with your own values

## When to use it
- find conversations involving specific participants
- read recent messages from a chat or channel
- send a Teams message or reply
- start a chat with a colleague
- read or update presence

## Example prompts
- Find the project chat with Alice and Bob, then show its latest messages.
- Reply in the Teams channel that the updated forecast is ready.
- Check my current Microsoft Teams presence.

## Similar
- [Excel MCP Server](https://affpapa.org/en/nevibecode/mcp/excel-mcp-server.md) — MCP server · ★ 4268
- [kordoc](https://affpapa.org/en/nevibecode/mcp/kordoc.md) — MCP server · ★ 2795
- [Power BI Authoring MCP Server (Local)](https://affpapa.org/en/nevibecode/mcp/power-bi-authoring-mcp-server-local.md) — MCP server · ★ 1248
- [Microsoft 365 MCP Server](https://affpapa.org/en/nevibecode/mcp/microsoft-365-mcp-server.md) — MCP server · ★ 1085
- [anymd](https://affpapa.org/en/nevibecode/mcp/anymd.md) — MCP server · ★ 1054
- [Docling MCP](https://affpapa.org/en/nevibecode/mcp/docling-mcp.md) — MCP server · ★ 779

From the same set: [mindstone/mcp-servers](https://affpapa.org/en/nevibecode/by/mindstone/mcp-servers.md) — 24 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
