Skip to main content
Glama
m0nkmaster
by m0nkmaster

Microsoft Teams MCP Server & CLI

CI npm version npm downloads License: MIT Node.js

Ermöglichen Sie KI den einfachen Zugriff auf Microsoft Teams mit Ihrem normalen Teams-Login.

[!NOTE]

Kein Azure-Setup, keine App-Registrierung, Graph-Berechtigungen oder IT-Support erforderlich.

Durchsuchen Sie Nachrichten und E-Mails, holen Sie ungelesene Chats nach, lesen Sie Threads, senden Sie Antworten, rufen Sie Besprechungstranskripte ab und vieles mehr.

Warum msteams-mcp?

  • Echte Arbeit erledigen – Suchen, ungelesene Chats, Threads, Antworten, Personen, Kanäle, Besprechungen, Transkripte, Dateien, Reaktionen und mehr.

  • Einmal anmelden – Token werden automatisch aktualisiert und der Browser bleibt bei Routinevorgängen außen vor.

  • Sicher – Der Assistent hat nur Ihre vorhandenen Teams-Berechtigungen, mit lokal verschlüsselten Sitzungsdaten.

  • Überall nutzbar – Jede Funktion funktioniert sowohl über MCP-Clients als auch über die integrierte msteams-CLI.

Related MCP server: teams-mcp

Schnellstart

Voraussetzungen

  • Node.js 18+

  • Ein Microsoft-Konto mit Teams-Zugriff

  • Installierter Google Chrome, Microsoft Edge oder Chromium-Browser

Konfigurieren Sie Ihren MCP-Client

Fügen Sie Ihrer MCP-Client-Konfiguration (z.B. Claude Desktop, Windsurf, Cursor) hinzu:

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

Das war's. npx lädt die neueste Version herunter und führt sie aus. Bitten Sie Ihren Assistenten, einmal teams_login aufzurufen, schließen Sie die normale Microsoft-Anmeldung im Browser ab, und beginnen Sie dann mit der Nutzung von Teams.

Funktionsweise

Dieser Server greift direkt auf Microsofts Teams-Dienste zu (Substrate, chatsvc, CSA), wobei die authentifizierte Sitzung verwendet wird, die von der Teams-Web-App erstellt wurde.

  1. teams_login öffnet einen Browser für Ihre normale Microsoft-Anmeldung.

  2. Die resultierenden OAuth-Token und Sitzungsdaten werden verschlüsselt und lokal zwischengespeichert.

  3. Routinevorgänge verwenden diese Token direkt, ohne Browser-Automatisierung.

  4. Ablaufende Token werden automatisch über HTTP aktualisiert, mit Headless-Browser-SSO als Fallback.

Ihr Zugriff bleibt auf das beschränkt, was Ihr Teams-Konto bereits sehen und tun kann.

Aus dem Quellcode (Alternative)

Wenn Sie es vorziehen, aus einem lokalen Klon zu starten:

git clone https://github.com/m0nkmaster/msteams-mcp.git
cd msteams-mcp
npm install && npm run build

Konfigurieren Sie dann Ihren MCP-Client:

{
  "mcpServers": {
    "teams": {
      "command": "node",
      "args": ["/path/to/msteams-mcp/dist/index.js"]
    }
  }
}

Der Server verwendet Ihr systemeigenes Chrome (macOS/Linux) oder Edge (Windows) für die Authentifizierung.

CLI

Die gleiche Funktionalität ist auch als eigenständiges Kommandozeilentool msteams verfügbar. Dies ist nützlich, wenn Sie Teams aus einer Shell oder einem Skript statt über einen MCP-Client verwenden möchten.

Installieren Sie es global von npm:

npm install -g msteams-mcp

Dies installiert zwei Binärdateien: msteams-mcp (der MCP-Server) und msteams (der CLI-Wrapper). Oder führen Sie es ohne Installation aus:

