time-messenger-mcp-server
This MCP server connects AI assistants to a Time Messenger account for authenticated messaging, search, and workspace inspection.
Authenticate MFA login with a 6-digit code
Send channel messages and threaded replies
Read channel messages with pagination and read full threads
Search messages within a team
List, inspect, follow/unfollow, and mark threads read; get thread stats
List/search channels, get channel info, and check unread counts
List teams, get team info/unread counts, and inspect all-team unread counts
Get current user, lookup users, and search users
Note: the provided schema exposes 22 tools and omits README features for reactions, channel categories, and bulk
mark_channels_read.
Provides integration with Mattermost (via Time Messenger) for managing messages, threads, channels, teams, and users in a Mattermost-based corporate messenger.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@time-messenger-mcp-server list unread messages in the #general channel"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
💬 Time Messenger MCP Server
Подключите корпоративный мессенджер Time от Т-Банка к Claude, OpenCode и другим AI-ассистентам
Быстрый старт · Настройка · Клиенты · Инструменты · Проблемы · Разработка
Time построен на Mattermost. Этот MCP-сервер даёт ассистенту доступ к вашему аккаунту: он читает и отправляет сообщения, разбирает треды, ищет каналы и людей, показывает непрочитанное.
Попросите, например: «Что важного было в моих каналах за утро?» · «Найди тред про релиз и кратко перескажи» · «Ответь в треде, что я посмотрю после обеда»
✨ Возможности
📨 Сообщения | чтение каналов и тредов, поиск, отправка и ответы в треде |
🧵 Треды | отслеживаемые треды, статистика непрочитанного, follow / unfollow |
📢 Каналы | список, поиск, непрочитанное, массовая отметка «прочитано» |
👥 Команды и люди | команды, непрочитанное по командам, поиск пользователей |
🔐 Авторизация | Personal Access Token или логин и пароль, поддержка MFA |
Related MCP server: mattermost-mcp
🚀 Быстрый старт
Нужен Node.js 20.19+ и Personal Access Token (как получить).
Claude Code — одной командой:
claude mcp add time \
-e TIME_URL=https://your-instance.time-messenger.ru \
-e TIME_TOKEN=your_token_here \
-- npx -y time-messenger-mcp-serverДля других клиентов — готовые конфиги в разделе Подключение к AI-клиентам.
Глобально через npm
npm install -g time-messenger-mcp-server
time-messenger-mcp-serverИз исходников
git clone https://github.com/BarredEwe/time-messenger-mcp-server.git
cd time-messenger-mcp-server
npm install
npm run build
node dist/index.js⚙️ Настройка
Переменные окружения
Переменная | Обязательна | Описание |
| ✅ | Адрес вашего Time, например |
| ✅ * | Personal Access Token |
| ✅ * | Email или логин |
| ✅ * | Пароль, указывается вместе с |
| — | Таймаут запроса к API в мс, по умолчанию |
| — | Свой User-Agent, если ваш сервер отбрасывает запросы с небраузерным |
* Нужен либо TIME_TOKEN, либо пара TIME_LOGIN_ID + TIME_PASSWORD. Шаблон со всеми переменными — .env.example.
Способы авторизации
Personal Access Token (рекомендуется)
Постоянный токен, который не истекает.
Откройте Time в браузере.
Аватарка → Настройки аккаунта → Безопасность → Персональные токены доступа.
Создайте токен, например с описанием
MCP Server.Скопируйте его сразу: токен показывается один раз.
Логин и пароль
Сервер сам получит токен сессии и сохранит его в ~/.time-mcp/auth.json, чтобы не входить заново при каждом запуске. Когда сессия истечёт, сервер снова войдёт по логину и паролю.
Если на аккаунте включена двухфакторная аутентификация:
Первый запрос вернёт ошибку
MFA verification required.Попросите ассистента вызвать
login_with_mfaс 6-значным кодом из приложения-аутентификатора.Токен сохранится, и код понадобится снова только после истечения сессии.
OAuth2
Не подходит для MCP: требует редиректа в браузере. Если нужен OAuth2 в собственном веб-приложении, смотрите документацию Time.
🔌 Подключение к AI-клиентам
Сервер работает через stdio — стандартный транспорт MCP, поэтому подойдёт любой совместимый клиент.
Файл конфигурации:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"time": {
"command": "npx",
"args": ["-y", "time-messenger-mcp-server"],
"env": {
"TIME_URL": "https://your-instance.time-messenger.ru",
"TIME_TOKEN": "your_token_here"
}
}
}
}Для входа по логину замените TIME_TOKEN на TIME_LOGIN_ID и TIME_PASSWORD. После правки перезапустите Claude Desktop.
claude mcp add time \
-e TIME_URL=https://your-instance.time-messenger.ru \
-e TIME_TOKEN=your_token_here \
-- npx -y time-messenger-mcp-serverФайл ~/.config/opencode/opencode.json:
{
"mcp": {
"time": {
"type": "local",
"command": ["npx", "-y", "time-messenger-mcp-server"],
"enabled": true,
"environment": {
"TIME_URL": "https://your-instance.time-messenger.ru",
"TIME_TOKEN": "your_token_here"
}
}
}
}Укажите команду npx -y time-messenger-mcp-server и передайте переменные окружения из таблицы выше.
🧰 Инструменты
33 инструмента в восьми группах.
📨 Сообщения
Инструмент | Что делает |
| Отправляет сообщение в канал или отвечает в треде |
| Возвращает сообщения канала с пагинацией |
| Возвращает все сообщения треда |
| Ищет сообщения в команде |
😀 Реакции
Инструмент | Что делает |
| Ставит эмодзи-реакцию на сообщение |
| Убирает свою реакцию с сообщения |
| Список реакций на сообщении |
emoji_name принимает каноническое имя (+1, 100), запись с двоеточиями (:tada:), распространённый алиас (thumbsup) или сам символ (👍). Алиасы и символы приводятся к каноническому имени, иначе реакция встанет отдельно от той, что ставит нативный клиент.
🧵 Треды
Инструмент | Что делает |
| Список отслеживаемых тредов в команде |
| Статистика непрочитанных тредов |
| Информация о треде |
| Начинает отслеживать тред |
| Перестаёт отслеживать тред |
| Отмечает тред прочитанным |
📢 Каналы
Инструмент | Что делает |
| Список каналов в команде |
| Информация о канале |
| Ищет каналы |
| Непрочитанное в канале |
| ⚠️ Отмечает каналы прочитанными, без отмены (подробнее) |
🗂 Категории каналов
Инструмент | Что делает |
| Категории сайдбара в порядке отображения, с каналами |
| Создаёт пустую пользовательскую категорию |
| Меняет сортировку, mute или свёрнутость; переименовать можно только пользовательскую |
| Удаляет пользовательскую категорию, каналы возвращаются в стандартные |
| Задаёт порядок категорий, нужно перечислить все |
| Переносит канал в пользовательскую категорию, «Каналы» или «Избранное» |
| Добавляет в избранное или убирает; личные сообщения возвращаются в «Личные сообщения» |
👥 Команды
Инструмент | Что делает |
| Команды пользователя |
| Информация о команде |
| Непрочитанное во всех командах |
| Непрочитанное в одной команде |
👤 Пользователи
Инструмент | Что делает |
| Текущий пользователь |
| Пользователь по ID |
| Ищет пользователей |
🔐 Авторизация
Инструмент | Что делает |
| Завершает вход кодом двухфакторной аутентификации |
mode: "all"— все доступные каналы: публичные, приватные, личные и групповые.mode: "selected"— только каналы из переданного непустого списка ID.Для каждого уникального канала уходит отдельный запрос Time
/view. Временные сбои повторяются, а оставшиеся ошибки перечисляются в ответе.Отслеживаемые треды не затрагиваются, для них есть
mark_thread_read.
🩺 Если что-то не работает
Сообщение | Что сделать |
| Добавьте |
| Укажите |
| Вызовите |
| Проверьте логин и пароль или перейдите на Personal Access Token |
Работает от имени не того аккаунта | Удалите |
Запросы висят или обрываются | Увеличьте |
🛠 Разработка
npm install # зависимости
npm run dev # запуск из исходников через tsx
npm run build # сборка в dist/
npm test # тесты (vitest)
npm run typecheck # проверка типовsrc/
├── index.ts # MCP-сервер и регистрация инструментов
├── client/
│ ├── time-client.ts # клиент Time API
│ └── auth-store.ts # токен сессии в ~/.time-mcp/auth.json
├── tools/
│ ├── auth.ts # MFA
│ ├── messages.ts # сообщения
│ ├── reactions.ts # эмодзи-реакции
│ ├── threads.ts # треды
│ ├── channels.ts # каналы
│ ├── channel-categories.ts # категории каналов
│ ├── teams.ts # команды
│ ├── users.ts # пользователи
│ └── types.ts # общие типы инструментов
├── types/
│ └── time-api.ts # типы ответов Time API
└── __tests__/ # тесты vitestДокументация Time API
📄 Лицензия
Available Tools
33 toolsadd_reactionB
Add an emoji reaction to a message. Accepts an emoji name ("+1", ":tada:") or a common emoji character ("👍")
Inputs: post_id (required), emoji_name (required).
create_channel_categoryC
Create an empty custom channel sidebar category.
Inputs: team_id (required), display_name (required).
delete_channel_categoryA
Delete a custom channel sidebar category. Its channels return to the default categories.
Inputs: team_id (required), category_id (required).
follow_threadA
Start following a thread to receive notifications
Inputs: thread_id (required).
get_channelC
Get information about a specific channel
Inputs: channel_id (required).
get_channel_messagesB
Get messages from a channel with pagination
Inputs: channel_id (required), page, per_page.
get_channel_unreadA
Get unread message count and mentions for a channel
Inputs: channel_id (required).
get_meB
Get information about the current user
Inputs: no named parameters.
get_reactionsA
List all emoji reactions on a message
Inputs: post_id (required).
get_teamC
Get information about a specific team
Inputs: team_id (required).
get_teams_unreadA
Get unread message counts for all teams
Inputs: no named parameters.
get_team_unreadA
Get unread message count for a specific team
Inputs: team_id (required).
get_threadC
Get information about a specific thread
Inputs: team_id (required), thread_id (required).
get_thread_messagesB
Get all messages in a thread
Inputs: post_id (required).
get_thread_statsB
Get unread threads count and mentions for a team
Inputs: team_id (required).
get_userB
Get information about a specific user
Inputs: user_id (required).
list_channel_categoriesB
List the user's channel sidebar categories for a team, in sidebar order, with their channels.
Inputs: team_id (required).
list_channelsA
List all channels for the user in a team
Inputs: team_id (required).
list_teamsA
List all teams for the current user
Inputs: no named parameters.
list_threadsB
List all threads that the user is following in a team
Inputs: team_id (required).
login_with_mfaA
Login to Time Messenger with MFA code. Use this when regular login requires MFA verification. Enter the 6-digit code from your authenticator app.
Inputs: mfa_code (required).
mark_channels_readA
Mark all available channels or selected channel IDs as read; this action cannot be undone. The all mode includes public, private, DM, and group channels. Followed threads are excluded; use mark_thread_read for threads.
Inputs: mode (required), channel_ids.
mark_thread_readB
Mark a thread as read up to a specific timestamp
Inputs: team_id (required), thread_id (required), timestamp.
move_channel_to_categoryB
Move one channel into an existing custom, Channels or Favorites sidebar category.
Inputs: team_id (required), channel_id (required), category_id (required).
remove_reactionB
Remove your own emoji reaction from a message
Inputs: post_id (required), emoji_name (required).
reorder_channel_categoriesB
Set the sidebar order of channel categories. category_ids must list every category of the team exactly once.
Inputs: team_id (required), category_ids (required).
search_channelsA
Search channels in a team by name
Inputs: term (required), team_id (required).
search_messagesB
Search messages in a team
Inputs: terms (required), team_id (required).
search_usersA
Search users by username, email, or name
Inputs: term (required).
send_messageA
Send a message to a channel or reply in a thread
Inputs: message (required), channel_id (required), root_id.
set_channel_favoriteA
Favorite or unfavorite one channel. Unfavoriting returns a channel to Channels, or a direct/group message to Direct Messages.
Inputs: team_id (required), favorite (required), channel_id (required).
unfollow_threadB
Stop following a thread
Inputs: thread_id (required).
update_channel_categoryA
Update metadata of a channel sidebar category. Provide at least one of display_name, sorting, muted, collapsed. Only custom categories can be renamed; managed categories cannot be changed.
Inputs: team_id (required), category_id (required), muted, sorting, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 33 tools
Most tools map cleanly to a distinct resource and action, and the descriptions help separate similar operations. The unread/stats cluster (get_teams_unread, get_team_unread, get_thread_stats, get_channel_unread) is closely named and could cause hesitation, but the tools remain functionally separable.
The set uses snake_case with a mostly predictable verb_noun pattern throughout. Minor deviations such as get_me and login_with_mfa, plus the singular/plural split between get_team_unread and get_teams_unread, keep it from being fully consistent.
At 33 tools, the server is well above the borderline 16-25 range and feels heavy for a messenger interface. The breadth of subdomains explains some of the count, but the set still contains enough tools that it should likely be scoped down or more tightly grouped.
Coverage is broad across auth, users, teams, channels, messages, threads, reactions, and sidebar categories. However, core lifecycle operations such as creating/updating/deleting channels and editing/deleting messages are missing, which are notable gaps for a messenger server.
Maintenance
Related MCP Connectors
MCP server for Sendbird — chat users, channels, members, and messages from your AI client.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
MCP server enabling AI agents to manage Bitrix24 features via standardized protocol
One MCP server for the services your AI needs: memory, files, Microsoft 365, kanban and more.
Related MCP Servers
- FlicenseAqualityDmaintenanceAn MCP server for MAX Messenger (Russia's national messenger by VK) that enables AI clients to send and read messages, manage chats and members, send media, and more through 21 tools.2180 npm12-
- AlicenseAqualityDmaintenanceMCP server for Mattermost that enables AI assistants to read posts, search messages, send messages, and manage channels.9MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Microsoft Teams that lets AI assistants search, message, and manage chats, meetings, files, and contacts using your existing Teams browser login—no app approval or Azure AD registration needed.1,506 npm3MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for the eXpress corporate messenger, enabling AI agents to list chats, search contacts, send messages, and wait for incoming messages with end-to-end encryption.569 npm1MIT