Lets agents read and post Microsoft Teams messages, reply in threads, mention and list members.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add teams --env TEAMS_APP_ID='<TEAMS_APP_ID>' --env TEAMS_APP_PASSWORD='<TEAMS_APP_PASSWORD>' --env TEAMS_APP_TYPE='<TEAMS_APP_TYPE>' --env TEAMS_APP_TENANT_ID='<TEAMS_APP_TENANT_ID>' --env TEAM_ID='<TEAM_ID>' --env TEAMS_CHANNEL_ID='<TEAMS_CHANNEL_ID>' --env DOCKER_HOST='<DOCKER_HOST>' -- docker run -i --rm -e TEAMS_APP_ID -e TEAMS_APP_PASSWORD -e TEAMS_APP_TYPE -e TEAMS_APP_TENANT_ID -e TEAM_ID -e TEAMS_CHANNEL_ID ghcr.io/inditextech/mcp-teams-server~/.codex/config.toml
[mcp_servers.teams]
command = "docker"
args = ["run", "-i", "--rm", "-e", "TEAMS_APP_ID", "-e", "TEAMS_APP_PASSWORD", "-e", "TEAMS_APP_TYPE", "-e", "TEAMS_APP_TENANT_ID", "-e", "TEAM_ID", "-e", "TEAMS_CHANNEL_ID", "ghcr.io/inditextech/mcp-teams-server"]
env = { TEAMS_APP_ID = "<TEAMS_APP_ID>", TEAMS_APP_PASSWORD = "<TEAMS_APP_PASSWORD>", TEAMS_APP_TYPE = "<TEAMS_APP_TYPE>", TEAMS_APP_TENANT_ID = "<TEAMS_APP_TENANT_ID>", TEAM_ID = "<TEAM_ID>", TEAMS_CHANNEL_ID = "<TEAMS_CHANNEL_ID>", DOCKER_HOST = "<DOCKER_HOST>" }
# codex mcp add teams --env TEAMS_APP_ID='<TEAMS_APP_ID>' --env TEAMS_APP_PASSWORD='<TEAMS_APP_PASSWORD>' --env TEAMS_APP_TYPE='<TEAMS_APP_TYPE>' --env TEAMS_APP_TENANT_ID='<TEAMS_APP_TENANT_ID>' --env TEAM_ID='<TEAM_ID>' --env TEAMS_CHANNEL_ID='<TEAMS_CHANNEL_ID>' --env DOCKER_HOST='<DOCKER_HOST>' -- docker run -i --rm -e TEAMS_APP_ID -e TEAMS_APP_PASSWORD -e TEAMS_APP_TYPE -e TEAMS_APP_TENANT_ID -e TEAM_ID -e TEAMS_CHANNEL_ID ghcr.io/inditextech/mcp-teams-server~/.cursor/mcp.json
{
"mcpServers": {
"teams": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TEAMS_APP_ID",
"-e",
"TEAMS_APP_PASSWORD",
"-e",
"TEAMS_APP_TYPE",
"-e",
"TEAMS_APP_TENANT_ID",
"-e",
"TEAM_ID",
"-e",
"TEAMS_CHANNEL_ID",
"ghcr.io/inditextech/mcp-teams-server"
],
"env": {
"TEAMS_APP_ID": "<TEAMS_APP_ID>",
"TEAMS_APP_PASSWORD": "<TEAMS_APP_PASSWORD>",
"TEAMS_APP_TYPE": "<TEAMS_APP_TYPE>",
"TEAMS_APP_TENANT_ID": "<TEAMS_APP_TENANT_ID>",
"TEAM_ID": "<TEAM_ID>",
"TEAMS_CHANNEL_ID": "<TEAMS_CHANNEL_ID>",
"DOCKER_HOST": "<DOCKER_HOST>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"teams": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TEAMS_APP_ID",
"-e",
"TEAMS_APP_PASSWORD",
"-e",
"TEAMS_APP_TYPE",
"-e",
"TEAMS_APP_TENANT_ID",
"-e",
"TEAM_ID",
"-e",
"TEAMS_CHANNEL_ID",
"ghcr.io/inditextech/mcp-teams-server"
],
"env": {
"TEAMS_APP_ID": "<TEAMS_APP_ID>",
"TEAMS_APP_PASSWORD": "<TEAMS_APP_PASSWORD>",
"TEAMS_APP_TYPE": "<TEAMS_APP_TYPE>",
"TEAMS_APP_TENANT_ID": "<TEAMS_APP_TENANT_ID>",
"TEAM_ID": "<TEAM_ID>",
"TEAMS_CHANNEL_ID": "<TEAMS_CHANNEL_ID>",
"DOCKER_HOST": "<DOCKER_HOST>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"teams": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TEAMS_APP_ID",
"-e",
"TEAMS_APP_PASSWORD",
"-e",
"TEAMS_APP_TYPE",
"-e",
"TEAMS_APP_TENANT_ID",
"-e",
"TEAM_ID",
"-e",
"TEAMS_CHANNEL_ID",
"ghcr.io/inditextech/mcp-teams-server"
],
"env": {
"TEAMS_APP_ID": "<TEAMS_APP_ID>",
"TEAMS_APP_PASSWORD": "<TEAMS_APP_PASSWORD>",
"TEAMS_APP_TYPE": "<TEAMS_APP_TYPE>",
"TEAMS_APP_TENANT_ID": "<TEAMS_APP_TENANT_ID>",
"TEAM_ID": "<TEAM_ID>",
"TEAMS_CHANNEL_ID": "<TEAMS_CHANNEL_ID>",
"DOCKER_HOST": "<DOCKER_HOST>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"teams": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TEAMS_APP_ID",
"-e",
"TEAMS_APP_PASSWORD",
"-e",
"TEAMS_APP_TYPE",
"-e",
"TEAMS_APP_TENANT_ID",
"-e",
"TEAM_ID",
"-e",
"TEAMS_CHANNEL_ID",
"ghcr.io/inditextech/mcp-teams-server"
],
"env": {
"TEAMS_APP_ID": "<TEAMS_APP_ID>",
"TEAMS_APP_PASSWORD": "<TEAMS_APP_PASSWORD>",
"TEAMS_APP_TYPE": "<TEAMS_APP_TYPE>",
"TEAMS_APP_TENANT_ID": "<TEAMS_APP_TENANT_ID>",
"TEAM_ID": "<TEAM_ID>",
"TEAMS_CHANNEL_ID": "<TEAMS_CHANNEL_ID>",
"DOCKER_HOST": "<DOCKER_HOST>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"teams": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TEAMS_APP_ID",
"-e",
"TEAMS_APP_PASSWORD",
"-e",
"TEAMS_APP_TYPE",
"-e",
"TEAMS_APP_TENANT_ID",
"-e",
"TEAM_ID",
"-e",
"TEAMS_CHANNEL_ID",
"ghcr.io/inditextech/mcp-teams-server"
],
"env": {
"TEAMS_APP_ID": "<TEAMS_APP_ID>",
"TEAMS_APP_PASSWORD": "<TEAMS_APP_PASSWORD>",
"TEAMS_APP_TYPE": "<TEAMS_APP_TYPE>",
"TEAMS_APP_TENANT_ID": "<TEAMS_APP_TENANT_ID>",
"TEAM_ID": "<TEAM_ID>",
"TEAMS_CHANNEL_ID": "<TEAMS_CHANNEL_ID>",
"DOCKER_HOST": "<DOCKER_HOST>"
}
}
}
}Environment variables
TEAMS_APP_IDTEAMS_APP_PASSWORDTEAMS_APP_TYPETEAMS_APP_TENANT_IDTEAM_IDTEAMS_CHANNEL_IDDOCKER_HOST
Replace the placeholders with your own credentials and keep them out of version control.