/ Diretório / Playground / Microsoft Teams
● Comunidade InditexTech 🔑 Requer sua chave

Microsoft Teams

por InditexTech · InditexTech/mcp-teams-server

Leia canais do Teams, envie mensagens e mencione engenheiros com @-mention em linguagem natural — uma ponte de chat-ops para times que usam Microsoft Teams.

MCP comunitário da Inditex para Microsoft Teams que envolve a Graph API para permitir que um agente leia mensagens de canal, envie mensagens/respostas, mencione usuários com @, e liste times/canais. Requer registro de aplicativo Azure AD com escopos Graph escolhidos. Ótimo para comunicações de incidentes e automação de standups.

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

ms-teams.replay ▶ pronto
0/0

Instalar

Escolha seu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ms-teams": {
      "command": "uvx",
      "args": [
        "mcp-teams-server"
      ]
    }
  }
}

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ms-teams": {
      "command": "uvx",
      "args": [
        "mcp-teams-server"
      ]
    }
  }
}

Cursor usa o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ms-teams": {
      "command": "uvx",
      "args": [
        "mcp-teams-server"
      ]
    }
  }
}

Clique no ícone MCP Servers na barra lateral do Cline, depois "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ms-teams": {
      "command": "uvx",
      "args": [
        "mcp-teams-server"
      ]
    }
  }
}

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ms-teams",
      "command": "uvx",
      "args": [
        "mcp-teams-server"
      ]
    }
  ]
}

O Continue usa um array de objetos de servidor em vez de um map.

~/.config/zed/settings.json
{
  "context_servers": {
    "ms-teams": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-teams-server"
        ]
      }
    }
  }
}

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

claude mcp add ms-teams -- uvx mcp-teams-server

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: Microsoft Teams

Espelhar uma thread de incidente ao estilo Slack em um canal do Teams

👤 Ops / on-call em organizações Microsoft ⏱ ~30 min advanced

Quando usar: Sentry dispara um problema crítico; você quer o resumo mais a menção com @ do on-call postado no canal Teams #incidents.

Pré-requisitos
  • Registro de aplicativo Azure AD com escopos Graph ChannelMessage.Send, Channel.ReadBasic.All, User.Read.All — entra.microsoft.com → App registrations → New, conceder consentimento do administrador
  • ID do Time e ID do Canal do canal alvo — Clique com o botão direito no canal → Get link to channel; IDs incorporados na URL
Fluxo
  1. Compor o alerta
    A partir do problema Sentry [paste], rascunhe um resumo de incidente de 3 linhas: o que quebrou, impacto no usuário, lançamento suspeito.✓ Copiado
    → Resumo conciso
  2. Identificar quem mencionar com @
    Quem está on-call? Resolva sua id de usuário do Teams a partir do e-mail [email]. Retorne o objeto de menção.✓ Copiado
    → Usuário resolvido + id AAD
  3. Postar no canal
    Poste o resumo no canal <id>, mencionando com @ o engenheiro on-call. Também poste uma resposta de acompanhamento com um link para o problema Sentry.✓ Copiado
    → messageId retornado; visível no Teams

Resultado: Cada incidente recebe uma mensagem estruturada no Teams com as pessoas certas marcadas.

Armadilhas
  • As menções com @ precisam de um objeto mention com id AAD; texto simples @name não notifica — Resolva a id AAD do usuário via Graph primeiro, passe na matriz de menções do payload da mensagem
  • Consentimento do administrador necessário; o aplicativo não funcionará até que o consentimento seja concedido em toda a organização — Peça a um administrador AAD para conceder consentimento do administrador para os escopos do seu aplicativo
Combine com: sentry

Postar um resumo diário de standup de engenharia em um canal do time

👤 Tech leads em organizações MS-Teams ⏱ ~20 min intermediate

Quando usar: Todas as manhãs: poste 'PRs mesclados ontem + on-call de hoje + P1s abertos' em #eng-standup.

Fluxo
  1. Montar o resumo upstream
    Puxe os PRs GitHub mesclados ontem de nossos repositórios + on-call atual + tickets P1 abertos. Resuma em 8 bullets.✓ Copiado
    → Conteúdo do resumo
  2. Postar com formatação
    Poste no canal <id> com cabeçalhos markdown (Teams suporta formatação básica em mensagens).✓ Copiado
    → Mensagem visível
  3. Fixar a thread
    Opcionalmente, responda à thread de standup de ontem marcando-a como desatualizada.✓ Copiado
    → Resposta postada

Resultado: Um standup diário previsível no Teams; ninguém precisa executá-lo manualmente.

Armadilhas
  • A renderização de markdown do Teams é limitada — algum markdown GitHub quebra — Use apenas texto simples + negrito + listas; evite tabelas e blocos de código aninhados
Combine com: github · linear

Resumir o que aconteceu em um canal ocupado enquanto você estava ausente

👤 Qualquer pessoa retornando de PTO ou uma longa reunião ⏱ ~10 min beginner

Quando usar: Você perdeu 200 mensagens em #platform e quer o essencial.

Fluxo
  1. Buscar mensagens recentes
    Obtenha as últimas 200 mensagens no canal <id>. Retorne texto + autor + timestamp.✓ Copiado
    → Fluxo de mensagens
  2. Agrupar em tópicos
    Agrupe mensagens em 3–5 threads temáticas. Nomeie cada tópico e liste os pontos-chave.✓ Copiado
    → Resumos de tópicos
  3. Sinalizar qualquer coisa direcionada a mim
    Destaque qualquer mensagem que me mencione com @ (e-mail <email>) ou seja uma resposta às minhas mensagens anteriores. Essas são leitura obrigatória.✓ Copiado
    → Lista de ações pessoais

Resultado: Uma atualização de 30 segundos em um canal barulhento.

Armadilhas
  • Puxar threads longas atinge limites de tamanho de mensagem — Pagine em lotes de 50; resuma por lote antes do rollup final

Rotear perguntas de clientes de entrada para o time certo via menções com @

👤 Ops de sucesso do cliente ⏱ ~20 min intermediate

Quando usar: Um parceiro faz uma pergunta técnica em um canal compartilhado; você quer que seja roteado para o especialista do domínio.

Fluxo
  1. Classificar a pergunta
    Leia esta mensagem [paste]. Qual time interno possui isso (faturamento, integrações, dados)?✓ Copiado
    → Rótulo de um único time
  2. Resolver o engenheiro certo
    A partir de nossa rota on-call [paste or lookup], quem está on-call para esse time hoje? Retorne id AAD.✓ Copiado
    → Pessoa + id AAD
  3. Responder com a menção
    Responda na mesma thread mencionando essa pessoa com @ e pedindo que ela dê uma olhada.✓ Copiado
    → Resposta postada com menção funcionando

Resultado: Perguntas nunca ficam sem dono em um canal compartilhado.

Armadilhas
  • Rotear para alguém em PTO é pior do que não rotear — Faça referência cruzada com o calendário/ausência do escritório; escale para backup se o principal estiver fora

Combinações

Combine com outros MCPs para 10× de alavancagem

ms-teams + sentry

Postar alertas Sentry no Teams com menção com @ para on-call

Para o problema Sentry <id>, resuma e poste no canal Teams <id>, mencionando o engenheiro on-call <email>.✓ Copiado
ms-teams + github

Postar solicitações de revisão de PR do GitHub no Teams

Quando um PR é aberto marcado com 'needs-platform-review', poste uma mensagem do Teams em #platform com um link e mencione com @ a rotação do revisor.✓ Copiado
ms-teams + monday

Postar atualizações de status monday.com em um canal do projeto Teams

Todas as sextas-feiras, resuma os itens do quadro monday <id> movidos esta semana, poste no Teams #proj-atlas.✓ Copiado

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
list_teams Descobrir times dos quais o bot é membro 1 chamada de Graph
list_channels team_id Inventariar canais em um time 1 chamada de Graph
list_messages team_id, channel_id, top? Ler mensagens recentes do canal 1 chamada de Graph
send_message team_id, channel_id, content, mentions? Postar em um canal 1 chamada de Graph
send_reply team_id, channel_id, message_id, content, mentions? Responder dentro de uma thread existente 1 chamada de Graph
resolve_user email|user_principal_name Antes de construir um objeto de menção 1 chamada de Graph

Custo e limites

O que custa rodar

Cota de API
Limitação de Graph da Microsoft: ~10k requisições por 10 min por app por tenant
Tokens por chamada
Busca de mensagem de canal: 200–1500 tokens por página.
Monetário
Grátis com uma organização M365 que tenha licenças Teams.
Dica
Cache IDs de time/canal — eles raramente mudam. Resolva ids AAD de usuário uma vez por e-mail e reutilize.

Segurança

Permissões, segredos, alcance

Escopos mínimos: ChannelMessage.Send Channel.ReadBasic.All User.Read.All
Armazenamento de credenciais: ID do cliente Azure AD, segredo do cliente, id do tenant como variáveis de ambiente
Saída de dados: Todas as chamadas para graph.microsoft.com (dentro do seu tenant)
Nunca conceda: Group.ReadWrite.All Directory.ReadWrite.All

Solução de problemas

Erros comuns e correções

AADSTS70011: Invalid scope

Nome do escopo incorreto ou não concedido. Consentimento do administrador necessário para escopos de app Graph.

Verificar: Verifique App Registration → API Permissions → A coluna Status deve mostrar 'Concedido'
403 Forbidden on sendMessage

O app não tem permissão ChannelMessage.Send, ou o usuário não é membro do time.

@-mention doesn't notify the user

Você usou texto simples @name em vez da matriz de menções com id AAD. Resolva o usuário primeiro, depois inclua o objeto de menção.

429 throttled

Muitas chamadas de Graph. Recue exponencialmente; agrupe quando possível; cache IDs.

Alternativas

Microsoft Teams vs. outros

AlternativaQuando usarTroca
Slack MCPTime está no SlackPlataforma diferente; Slack MCP é mais simples de autenticar
Power Automate / FlowVocê quer automação sem código dentro de M365Menos flexível para fluxos de trabalho orientados por agente IA

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills