Skip to main content
Glama

Teams MCP

npm version npm downloads codecov License: MIT GitHub stars

Ein Model Context Protocol (MCP)-Server, der eine nahtlose Integration mit Microsoft Graph-APIs bietet und es KI-Assistenten ermöglicht, mit Microsoft Teams, Benutzern, Chats, Dateien und Organisationsdaten zu interagieren.

📦 Installation

Um diesen MCP-Server in Cursor/Claude/VS Code zu verwenden, fügen Sie die folgende Konfiguration hinzu:

{
  "mcpServers": {
    "teams-mcp": {
      "command": "npx",
      "args": ["-y", "@floriscornel/teams-mcp@latest"]
    }
  }
}

Related MCP server: Meeting BaaS MCP Server

🚀 Funktionen

🔐 Authentifizierung

  • OAuth 2.0-Gerätecode-Authentifizierungsablauf mit Microsoft Graph

  • Sichere Token-Verwaltung, Cache-Persistenz und Erneuerung von Refresh-Tokens

  • Überprüfung des Authentifizierungsstatus und Unterstützung für Abmeldungen

  • Schreibgeschützter Modus mit reduzierten Berechtigungsbereichen (Scopes)

  • Direkte AUTH_TOKEN-Unterstützung für vorab ausgestellte Microsoft Graph-Zugriffstokens

👥 Benutzerverwaltung

  • Informationen zum aktuellen Benutzer abrufen

  • Suche nach Benutzern per Name oder E-Mail

  • Detaillierte Benutzerprofile abrufen

  • Zugriff auf Daten des Organisationsverzeichnisses

🏢 Microsoft Teams-Integration

  • Teams-Verwaltung

    • Liste der Teams, denen der Benutzer beigetreten ist

    • Zugriff auf Teamdetails und Metadaten

  • Kanal-Operationen

    • Liste der Kanäle innerhalb von Teams

    • Abrufen von Kanalnachrichten und Antworten

    • Senden von Nachrichten an Teamkanäle

    • Antworten auf bestehende Kanal-Threads

    • Bearbeiten und logisches Löschen von Kanalnachrichten und Antworten

    • Unterstützung für Nachrichtenwichtigkeitsstufen (normal, high, urgent)

    • Unterstützung für Inline-Bildanhänge via URL oder Base64-Daten

  • Teammitglieder

    • Liste der Teammitglieder und deren Rollen

    • Zugriff auf Mitgliederinformationen

    • Suche nach Benutzern für @mentions

💬 Chat & Messaging

  • 1:1- und Gruppen-Chats

    • Liste der Chats des Benutzers

    • Erstellen neuer 1:1- oder Gruppenunterhaltungen

    • Abrufen des Chat-Nachrichtenverlaufs mit Filtern, Sortierung und Paginierung

    • Abrufen aller verfügbaren Nachrichten via @odata.nextLink-Paginierung

    • Senden von Nachrichten an bestehende Chats

    • Bearbeiten zuvor gesendeter Chat-Nachrichten

    • Logisches Löschen von Chat-Nachrichten

✏️ Nachrichtenverwaltung

  • Bearbeiten & Löschen

    • Aktualisieren (Bearbeiten) gesendeter Nachrichten in Chats und Kanälen

    • Logisches Löschen von Nachrichten in Chats und Kanälen (wird als gelöscht markiert, ohne dauerhafte Entfernung)

    • Nur Nachrichtenabsender können ihre eigenen Nachrichten aktualisieren/löschen

    • Unterstützung für Markdown-Formatierung, Erwähnungen und Wichtigkeitsstufen bei Bearbeitungen

