/ Annuaire / Playground / Microsoft Teams
● Communauté InditexTech 🔑 Nécessite votre clé

Microsoft Teams

par InditexTech · InditexTech/mcp-teams-server

Lire les canaux Teams, poster des messages et @-mentionner les ingénieurs en langage naturel — un pont chat-ops pour les équipes qui vivent dans Microsoft Teams.

L'MCP communautaire d'Inditex pour Microsoft Teams encapsule l'API Graph pour permettre à un agent de lire les messages de canal, poster des messages/réponses, @-mentionner des utilisateurs et lister les équipes/canaux. Nécessite l'enregistrement d'une application Azure AD avec les portées Graph choisies. Excellent pour les communications d'incident et l'automatisation des standups.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

ms-teams.replay ▶ prêt
0/0

Installer

Choisissez votre client

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

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

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

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

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

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

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

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

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

Continue utilise un tableau d'objets serveur plutôt qu'une map.

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

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

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

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : Microsoft Teams

Refléter un fil d'incident de style Slack dans un canal Teams

👤 Ops / astreinte dans les organisations Microsoft ⏱ ~30 min advanced

Quand l'utiliser : Sentry signale un problème critique ; vous voulez le résumé plus la @-mention de l'astreinte affichée dans votre canal Teams #incidents.

Prérequis
  • Enregistrement d'application Azure AD avec les portées Graph ChannelMessage.Send, Channel.ReadBasic.All, User.Read.All — entra.microsoft.com → App registrations → New, accorder le consentement administrateur
  • ID d'équipe et ID de canal du canal cible — Clic droit sur le canal → Obtenir le lien vers le canal ; les identifiants sont intégrés dans l'URL
Déroulement
  1. Rédiger l'alerte
    À partir du problème Sentry [coller], rédigez un résumé d'incident sur 3 lignes : ce qui s'est cassé, l'impact utilisateur, la version suspectée.✓ Copié
    → Résumé concis
  2. Identifier qui @-mentionner
    Qui est d'astreinte ? Résolvez leur identifiant utilisateur Teams à partir de leur email [email]. Retournez l'objet mention.✓ Copié
    → Utilisateur résolu + identifiant AAD
  3. Poster sur le canal
    Poster le résumé sur le canal <id>, en @-mentionnant l'ingénieur d'astreinte. Poster également une réponse de suivi avec un lien vers le problème Sentry.✓ Copié
    → messageId retourné ; visible dans Teams

Résultat : Chaque incident obtient un message structuré dans Teams avec les bonnes personnes balisées.

Pièges
  • Les @-mentions nécessitent un objet mention avec l'identifiant AAD ; le texte simple @nom ne notifie pas — Résolvez l'identifiant AAD de l'utilisateur via Graph d'abord, transmettez dans le tableau mentions de la charge utile du message
  • Le consentement administrateur est requis ; l'application ne fonctionnera pas tant que le consentement n'est pas accordé à l'échelle de l'organisation — Demandez à un administrateur AAD d'accorder le consentement administrateur pour les portées de votre application
Combiner avec : sentry

Poster un résumé du standup quotidien du génie à un canal d'équipe

👤 Responsables techniques dans les organisations MS-Teams ⏱ ~20 min intermediate

Quand l'utiliser : Chaque matin : poster « les PRs fusionnées hier + astreinte d'aujourd'hui + P1s ouverts » vers #eng-standup.

Déroulement
  1. Assembler le résumé en amont
    Extraire les PRs GitHub fusionnées hier pour nos dépôts + astreinte actuelle + tickets P1 ouverts. Résumer en 8 points.✓ Copié
    → Contenu du résumé
  2. Poster avec mise en forme
    Poster sur le canal <id> avec des en-têtes markdown (Teams prend en charge la mise en forme de base dans les messages).✓ Copié
    → Message visible
  3. Épingler la discussion
    Optionnellement, répondre au fil de standup d'hier le marquant comme obsolète.✓ Copié
    → Réponse affichée

Résultat : Un standup quotidien prévisible dans Teams ; personne n'a besoin de l'exécuter manuellement.

Pièges
  • Le rendu markdown de Teams est limité — certains markdown GitHub se cassent — Utilisez uniquement du texte brut + gras + listes ; évitez les tableaux et les blocs de code imbriqués
Combiner avec : github · linear

Résumer ce qui s'est passé dans un canal occupé pendant votre absence

👤 Toute personne revenant de congés ou d'une longue réunion ⏱ ~10 min beginner

Quand l'utiliser : Vous avez manqué 200 messages dans #platform et voulez l'essentiel.

Déroulement
  1. Récupérer les messages récents
    Obtenir les 200 derniers messages du canal <id>. Retourner texte + auteur + horodatage.✓ Copié
    → Flux de messages
  2. Regrouper par sujets
    Regroupez les messages en 3–5 discussions thématiques. Nommez chaque sujet et listez les points clés.✓ Copié
    → Résumés des sujets
  3. Signaler tout ce qui m'est destiné
    Mettez en évidence tout message qui me @-mentionne (email <email>) ou est une réponse à mes anciens messages. Ce sont des incontournables.✓ Copié
    → Liste d'actions personnelles

