Skip to main content
Glama

Teams MCP

npm version npm downloads codecov License: MIT GitHub stars

Un servidor del Protocolo de Contexto de Modelo (MCP) que proporciona una integración fluida con las API de Microsoft Graph, permitiendo a los asistentes de IA interactuar con Microsoft Teams, usuarios, chats, archivos y datos organizativos.

📦 Instalación

Para usar este servidor MCP en Cursor/Claude/VS Code, añade la siguiente configuración:

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

Related MCP server: Meeting BaaS MCP Server

🚀 Características

🔐 Autenticación

  • Flujo de autenticación con código de dispositivo OAuth 2.0 con Microsoft Graph

  • Gestión segura de tokens, persistencia de caché y renovación de tokens de actualización

  • Verificación del estado de autenticación y soporte para cierre de sesión

  • Modo de solo lectura con ámbitos reducidos

  • Soporte directo para AUTH_TOKEN para tokens de acceso de Microsoft Graph preemitidos

👥 Gestión de usuarios

  • Obtener información del usuario actual

  • Buscar usuarios por nombre o correo electrónico

  • Recuperar perfiles de usuario detallados

  • Acceder a datos del directorio organizativo

🏢 Integración con Microsoft Teams

  • Gestión de equipos

    • Listar los equipos a los que se ha unido el usuario

    • Acceder a detalles y metadatos del equipo

  • Operaciones de canal

    • Listar canales dentro de los equipos

    • Recuperar mensajes y respuestas de canales

    • Enviar mensajes a canales de equipo

    • Responder a hilos de canal existentes

    • Editar y eliminar de forma lógica mensajes y respuestas de canal

    • Soporte para niveles de importancia de mensajes (normal, high, urgent)

    • Soporte para archivos adjuntos de imágenes en línea mediante URL o datos en base64

  • Miembros del equipo

    • Listar miembros del equipo y sus roles

    • Acceder a información de los miembros

    • Buscar usuarios para @menciones

💬 Chat y mensajería

  • Chats 1:1 y grupales

    • Listar los chats del usuario

    • Crear nuevas conversaciones 1:1 o grupales

    • Recuperar el historial de mensajes de chat con filtrado, ordenación y paginación

    • Obtener todos los mensajes disponibles mediante la paginación @odata.nextLink

    • Enviar mensajes a chats existentes

    • Editar mensajes de chat enviados anteriormente

    • Eliminar de forma lógica mensajes de chat

✏️ Gestión de mensajes

  • Editar y eliminar

    • Actualizar (editar) mensajes enviados en chats y canales

    • Eliminar de forma lógica mensajes en chats y canales (marca como eliminado sin eliminación permanente)

    • Solo los remitentes de los mensajes pueden actualizar/eliminar sus propios mensajes

    • Soporte para formato Markdown, menciones y niveles de importancia en las ediciones

📎 Medios y archivos adjuntos

  • Contenido alojado

    • Descargar contenido alojado (imágenes, archivos) de mensajes de chat y canal

    • Acceder a imágenes en línea y archivos adjuntos compartidos en conversaciones

    • Guardar opcionalmente el contenido alojado directamente en el disco

  • Carga de archivos

    • Cargar y enviar cualquier tipo de archivo (PDF, DOCX, XLSX, ZIP, imágenes, etc.) a canales y chats

    • Soporte para archivos grandes (>4 MB) mediante sesiones de carga reanudables

    • Las cargas a canales van a SharePoint y las cargas a chats van a OneDrive

    • Texto de mensaje opcional, nombre de archivo personalizado, formato y niveles de importancia

🔍 Búsqueda y descubrimiento avanzados

  • Búsqueda de mensajes

    • Buscar en todos los canales y chats de Teams usando la API de Microsoft Search

    • Soporte para sintaxis KQL (Keyword Query Language)

    • Filtrar por remitente, menciones, archivos adjuntos, estado de lectura y rangos de fechas

    • Obtener mensajes recientes con opciones de filtrado avanzadas

    • Encontrar mensajes que mencionen al usuario actual

Soporte para formato de mensaje enriquecido