📎 Medien & Anhänge

  • Gehostete Inhalte

    • Herunterladen gehosteter Inhalte (Bilder, Dateien) aus Chat- und Kanalnachrichten

    • Zugriff auf Inline-Bilder und Anhänge, die in Unterhaltungen geteilt wurden

    • Optionales direktes Speichern gehosteter Inhalte auf der Festplatte

  • Datei-Upload

    • Hochladen und Senden beliebiger Dateitypen (PDF, DOCX, XLSX, ZIP, Bilder usw.) an Kanäle und Chats

    • Unterstützung für große Dateien (>4 MB) über fortsetzbare Upload-Sitzungen

    • Kanal-Uploads erfolgen in SharePoint, Chat-Uploads in OneDrive

    • Optionaler Nachrichtentext, benutzerdefinierter Dateiname, Formatierung und Wichtigkeitsstufen

🔍 Erweiterte Suche & Erkennung

  • Nachrichtensuche

    • Suche über alle Teams-Kanäle und Chats hinweg unter Verwendung der Microsoft Search API

    • Unterstützung für KQL (Keyword Query Language)-Syntax

    • Filtern nach Absender, Erwähnungen, Anhängen, Lesestatus und Datumsbereichen

    • Abrufen aktueller Nachrichten mit erweiterten Filteroptionen

    • Finden von Nachrichten, die den aktuellen Benutzer erwähnen

Unterstützung für Rich-Message-Formatierung

Die folgenden Tools unterstützen Rich-Message-Formatierung in Teams-Kanälen und Chats:

  • send_channel_message

  • send_chat_message

  • reply_to_channel_message

  • update_channel_message

  • update_chat_message

  • send_file_to_channel

  • send_file_to_chat

Formatierungsoptionen

Sie können den Parameter format angeben, um die Nachrichtenformatierung zu steuern:

  • text (Standard): Klartext

  • markdown: Markdown-Formatierung (fett, kursiv, Listen, Links, Code usw.), die in bereinigtes HTML konvertiert wird

Wenn format auf markdown gesetzt ist, wird der Nachrichteninhalt mithilfe eines sicheren Markdown-Parsers in HTML konvertiert und bereinigt, um potenziell gefährliche Inhalte zu entfernen, bevor sie an Teams gesendet werden.

Wenn format nicht angegeben ist, wird die Nachricht als Klartext gesendet.

Beispielanwendung

{
  "teamId": "...",
  "channelId": "...",
  "message": "**Bold text** and _italic text_\n\n- List item 1\n- List item 2\n\n[Link](https://example.com)",
  "format": "markdown",
  "importance": "high"
}
{
  "chatId": "...",
  "message": "Simple plain text message",
  "format": "text"
}

Sicherheitsfunktionen

  • HTML-Bereinigung: Alle Markdown-Inhalte werden in HTML konvertiert und bereinigt, um potenziell gefährliche Elemente (Skripte, Event-Handler usw.) zu entfernen

  • Erlaubte Tags: Nur sichere HTML-Tags sind zulässig (p, strong, em, a, ul, ol, li, h1-h6, code, pre usw.)

  • Sichere Attribute: Nur sichere Attribute sind erlaubt

  • XSS-Prävention: Inhalte werden automatisch bereinigt, um Cross-Site-Scripting-Angriffe zu verhindern

Unterstützte Markdown-Funktionen

  • Textformatierung: Fett (**text**), kursiv (_text_), durchgestrichen (~~text~~)

  • Links: [text](url)

  • Listen: Mit Aufzählungszeichen (- item) und nummeriert (1. item)

  • Code: Inline `code` und Code-Blöcke

  • Überschriften: # H1 bis ###### H6

  • Blockzitate: > quoted text

  • Tabellen: GitHub-flavored Markdown-Tabellen

LLM-freundliches Inhaltsformat

Nachrichten, die von der Microsoft Graph API abgerufen werden, werden als rohes HTML mit Teams-spezifischen Tags zurückgegeben. Um diesen Inhalt für KI-Assistenten besser verwertbar zu machen, unterstützen die folgenden Tools eine automatische HTML-zu-Markdown-Konvertierung:

  • get_chat_messages

  • get_channel_messages

  • get_channel_message_replies

  • search_messages

  • get_my_mentions

Optionen für das Inhaltsformat