Résultat : Une mise à jour de 30 secondes sur un canal bruyant.

Pièges
  • Tirer les longs fils heurte les limites de taille des messages — Paginez par lots de 50 ; résumez par lot avant le récapitulatif final

Router les questions entrantes des clients vers la bonne équipe via @-mentions

👤 Équipe d'opérations de succès client ⏱ ~20 min intermediate

Quand l'utiliser : Un partenaire pose une question technique dans un canal partagé ; vous voulez la router vers l'expert du domaine.

Déroulement
  1. Classer la question
    Lisez ce message [coller]. Quelle équipe interne en est propriétaire (facturation, intégrations, données) ?✓ Copié
    → Étiquette d'équipe unique
  2. Trouver le bon ingénieur
    À partir de notre rotation d'astreinte [coller ou rechercher], qui est d'astreinte pour cette équipe aujourd'hui ? Retourner l'identifiant AAD.✓ Copié
    → Personne + identifiant AAD
  3. Répondre avec la mention
    Répondre dans le même fil en @-mentionnant cette personne et en lui demandant de jeter un coup d'œil.✓ Copié
    → Réponse affichée avec mention fonctionnelle

Résultat : Les questions ne s'éternisent jamais sans propriétaire dans un canal partagé.

Pièges
  • Router vers quelqu'un en congés est pire que de ne pas router — Vérifiez la référence croisée du calendrier/absence du bureau ; escaladez vers la sauvegarde si le principal est absent

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

ms-teams + sentry

Poster les alertes Sentry sur Teams avec @-mention à l'astreinte

Pour le problème Sentry <id>, résumez et postez sur le canal Teams <id>, en mentionnant l'ingénieur d'astreinte <email>.✓ Copié
ms-teams + github

Poster les demandes de révision PR GitHub sur Teams

Lorsqu'une PR est ouverte balisée 'needs-platform-review', postez un message Teams dans #platform avec un lien et @-mentionnez la rotation des réviseurs.✓ Copié
ms-teams + monday

Poster les mises à jour d'état monday.com sur un canal de projet Teams

Chaque vendredi, résumez les éléments du tableau monday <id> déplacés cette semaine, postez sur Teams #proj-atlas.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
list_teams Découvrir les équipes dont le bot est membre 1 appel Graph
list_channels team_id Inventorier les canaux dans une équipe 1 appel Graph
list_messages team_id, channel_id, top? Lire les messages de canal récents 1 appel Graph
send_message team_id, channel_id, content, mentions? Poster sur un canal 1 appel Graph
send_reply team_id, channel_id, message_id, content, mentions? Répondre à l'intérieur d'une discussion existante 1 appel Graph
resolve_user email|user_principal_name Avant de construire un objet mention 1 appel Graph

Coût et limites

Coût d'exécution

Quota d'API
Limitation de Microsoft Graph : ~10k requêtes par 10 min par application par locataire
Tokens par appel
Récupération des messages du canal : 200–1500 jetons par page.
Monétaire
Gratuit avec une organisation M365 qui a les licences Teams.
Astuce
Mettez en cache les ID d'équipe/canal — ils changent rarement. Résolvez les identifiants AAD des utilisateurs une fois par email et réutilisez.

Sécurité

Permissions, secrets, portée

Portées minimales : ChannelMessage.Send Channel.ReadBasic.All User.Read.All
Stockage des identifiants : Identifiant client Azure AD, secret client, identifiant locataire comme variables d'environnement
Sortie de données : Tous les appels à graph.microsoft.com (au sein de votre locataire)
Ne jamais accorder : Group.ReadWrite.All Directory.ReadWrite.All

Dépannage

Erreurs courantes et correctifs

AADSTS70011: Portée invalide

Nom de portée incorrect ou non accordé. Le consentement administrateur est requis pour les portées d'application Graph.

Vérifier : Vérifiez App Registration → API Permissions → la colonne État doit afficher « Accordé »
403 Interdit sur sendMessage

L'application n'a pas la permission ChannelMessage.Send, ou l'utilisateur n'est pas membre de l'équipe.

@-mention ne notifie pas l'utilisateur

Vous avez utilisé du texte brut @nom au lieu du tableau mentions avec l'identifiant AAD. Résolvez l'utilisateur d'abord, puis incluez l'objet mention.

429 limité

Trop d'appels Graph. Recul exponentiel ; regroupez si possible ; mettez en cache les ID.

Alternatives

Microsoft Teams vs autres

AlternativeQuand l'utiliserCompromis
Slack MCPL'équipe est sur SlackPlateforme différente ; Slack MCP est plus simple à authentifier
Power Automate / FlowVous voulez une automatisation sans code dans M365Moins flexible pour les flux de travail pilotés par l'agent IA

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills