Teams MCP
Teams MCP
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_TOKENpara 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.nextLinkEnviar 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_messagesend_chat_messagereply_to_channel_messageupdate_channel_messageupdate_chat_messagesend_file_to_channelsend_file_to_chat
Opciones de formato
Puedes especificar el parámetro format para controlar el formato del mensaje:
text(predeterminado): Texto sin formatomarkdown: 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 delimitadosEncabezados:
# H1hasta###### H6Citas en bloque:
> texto citadoTablas: 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_messagesget_channel_messagesget_channel_message_repliessearch_messagesget_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 LLMraw: Devuelve el HTML original de la API de Microsoft Graph
Qué se convierte
Elemento HTML | Salida Markdown |
|
|
|
|
|
|
|
|
|
|
|
|
| Tabla Markdown GFM |
|
|
| (eliminado) |
|
|
| 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 usuarioUser.ReadBasic.All- Leer información básica del usuarioTeam.ReadBasic.All- Leer información del equipoChannel.ReadBasic.All- Leer información del canalChannelMessage.Read.All- Leer mensajes de canalChannelMessage.Send- Enviar mensajes y respuestas de canalChannelMessage.ReadWrite- Editar y eliminar mensajes de canalChat.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 aChat.Read)TeamMember.Read.All- Leer miembros del equipoFiles.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.ReadUser.ReadBasic.AllTeam.ReadBasic.AllChannel.ReadBasic.AllChannelMessage.Read.AllTeamMember.Read.AllChat.Read
Modos de autenticación
Acceso completo:
npx @floriscornel/teams-mcp@latest authenticateAcceso de solo lectura:
npx @floriscornel/teams-mcp@latest authenticate --read-onlyInyecció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.jsonLa 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.jsComandos 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 lecturaAUTH_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=trueFlag de CLI:
--read-only
Autenticarse con ámbitos reducidos:
npx @floriscornel/teams-mcp@latest authenticate --read-onlyConfiguració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 authenticateHerramientas 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 autenticadosearch_users- Buscar usuarios por nombre o correo electrónicoget_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 usuariolist_channels- Listar canales en un equipo específicoget_channel_messages- Recuperar mensajes de un canal de equipo con resúmenes de archivos adjuntos y selección de formato de contenidoget_channel_message_replies- Obtener respuestas a un mensaje de canal específicosend_channel_message- Enviar un mensaje a un canal de equipo con menciones opcionales, importancia y archivos adjuntos de imagenreply_to_channel_message- Responder a un mensaje de canal existenteupdate_channel_message- Editar un mensaje o respuesta de canal enviado anteriormentedelete_channel_message- Eliminar de forma lógica un mensaje o respuesta de canallist_team_members- Listar miembros de un equipo específicosearch_users_for_mentions- Buscar miembros del equipo para @mencionar en mensajessend_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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
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