npx -y msteams-mcp msteams status

Siehe CLI-Nutzung für Befehle.

Verfügbare Werkzeuge

Suche & Entdeckung

Werkzeug

Beschreibung

teams_search

Durchsuchen Sie Teams-Nachrichten mit Operatoren (from:, sent:, in:, hasattachment:, usw.)

teams_search_email

Durchsuchen Sie E-Mails in Ihrem Postfach (gleiche Authentifizierung wie Teams – kein zusätzlicher Login)

teams_list_chats

Listen Sie aktuelle Unterhaltungen auf (1:1, Gruppe, Besprechung, Kanal) mit einer Vorschau der letzten Nachricht

teams_get_message

Rufen Sie eine einzelne Nachricht anhand ihrer ID mit vollem Inhalt ab (beliebiges Alter); enthält Reaktionen

teams_get_thread

Rufen Sie Nachrichten aus einer Unterhaltung/einem Thread ab; enthält Reaktionen; threadRootId schränkt auf einen Kanal-Thread ein; fromUrl akzeptiert einen Teams-Nachrichten-Deep-Link

teams_find_channel

Finden Sie Kanäle nach Namen (Ihre Teams + organisationsweite Suche)

teams_get_tags

Listen Sie die Kanal-Tags eines Teams für Tag-@Erwähnungen auf

teams_get_activity

Rufen Sie den Aktivitäts-Feed ab (Erwähnungen, Reaktionen, Antworten, Benachrichtigungen)

Nachrichtenübermittlung

Werkzeug

Beschreibung

teams_send_message

Senden Sie eine Nachricht (Standard: Selbst-Chat/Notizen). replyToMessageId für Thread-Antworten, subject für einen neuen Kanal-Thread, scheduleAt zum Planen, contentType (auto/text/html/markdown) zur Formatierungssteuerung

teams_wait_for_reply

Blockieren Sie, bis eine neue Nachricht eintrifft (serverseitige Abfrage, begrenzt auf ~110s); idempotenter after/nextAfter-Cursor – kombinieren Sie mit teams_send_message

teams_edit_message

Bearbeiten Sie eine Ihrer eigenen Nachrichten (contentType wird unterstützt)

teams_delete_message

Löschen Sie eine Ihrer eigenen Nachrichten (weiches Löschen)

Personen & Kontakte

Werkzeug

Beschreibung

teams_get_me

Rufen Sie das aktuelle Benutzerprofil ab (E-Mail, Name, ID)

teams_search_people

Suchen Sie nach Personen per Name oder E-Mail

teams_get_frequent_contacts

Rufen Sie häufig kontaktierte Personen ab (nützlich für die Namensauflösung)

teams_get_person

Lösen Sie einen oder mehrere MRIs zu vollständigen Profilen auf (Name, E-Mail, Jobtitel, Abteilung)

teams_get_chat

Rufen Sie die Unterhaltungs-ID für einen 1:1-Chat mit einer Person ab

teams_create_group_chat

Erstellen Sie einen neuen Gruppenchat mit mehreren Personen (2+ andere)

Organisation

Werkzeug

Beschreibung

teams_get_favorites

Rufen Sie angeheftete/lieblings-Unterhaltungen ab

teams_add_favorite

Heften Sie eine Unterhaltung an

teams_remove_favorite

Lösen Sie die Anheftung einer Unterhaltung

teams_save_message

Setzen Sie ein Lesezeichen für eine Nachricht

teams_unsave_message

Entfernen Sie ein Lesezeichen von einer Nachricht

teams_get_saved_messages

Rufen Sie die Liste der gespeicherten/gebuchten Nachrichten mit Quellenverweisen ab

teams_get_followed_threads

Rufen Sie die Liste der verfolgten Threads mit Quellenverweisen ab

teams_get_unread

Rufen Sie ungelesene Zähler ab (aggregiert oder pro Unterhaltung)

teams_mark_read

Markieren Sie eine Unterhaltung bis zu einer Nachricht als gelesen

Reaktionen

Werkzeug

Beschreibung

teams_search_emoji

Suchen Sie nach Emojis per Name (Standard + benutzerdefinierte Unternehmens-Emojis)

teams_add_reaction

Fügen Sie einem Emoji eine Reaktion zu einer Nachricht hinzu

teams_remove_reaction

Entfernen Sie eine Emoji-Reaktion von einer Nachricht

Schnellreaktionen: like, heart, laugh, surprised, sad, angry können direkt ohne Suche verwendet werden.

Kalender & Besprechungen

Werkzeug

Beschreibung

teams_get_meetings

Rufen Sie Besprechungen aus dem Kalender ab (Standard: nächste 7 Tage)

teams_get_transcript

Rufen Sie das Besprechungstranskript ab (erfordert threadId von teams_get_meetings)

teams_get_meetings gibt zurück: Betreff, Zeiten, Organisator, Beitritts-URL, threadId für den Besprechungschat. Verwenden Sie threadId mit teams_get_thread, um den Besprechungschat zu lesen, oder mit teams_get_transcript, um das vollständige Transkript mit Sprechern und Zeitstempeln zu erhalten.

Dateien

Werkzeug

Beschreibung

teams_get_shared_files

Rufen Sie Dateien und Links ab, die in einer Unterhaltung geteilt wurden (unterstützt Paginierung)

Gibt sowohl Dateien (Name, Erweiterung, URL, Größe) als auch Links (URL, Titel) zurück, zusammen mit der Person, die jedes Element geteilt hat. Funktioniert für Kanäle, Gruppenchats, 1:1-Chats und Besprechungschats.

Sitzung

Werkzeug

Beschreibung

teams_login

Manuellen Login auslösen (öffnet Browser)

teams_status

Authentifizierungs- und Sitzungsstatus prüfen

Suchoperatoren

Sowohl teams_search (Teams-Nachrichten) als auch teams_search_email (E-Mails) unterstützen native Operatoren:

from:sarah@company.com     # Messages/emails from person
sent:2026-01-20            # From specific date
sent:>=2026-01-15          # Since date
in:project-alpha           # Messages in channel (Teams only)
subject:"budget"           # By subject (email)
"Rob Smith"                # Find @mentions (name in quotes)
hasattachment:true         # With files
is:unread                  # Unread emails (email only)
NOT from:email@co.com      # Exclude results

Kombinieren Sie Operatoren: from:sarah@co.com sent:>=2026-01-18 hasattachment:true

Hinweis: @me, from:me, to:me funktionieren NICHT. Verwenden Sie zuerst teams_get_me, um Ihre E-Mail/Anzeigenamen zu erhalten. sent:today funktioniert, aber sent:lastweek und sent:thisweek funktionieren NICHT – verwenden Sie explizite Daten oder lassen Sie sie weg (Ergebnisse sind nach Aktualität sortiert).

MCP-Ressourcen

Der Server stellt auch passive Ressourcen für die Kontextermittlung bereit:

Ressourcen-URI

Beschreibung

teams://me/profile

Profil des aktuellen Benutzers

teams://me/favorites

Angeheftete Unterhaltungen

teams://status

Authentifizierungsstatus

CLI-Nutzung

msteams macht jedes Werkzeug verfügbar, das auch der MCP-Server bietet – volle Parität, gleiche Authentifizierung, gleiche Sitzungsdateien. Führen Sie es ohne Argumente aus, um alle Werkzeuge und Verknüpfungen aufzulisten.

Wenn Sie global installiert haben (npm install -g msteams-mcp), rufen Sie es direkt auf:

# List available tools and shortcuts
msteams

# Check authentication status
msteams status

# Log in (opens a browser; tries silent SSO first)
msteams login
msteams login --force        # clear session and re-login

# Search messages
msteams search "meeting notes"
msteams search "project" --from 0 --size 50

# Search emails
msteams teams_search_email --query "from:sarah@company.com"

# Send a message (default: your own notes/self-chat)
msteams send "Hello from Teams MCP!"
msteams send "Message" --to "conversation-id"

# People, contacts, favourites, activity, unread
msteams people "john smith"
msteams favorites
msteams activity
msteams unread

# Any tool by name (the teams_ prefix is optional)
msteams teams_search_emoji --query "heart"
msteams find_channel --query "support"

# Machine-readable output
msteams search "query" --json

Befehlsform: msteams <command> [primaryArg] [--key value ...]. Jeder nicht erkannte Befehl wird als Werkzeugname behandelt (teams_ wird automatisch hinzugefügt). Allgemeine Flags wie --to, --from, --size, --query, --force werden den passenden Werkzeugparametern zugeordnet; führen Sie msteams ohne Argumente aus, um die vollständige Liste zu sehen.

Aus einem Repository-Klon

Wenn Sie aus dem Quellcode arbeiten, ist dieselbe CLI mit npm run cli verbunden (läuft über tsx, kein Build erforderlich):

npm run cli                          # list tools
npm run cli -- search "your query"
npm run cli -- status
npm run cli -- send "Hi" --to "conversation-id"

Einschränkungen

  • Anmeldung erforderlich – Führen Sie teams_login aus, um sich zu authentifizieren (öffnet Browser)

  • Token-Ablauf – Tokens laufen nach ca. 1 Stunde ab; ein Headless-Refresh wird versucht, oder führen Sie bei Bedarf erneut teams_login aus

  • Undokumentierte APIs – Nutzt Microsofts interne APIs, die sich ohne Vorankündigung ändern können

  • Sucheinschränkungen – Nur Volltextsuche; Thread-Antworten, die nicht den Suchbegriffen entsprechen, werden nicht angezeigt (aber die LLM wird wahrscheinlich teams_get_thread für den vollständigen Kontext verwenden)

Sitzungsdateien

Sitzungsdateien werden in einem Benutzerkonfigurationsverzeichnis gespeichert (verschlüsselt):

  • macOS/Linux: ~/.teams-mcp-server/

  • Windows: %APPDATA%\teams-mcp-server\

Inhalt: session-state.json, token-cache.json, browser-profile/

Wenn Ihre Sitzung abläuft, rufen Sie teams_login auf oder löschen Sie das Konfigurationsverzeichnis.

Entwicklung

Für die lokale Entwicklung:

git clone https://github.com/m0nkmaster/msteams-mcp.git
cd msteams-mcp
npm install
npm run build

Entwicklungsbefehle:

npm run dev          # Run MCP server in dev mode
npm run build        # Compile TypeScript
npm run lint         # Run ESLint
npm test             # Run unit tests
npm run typecheck    # TypeScript type checking

Für die Entwicklung mit Hot Reload konfigurieren Sie Ihren MCP-Client:

{
  "mcpServers": {
    "teams": {
      "command": "npx",
      "args": ["tsx", "/path/to/msteams-mcp/src/index.ts"]
    }
  }
}

Siehe AGENTS.md für detaillierte Architektur- und Beitragsrichtlinien.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    B
    maintenance
    Enables AI assistants to interact with Microsoft Teams, users, chats, files, and organizational data via Microsoft Graph APIs, with added support for creating, updating, listing, and inspecting Teams meetings and calendar events.
    20
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    Enables AI assistants to interact with Microsoft Teams, users, and organizational data via Microsoft Graph APIs, including sending messages, managing chats and channels, and searching messages.
    MIT

View all related MCP servers

Related MCP Connectors

  • Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.

  • Voice and chat for AI agents — Discord, Teams, Meet, Slack, Zoom, Telegram, WhatsApp, NC Talk, SIP

  • Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

View all MCP Connectors

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/m0nkmaster/msteams-mcp'

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