Skip to main content
Glama

Teams MCP

npm version npm downloads codecov License: MIT GitHub stars

Сервер протокола контекста модели (MCP), обеспечивающий бесшовную интеграцию с API Microsoft Graph, что позволяет ИИ-ассистентам взаимодействовать с Microsoft Teams, пользователями, чатами, файлами и организационными данными.

📦 Установка

Чтобы использовать этот MCP-сервер в Cursor/Claude/VS Code, добавьте следующую конфигурацию:

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

Related MCP server: Meeting BaaS MCP Server

🚀 Функции

🔐 Аутентификация

  • Поток аутентификации OAuth 2.0 с использованием кода устройства в Microsoft Graph

  • Безопасное управление токенами, кэширование и обновление токенов

  • Проверка статуса аутентификации и поддержка выхода из системы

  • Режим «только чтение» с ограниченными областями доступа (scopes)

  • Прямая поддержка AUTH_TOKEN для предварительно выданных токенов доступа Microsoft Graph

👥 Управление пользователями

  • Получение информации о текущем пользователе

  • Поиск пользователей по имени или электронной почте

  • Получение подробных профилей пользователей

  • Доступ к данным организационного каталога

🏢 Интеграция с Microsoft Teams

  • Управление командами

    • Список команд, к которым присоединился пользователь

    • Доступ к деталям и метаданным команд

  • Операции с каналами

    • Список каналов внутри команд

    • Получение сообщений каналов и ответов на них

    • Отправка сообщений в каналы команд

    • Ответы на существующие ветки сообщений в каналах

    • Редактирование и мягкое удаление сообщений и ответов в каналах

    • Поддержка уровней важности сообщений (normal, high, urgent)

    • Поддержка встроенных вложений изображений через URL или данные base64

  • Участники команды

    • Список участников команды и их ролей

    • Доступ к информации об участниках

    • Поиск пользователей для @упоминаний

💬 Чаты и обмен сообщениями

  • Личные (1:1) и групповые чаты

    • Список чатов пользователя

    • Создание новых личных или групповых бесед

    • Получение истории сообщений чата с фильтрацией, сортировкой и пагинацией

    • Получение всех доступных сообщений через пагинацию @odata.nextLink

    • Отправка сообщений в существующие чаты

    • Редактирование ранее отправленных сообщений чата

    • Мягкое удаление сообщений чата

✏️ Управление сообщениями

  • Редактирование и удаление

    • Обновление (редактирование) отправленных сообщений в чатах и каналах

    • Мягкое удаление сообщений в чатах и каналах (помечает как удаленные без окончательного удаления)

    • Только отправитель сообщения может обновлять/удалять свои сообщения

    • Поддержка Markdown-разметки, упоминаний и уровней важности при редактировании

📎 Медиа и вложения

  • Размещенный контент

    • Скачивание размещенного контента (изображений, файлов) из сообщений чатов и каналов

    • Доступ к встроенным изображениям и вложениям, которыми поделились в беседах

    • Опциональное сохранение размещенного контента напрямую на диск

  • Загрузка файлов

    • Загрузка и отправка файлов любого типа (PDF, DOCX, XLSX, ZIP, изображения и т.д.) в каналы и чаты

    • Поддержка больших файлов (>4 МБ) через сессии возобновляемой загрузки

    • Загрузки в каналы попадают в SharePoint, а загрузки в чаты — в OneDrive

    • Опциональный текст сообщения, пользовательское имя файла, форматирование и уровни важности

🔍 Расширенный поиск и обнаружение

  • Поиск сообщений

    • Поиск по всем каналам и чатам Teams с использованием API Microsoft Search

    • Поддержка синтаксиса KQL (Keyword Query Language)

    • Фильтрация по отправителю, упоминаниям, вложениям, статусу прочтения и диапазонам дат

    • Получение недавних сообщений с расширенными параметрами фильтрации

    • Поиск сообщений, в которых упоминается текущий пользователь

Поддержка расширенного форматирования сообщений

Следующие инструменты поддерживают расширенное форматирование сообщений в каналах и чатах 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

Параметры формата

Вы можете указать параметр format для управления форматированием сообщения:

  • text (по умолчанию): Обычный текст

  • markdown: Markdown-разметка (жирный, курсив, списки, ссылки, код и т.д.), преобразованная в очищенный HTML

Когда format установлен в markdown, содержимое сообщения преобразуется в HTML с помощью безопасного парсера markdown и очищается от потенциально опасного контента перед отправкой в Teams.

Если format не указан, сообщение будет отправлено как обычный текст.

Пример использования

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

Функции безопасности

  • HTML-санитизация: Весь контент markdown преобразуется в HTML и очищается для удаления потенциально опасных элементов (скриптов, обработчиков событий и т.д.)

  • Разрешенные теги: Разрешены только безопасные HTML-теги (p, strong, em, a, ul, ol, li, h1-h6, code, pre и т.д.)

  • Безопасные атрибуты: Разрешены только безопасные атрибуты

  • Предотвращение XSS: Контент автоматически очищается для предотвращения атак межсайтового скриптинга

Поддерживаемые функции Markdown

  • Форматирование текста: Жирный (**текст**), курсив (_текст_), зачеркнутый (~~текст~~)

  • Ссылки: [текст](url)

  • Списки: Маркированные (- элемент) и нумерованные (1. элемент)

  • Код: Встроенный `код` и блоки кода

  • Заголовки: # H1 до ###### H6

  • Цитаты: > цитируемый текст

  • Таблицы: Таблицы в стиле GitHub