Verwenden Sie den Parameter contentFormat, um zu steuern, wie der Nachrichteninhalt zurückgegeben wird:

  • markdown (Standard): Konvertiert Teams-HTML in sauberes Markdown, optimiert für die LLM-Verarbeitung

  • raw: Gibt das ursprüngliche HTML von der Microsoft Graph API zurück

Was konvertiert wird

HTML-Element

Markdown-Ausgabe

<at id="0">Name</at> (Teams-Erwähnung)

@Name (mehrteilige Namen werden über Erwähnungs-Metadaten zusammengeführt)

<strong>text</strong>

**text**

<em>text</em>

*text*

<code>text</code>

`text`

<a href="url">text</a>

[text](url)

<ul><li>item</li></ul>

- item

<table>...</table>

GFM Markdown-Tabelle

<attachment id="...">

{attachment:id}

<systemEventMessage/>

(entfernt)

<hr>

---

 , &, etc.

Zu einfachen Zeichen dekodiert

Anhang-Metadaten

Nachrichten, die Dateianhänge oder Inline-Bilder enthalten, beinhalten ein attachments-Array in der Antwort mit Metadaten für jeden Anhang (id, name, contentType, contentUrl, thumbnailUrl). Die Inline-Marker {attachment:id} im Markdown-Inhalt korrelieren mit Einträgen in diesem Array, was es Konsumenten ermöglicht, Anhänge über download_message_hosted_content oder download_chat_hosted_content zu identifizieren und herunterzuladen.

Beispielanwendung

{
  "chatId": "19:meeting_...",
  "limit": 10,
  "contentFormat": "markdown"
}

Um das ursprüngliche HTML zu erhalten:

{
  "chatId": "19:meeting_...",
  "limit": 10,
  "contentFormat": "raw"
}

📦 Installation

# Install dependencies
npm install

# Build the project
npm run build

# Set up authentication
npm run auth

🔧 Konfiguration

Voraussetzungen

  • Node.js 18+

  • Microsoft 365-Konto mit entsprechenden Berechtigungen

  • Delegierte Microsoft Graph-Berechtigungen für die unten aufgeführten Scopes

Erforderliche Microsoft Graph-Berechtigungen

Vollständiger Modus (Standard):

  • User.Read - Benutzerprofil lesen

  • User.ReadBasic.All - Basis-Benutzerinformationen lesen

  • Team.ReadBasic.All - Teaminformationen lesen

  • Channel.ReadBasic.All - Kanalinformationen lesen

  • ChannelMessage.Read.All - Kanalnachrichten lesen

  • ChannelMessage.Send - Kanalnachrichten und Antworten senden

  • ChannelMessage.ReadWrite - Kanalnachrichten bearbeiten und löschen

  • Chat.Read - Chatnachrichten lesen (enthalten über schreibgeschützte Scopes)

  • Chat.ReadWrite - Chats erstellen und verwalten, Chatnachrichten senden/bearbeiten/löschen (ersetzt Chat.Read)

  • TeamMember.Read.All - Teammitglieder lesen

  • Files.ReadWrite.All - Erforderlich für Datei-Uploads in Kanäle und Chats

Schreibgeschützter Modus (TEAMS_MCP_READ_ONLY=true) — nur diese Scopes werden angefordert:

  • User.Read

  • User.ReadBasic.All

  • Team.ReadBasic.All

  • Channel.ReadBasic.All

  • ChannelMessage.Read.All

  • TeamMember.Read.All

  • Chat.Read

Authentifizierungsmodi

Vollzugriff:

npx @floriscornel/teams-mcp@latest authenticate

Schreibgeschützter Zugriff:

npx @floriscornel/teams-mcp@latest authenticate --read-only

Direkte Token-Injektion mit einem bestehenden Microsoft Graph JWT:

{
  "mcpServers": {
    "teams-mcp": {
      "command": "npx",
      "args": ["-y", "@floriscornel/teams-mcp@latest"],
      "env": {
        "AUTH_TOKEN": "<jwt-for-https://graph.microsoft.com>"
      }
    }
  }
}

Token-Speicherung

  • Auth-Metadaten werden lokal unter ~/.msgraph-mcp-auth.json gespeichert

  • Token-Cache wird lokal unter ~/.teams-mcp-token-cache.json gespeichert