Las siguientes herramientas admiten formato de mensaje enriquecido en canales y chats de Teams:

  • send_channel_message

  • send_chat_message

  • reply_to_channel_message

  • update_channel_message

  • update_chat_message

  • send_file_to_channel

  • send_file_to_chat

Opciones de formato

Puedes especificar el parámetro format para controlar el formato del mensaje:

  • text (predeterminado): Texto sin formato

  • markdown: Formato Markdown (negrita, cursiva, listas, enlaces, código, etc.) convertido a HTML saneado

Cuando format se establece en markdown, el contenido del mensaje se convierte a HTML utilizando un analizador de markdown seguro y se sanea para eliminar contenido potencialmente peligroso antes de enviarlo a Teams.

Si no se especifica format, el mensaje se enviará como texto sin formato.

Ejemplo de uso

{
  "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"
}

Características de seguridad

  • Saneamiento de HTML: Todo el contenido markdown se convierte a HTML y se sanea para eliminar elementos potencialmente peligrosos (scripts, controladores de eventos, etc.)

  • Etiquetas permitidas: Solo se permiten etiquetas HTML seguras (p, strong, em, a, ul, ol, li, h1-h6, code, pre, etc.)

  • Atributos seguros: Solo se permiten atributos seguros

  • Prevención de XSS: El contenido se sanea automáticamente para evitar ataques de cross-site scripting

Características de Markdown compatibles

  • Formato de texto: Negrita (**texto**), cursiva (_texto_), tachado (~~texto~~)

  • Enlaces: [texto](url)

  • Listas: Con viñetas (- elemento) y numeradas (1. elemento)

  • Código: En línea `código` y bloques de código delimitados

  • Encabezados: # H1 hasta ###### H6

  • Citas en bloque: > texto citado

  • Tablas: Tablas de markdown estilo GitHub

Formato de contenido amigable para LLM

Los mensajes recuperados de la API de Microsoft Graph se devuelven como HTML sin procesar que contiene etiquetas específicas de Teams. Para hacer que este contenido sea más consumible por los asistentes de IA, las siguientes herramientas admiten la conversión automática de HTML a Markdown:

  • get_chat_messages

  • get_channel_messages

  • get_channel_message_replies

  • search_messages

  • get_my_mentions

Opciones de formato de contenido

Utiliza el parámetro contentFormat para controlar cómo se devuelve el contenido del mensaje:

  • markdown (predeterminado): Convierte el HTML de Teams a Markdown limpio, optimizado para el consumo por LLM

  • raw: Devuelve el HTML original de la API de Microsoft Graph

Qué se convierte

Elemento HTML

Salida Markdown

<at id="0">Nombre</at> (Mención en Teams)

@Nombre (nombres de varias palabras combinados usando metadatos de menciones)

<strong>texto</strong>

**texto**

<em>texto</em>

*texto*

<code>texto</code>

`texto`

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

[texto](url)

<ul><li>elemento</li></ul>

- elemento

<table>...</table>

Tabla Markdown GFM

<attachment id="...">

{attachment:id}

<systemEventMessage/>

(eliminado)

<hr>

---

 , &, etc.

Decodificado a caracteres planos

Metadatos de archivos adjuntos

Los mensajes que contienen archivos adjuntos o imágenes en línea incluyen una matriz attachments en la respuesta con metadatos para cada archivo adjunto (id, nombre, contentType, contentUrl, thumbnailUrl). Los marcadores {attachment:id} en línea en el contenido markdown se correlacionan con las entradas en esta matriz, lo que permite a los consumidores identificar y descargar archivos adjuntos mediante download_message_hosted_content o download_chat_hosted_content.

Ejemplo de uso

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

Para obtener el HTML original:

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

📦 Instalación

# Install dependencies
npm install

# Build the project
npm run build

# Set up authentication
npm run auth

🔧 Configuración

Requisitos previos

  • Node.js 18+

  • Cuenta de Microsoft 365 con los permisos adecuados

  • Permisos delegados de Microsoft Graph para los ámbitos a continuación

Permisos requeridos de Microsoft Graph