Формат контента, удобный для LLM

Сообщения, полученные из API Microsoft Graph, возвращаются в виде необработанного HTML, содержащего специфические для Teams теги. Чтобы сделать этот контент более удобным для ИИ-ассистентов, следующие инструменты поддерживают автоматическое преобразование HTML в Markdown:

  • get_chat_messages

  • get_channel_messages

  • get_channel_message_replies

  • search_messages

  • get_my_mentions

Параметры формата контента

Используйте параметр contentFormat для управления тем, как возвращается содержимое сообщения:

  • markdown (по умолчанию): Преобразует HTML Teams в чистый Markdown, оптимизированный для потребления LLM

  • raw: Возвращает исходный HTML из API Microsoft Graph

Что преобразуется

HTML-элемент

Вывод Markdown

<at id="0">Имя</at> (упоминание Teams)

@Имя (многословные имена объединяются с помощью метаданных упоминаний)

<strong>текст</strong>

**текст**

<em>текст</em>

*текст*

<code>текст</code>

`текст`

<a href="url">текст</a>

[текст](url)

<ul><li>элемент</li></ul>

- элемент

<table>...</table>

Таблица GFM Markdown

<attachment id="...">

{attachment:id}

<systemEventMessage/>

(удалено)

<hr>

---

 , & и т.д.

Декодируются в обычные символы

Метаданные вложений

Сообщения, содержащие вложения файлов или встроенные изображения, включают массив attachments в ответе с метаданными для каждого вложения (id, name, contentType, contentUrl, thumbnailUrl). Встроенные маркеры {attachment:id} в контенте markdown соответствуют записям в этом массиве, позволяя потребителям идентифицировать и скачивать вложения через download_message_hosted_content или download_chat_hosted_content.

Пример использования

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

Чтобы получить исходный HTML:

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

📦 Установка

# Install dependencies
npm install

# Build the project
npm run build

# Set up authentication
npm run auth

🔧 Конфигурация

Предварительные требования

  • Node.js 18+

  • Учетная запись Microsoft 365 с соответствующими разрешениями

  • Делегированные разрешения Microsoft Graph для указанных ниже областей доступа

Необходимые разрешения Microsoft Graph

Полный режим (по умолчанию):

  • User.Read - Чтение профиля пользователя

  • User.ReadBasic.All - Чтение базовой информации о пользователе

  • Team.ReadBasic.All - Чтение информации о команде

  • Channel.ReadBasic.All - Чтение информации о канале

  • ChannelMessage.Read.All - Чтение сообщений канала

  • ChannelMessage.Send - Отправка сообщений и ответов в канал

  • ChannelMessage.ReadWrite - Редактирование и удаление сообщений канала

  • Chat.Read - Чтение сообщений чата (включено через области только для чтения)

  • Chat.ReadWrite - Создание и управление чатами, отправка/редактирование/удаление сообщений чата (заменяет Chat.Read)

  • TeamMember.Read.All - Чтение участников команды

  • Files.ReadWrite.All - Требуется для загрузки файлов в каналы и чаты

Режим «только чтение» (TEAMS_MCP_READ_ONLY=true) — запрашиваются только эти области:

  • User.Read

  • User.ReadBasic.All

  • Team.ReadBasic.All

  • Channel.ReadBasic.All

  • ChannelMessage.Read.All

  • TeamMember.Read.All

  • Chat.Read

Режимы аутентификации

Полный доступ:

npx @floriscornel/teams-mcp@latest authenticate

Доступ только для чтения:

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

Прямая передача токена с существующим JWT Microsoft Graph:

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

Хранение токенов

  • Метаданные аутентификации хранятся локально в ~/.msgraph-mcp-auth.json

  • Кэш токенов хранится локально в ~/.teams-mcp-token-cache.json

🛠️ Использование

Запуск сервера

# 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

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)

Переменные окружения

  • TEAMS_MCP_READ_ONLY=true - Запуск MCP-сервера в режиме «только чтение»

  • AUTH_TOKEN=<jwt> - Использование предварительно существующего токена доступа Microsoft Graph вместо входа через MSAL

Режим «только чтение»

Сервер поддерживает режим «только чтение», который отключает все операции записи (отправку сообщений, создание чатов, загрузку файлов, редактирование/удаление сообщений) и запрашивает у Microsoft Graph только разрешения на чтение.

Включите режим «только чтение» используя один из способов:

  • Переменная окружения: TEAMS_MCP_READ_ONLY=true

  • Флаг CLI: --read-only

Аутентификация с ограниченными областями доступа:

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

Конфигурация MCP-сервера (только чтение):

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

Переключение режимов: При переключении с режима «только чтение» на полный режим сервер обнаруживает несоответствие областей доступа и предупреждает о необходимости повторной аутентификации:

npx @floriscornel/teams-mcp@latest authenticate

Инструменты «только чтение» (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

Инструменты записи, отключенные в режиме «только чтение» (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

Доступные инструменты MCP

Аутентификация

  • auth_status - Проверка текущего статуса аутентификации

Операции с пользователями

  • get_current_user - Получение информации об аутентифицированном пользователе

  • search_users - Поиск пользователей по имени или электронной почте

  • get_user - Получение подробной информации о пользователе по ID или электронной почте

Операции с командами

  • list_teams

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