teams-mcp-server
Click on "Install 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-mcp-serversend a message to the general channel in my team saying 'Hello everyone'"
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
MCP server for Microsoft Teams via Microsoft Graph API.
Tools
Tool | Description |
| Authenticate via device code flow |
| List joined teams |
| List channels in a team |
| List messages in a channel |
| List replies in a thread |
| Send a message to a channel |
| Reply to a thread |
| List chats |
| List messages in a chat |
| Send a chat message |
| Full-text search across chats and channels |
| Find a user |
| Get user's online status |
| Create 1:1 or group chats |
| Edit or delete messages |
| Manage reactions |
| Manage pinned messages |
| Mark chat read status |
| List members |
| List team tags (for @tag mentions in send/reply tools) |
| List pinned messages |
| Download an inline image (hostedContents) to a temp file |
Adaptive Card attachments (from bots) are automatically extracted as plain text.
Related MCP server: Teams MCP Server
Configuration
Requires an Azure AD app registration with delegated permissions for Microsoft Graph.
Claude Code (.mcp.json)
{
"mcpServers": {
"teams-mcp": {
"command": "uvx",
"args": ["--from", "git+https://github.com/ssasuoirafen/teams-mcp-server", "teams-mcp"],
"env": {
"TEAMS_MCP_TENANT_ID": "your-tenant-id",
"TEAMS_MCP_CLIENT_ID": "your-client-id"
}
}
}
}Variable | Description |
| Azure AD tenant ID |
| App registration client ID |
| (Optional) Comma-separated scopes |
Required permissions
The app registration needs delegated Microsoft Graph permissions. By default the server requests the .default scope, so Azure issues a token covering every permission consented on the app registration. A typical set (any subset works - .default picks up whatever is consented):
User.Read, User.ReadBasic.All, Team.ReadBasic.All, TeamMember.Read.All,
Channel.ReadBasic.All, ChannelMember.Read.All, ChannelMessage.Read.All,
ChannelMessage.Send, ChannelMessage.ReadWrite, Chat.Read, Chat.ReadWrite,
Presence.Read.All, TeamworkTag.ReadThese require tenant admin consent: TeamMember.Read.All, ChannelMember.Read.All, ChannelMessage.Read.All, ChannelMessage.ReadWrite. Set TEAMS_MCP_SCOPES (comma-separated) to request a narrower set; a tool that hits a missing permission returns the Graph API 403 error message.
Authentication
On first use, call the login tool. It returns a device code and URL. Open the URL in a browser, enter the code, then call complete_login. Tokens are cached in ~/.teams-mcp/token_cache.json.
Development
git clone https://github.com/ssasuoirafen/teams-mcp-server.git
cd teams-mcp-server
uv sync
uv run teams-mcpLicense
MIT
This server cannot be installed
Maintenance
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ssasuoirafen/teams-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server