Teams MCP
Teams MCP
Сервер протокола контекста модели (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_messagesend_chat_messagereply_to_channel_messageupdate_channel_messageupdate_chat_messagesend_file_to_channelsend_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_messagesget_channel_messagesget_channel_message_repliessearch_messagesget_my_mentions
Параметры формата контента
Используйте параметр contentFormat для управления тем, как возвращается содержимое сообщения:
markdown(по умолчанию): Преобразует HTML Teams в чистый Markdown, оптимизированный для потребления LLMraw: Возвращает исходный HTML из API Microsoft Graph
Что преобразуется
HTML-элемент | Вывод Markdown |
|
|
|
|
|
|
|
|
|
|
|
|
| Таблица GFM Markdown |
|
|
| (удалено) |
|
|
| Декодируются в обычные символы |
Метаданные вложений
Сообщения, содержащие вложения файлов или встроенные изображения, включают массив 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.ReadUser.ReadBasic.AllTeam.ReadBasic.AllChannel.ReadBasic.AllChannelMessage.Read.AllTeamMember.Read.AllChat.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
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