Modo completo (predeterminado):

  • User.Read - Leer perfil de usuario

  • User.ReadBasic.All - Leer información básica del usuario

  • Team.ReadBasic.All - Leer información del equipo

  • Channel.ReadBasic.All - Leer información del canal

  • ChannelMessage.Read.All - Leer mensajes de canal

  • ChannelMessage.Send - Enviar mensajes y respuestas de canal

  • ChannelMessage.ReadWrite - Editar y eliminar mensajes de canal

  • Chat.Read - Leer mensajes de chat (incluido a través de ámbitos de solo lectura)

  • Chat.ReadWrite - Crear y gestionar chats, enviar/editar/eliminar mensajes de chat (reemplaza a Chat.Read)

  • TeamMember.Read.All - Leer miembros del equipo

  • Files.ReadWrite.All - Requerido para cargar archivos a canales y chats

Modo de solo lectura (TEAMS_MCP_READ_ONLY=true) — solo se solicitan estos ámbitos:

  • User.Read

  • User.ReadBasic.All

  • Team.ReadBasic.All

  • Channel.ReadBasic.All

  • ChannelMessage.Read.All

  • TeamMember.Read.All

  • Chat.Read

Modos de autenticación

Acceso completo:

npx @floriscornel/teams-mcp@latest authenticate

Acceso de solo lectura:

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

Inyección directa de token con un JWT de Microsoft Graph existente:

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

Almacenamiento de tokens

  • Los metadatos de autenticación se almacenan localmente en ~/.msgraph-mcp-auth.json

  • La caché de tokens se almacena localmente en ~/.teams-mcp-token-cache.json

🛠️ Uso

Iniciar el servidor

# 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

Comandos CLI

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)

Variables de entorno

  • TEAMS_MCP_READ_ONLY=true - Iniciar el servidor MCP en modo de solo lectura

  • AUTH_TOKEN=<jwt> - Usar un token de acceso de Microsoft Graph preexistente en lugar del inicio de sesión MSAL

Modo de solo lectura

El servidor admite un modo de solo lectura que deshabilita todas las operaciones de escritura (enviar mensajes, crear chats, cargar archivos, editar/eliminar mensajes) y solicita solo ámbitos de permiso de lectura de Microsoft Graph.

Habilitar el modo de solo lectura usando cualquiera de los siguientes:

  • Variable de entorno: TEAMS_MCP_READ_ONLY=true

  • Flag de CLI: --read-only

Autenticarse con ámbitos reducidos:

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

Configuración del servidor MCP (solo lectura):

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

Cambio de modos: Al cambiar de modo de solo lectura a modo completo, el servidor detecta la falta de coincidencia de ámbitos y le advierte que debe volver a autenticarse:

npx @floriscornel/teams-mcp@latest authenticate

Herramientas de solo lectura (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

Herramientas de escritura deshabilitadas en modo de solo lectura (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

Herramientas MCP disponibles

Autenticación

  • auth_status - Comprobar el estado de autenticación actual

Operaciones de usuario

  • get_current_user - Obtener información del usuario autenticado

  • search_users - Buscar usuarios por nombre o correo electrónico

  • get_user - Obtener información detallada del usuario por ID o correo electrónico

Operaciones de Teams

  • list_teams - Listar los equipos a los que se ha unido el usuario

  • list_channels - Listar canales en un equipo específico

  • get_channel_messages - Recuperar mensajes de un canal de equipo con resúmenes de archivos adjuntos y selección de formato de contenido

  • get_channel_message_replies - Obtener respuestas a un mensaje de canal específico

  • send_channel_message - Enviar un mensaje a un canal de equipo con menciones opcionales, importancia y archivos adjuntos de imagen

  • reply_to_channel_message - Responder a un mensaje de canal existente

  • update_channel_message - Editar un mensaje o respuesta de canal enviado anteriormente

  • delete_channel_message - Eliminar de forma lógica un mensaje o respuesta de canal

  • list_team_members - Listar miembros de un equipo específico

  • search_users_for_mentions - Buscar miembros del equipo para @mencionar en mensajes

  • send_file_to_channel - Cargar un archivo local y enviarlo como mensaje a un canal

Operaciones de chat

  • list_chats - Listar los chats del usuario (1:1

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