🛠️ Verwendung

Starten des Servers

# Development mode with hot reload
npm run dev

# Production mode
npm run build && node dist/index.js

# Start in read-only mode (disables all write tools)
TEAMS_MCP_READ_ONLY=true node dist/index.js

CLI-Befehle

npx @floriscornel/teams-mcp@latest authenticate              # Authenticate with full scopes
npx @floriscornel/teams-mcp@latest authenticate --read-only  # Authenticate with read-only scopes
npx @floriscornel/teams-mcp@latest check                     # Check authentication status
npx @floriscornel/teams-mcp@latest logout                    # Clear authentication
npx @floriscornel/teams-mcp@latest auth                      # Alias for authenticate
npx @floriscornel/teams-mcp@latest                           # Start MCP server (default)

Umgebungsvariablen

  • TEAMS_MCP_READ_ONLY=true - Startet den MCP-Server im schreibgeschützten Modus

  • AUTH_TOKEN=<jwt> - Verwendet ein bereits vorhandenes Microsoft Graph-Zugriffstoken anstelle des MSAL-Logins

Schreibgeschützter Modus

Der Server unterstützt einen schreibgeschützten Modus, der alle Schreibvorgänge deaktiviert (Nachrichten senden, Chats erstellen, Dateien hochladen, Nachrichten bearbeiten/löschen) und nur Lese-Berechtigungen von Microsoft Graph anfordert.

Schreibgeschützten Modus aktivieren entweder über:

  • Umgebungsvariable: TEAMS_MCP_READ_ONLY=true

  • CLI-Flag: --read-only

Authentifizierung mit reduzierten Scopes:

npx @floriscornel/teams-mcp@latest authenticate --read-only

MCP-Serverkonfiguration (schreibgeschützt):

{
  "mcpServers": {
    "teams-mcp": {
      "command": "npx",
      "args": ["-y", "@floriscornel/teams-mcp@latest"],
      "env": {
        "TEAMS_MCP_READ_ONLY": "true"
      }
    }
  }
}

Moduswechsel: Beim Wechsel vom schreibgeschützten in den Vollmodus erkennt der Server die Diskrepanz bei den Scopes und warnt Sie, sich erneut zu authentifizieren:

npx @floriscornel/teams-mcp@latest authenticate

Schreibgeschützte Tools (16): auth_status, get_current_user, search_users, get_user, list_teams, list_channels, get_channel_messages, get_channel_message_replies, list_team_members, search_users_for_mentions, download_message_hosted_content, list_chats, get_chat_messages, download_chat_hosted_content, search_messages, get_my_mentions

Schreib-Tools im schreibgeschützten Modus deaktiviert (10): send_channel_message, reply_to_channel_message, update_channel_message, delete_channel_message, send_file_to_channel, send_chat_message, create_chat, update_chat_message, delete_chat_message, send_file_to_chat

Verfügbare MCP-Tools

Authentifizierung

  • auth_status - Aktuellen Authentifizierungsstatus prüfen

Benutzeroperationen

  • get_current_user - Informationen zum authentifizierten Benutzer abrufen

  • search_users - Nach Benutzern per Name oder E-Mail suchen

  • get_user - Detaillierte Benutzerinformationen per ID oder E-Mail abrufen

Teams-Operationen

  • list_teams - Liste der Teams, denen der Benutzer beigetreten ist

  • list_channels - Liste der Kanäle in einem bestimmten Team

  • get_channel_messages - Nachrichten aus einem Teamkanal abrufen, inklusive Zusammenfassungen von Anhängen und Auswahl des Inhaltsformats

  • get_channel_message_replies - Antworten auf eine bestimmte Kanalnachricht abrufen

  • send_channel_message - Nachricht an einen Teamkanal senden, mit optionalen Erwähnungen, Wichtigkeit und Bildanh

Install Server
A
security – no known vulnerabilities
A
license - permissive license
-
quality - not tested

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

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/floriscornel/teams-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server