AI-native Microsoft Teams integration — read conversations, send messages, and manage members via the Teams Chat Service REST API.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add microsoft-teams-api --env TEAMS_TOKEN='<TEAMS_TOKEN>' --env TEAMS_BEARER_TOKEN='<TEAMS_BEARER_TOKEN>' --env TEAMS_SUBSTRATE_TOKEN='<TEAMS_SUBSTRATE_TOKEN>' --env TEAMS_IMAGE_DESCRIPTION_API_KEY='<TEAMS_IMAGE_DESCRIPTION_API_KEY>' -- npx -y teams-api~/.codex/config.toml
[mcp_servers.microsoft-teams-api]
command = "npx"
args = ["-y", "teams-api"]
env = { TEAMS_TOKEN = "<TEAMS_TOKEN>", TEAMS_BEARER_TOKEN = "<TEAMS_BEARER_TOKEN>", TEAMS_SUBSTRATE_TOKEN = "<TEAMS_SUBSTRATE_TOKEN>", TEAMS_IMAGE_DESCRIPTION_API_KEY = "<TEAMS_IMAGE_DESCRIPTION_API_KEY>" }
# codex mcp add microsoft-teams-api --env TEAMS_TOKEN='<TEAMS_TOKEN>' --env TEAMS_BEARER_TOKEN='<TEAMS_BEARER_TOKEN>' --env TEAMS_SUBSTRATE_TOKEN='<TEAMS_SUBSTRATE_TOKEN>' --env TEAMS_IMAGE_DESCRIPTION_API_KEY='<TEAMS_IMAGE_DESCRIPTION_API_KEY>' -- npx -y teams-api~/.cursor/mcp.json
{
"mcpServers": {
"microsoft-teams-api": {
"command": "npx",
"args": [
"-y",
"teams-api"
],
"env": {
"TEAMS_TOKEN": "<TEAMS_TOKEN>",
"TEAMS_BEARER_TOKEN": "<TEAMS_BEARER_TOKEN>",
"TEAMS_SUBSTRATE_TOKEN": "<TEAMS_SUBSTRATE_TOKEN>",
"TEAMS_IMAGE_DESCRIPTION_API_KEY": "<TEAMS_IMAGE_DESCRIPTION_API_KEY>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"microsoft-teams-api": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"teams-api"
],
"env": {
"TEAMS_TOKEN": "<TEAMS_TOKEN>",
"TEAMS_BEARER_TOKEN": "<TEAMS_BEARER_TOKEN>",
"TEAMS_SUBSTRATE_TOKEN": "<TEAMS_SUBSTRATE_TOKEN>",
"TEAMS_IMAGE_DESCRIPTION_API_KEY": "<TEAMS_IMAGE_DESCRIPTION_API_KEY>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"microsoft-teams-api": {
"command": "npx",
"args": [
"-y",
"teams-api"
],
"env": {
"TEAMS_TOKEN": "<TEAMS_TOKEN>",
"TEAMS_BEARER_TOKEN": "<TEAMS_BEARER_TOKEN>",
"TEAMS_SUBSTRATE_TOKEN": "<TEAMS_SUBSTRATE_TOKEN>",
"TEAMS_IMAGE_DESCRIPTION_API_KEY": "<TEAMS_IMAGE_DESCRIPTION_API_KEY>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"microsoft-teams-api": {
"command": "npx",
"args": [
"-y",
"teams-api"
],
"env": {
"TEAMS_TOKEN": "<TEAMS_TOKEN>",
"TEAMS_BEARER_TOKEN": "<TEAMS_BEARER_TOKEN>",
"TEAMS_SUBSTRATE_TOKEN": "<TEAMS_SUBSTRATE_TOKEN>",
"TEAMS_IMAGE_DESCRIPTION_API_KEY": "<TEAMS_IMAGE_DESCRIPTION_API_KEY>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"microsoft-teams-api": {
"command": "npx",
"args": [
"-y",
"teams-api"
],
"env": {
"TEAMS_TOKEN": "<TEAMS_TOKEN>",
"TEAMS_BEARER_TOKEN": "<TEAMS_BEARER_TOKEN>",
"TEAMS_SUBSTRATE_TOKEN": "<TEAMS_SUBSTRATE_TOKEN>",
"TEAMS_IMAGE_DESCRIPTION_API_KEY": "<TEAMS_IMAGE_DESCRIPTION_API_KEY>"
}
}
}
}Environment variables
TEAMS_TOKENTEAMS_BEARER_TOKENTEAMS_SUBSTRATE_TOKENTEAMS_IMAGE_DESCRIPTION_API_KEY
Replace the placeholders with your own credentials and keep them out of version control.