Slack Read-Only MCP
Read-only Slack integration that authenticates as a user via browser session and provides tools to list allowed channels, fetch channel metadata, retrieve channel history and threads, search messages, and look up user information, all restricted by a fail-closed channel allowlist.
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., "@Slack Read-Only MCPshow the latest messages in #dev-team"
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.
slack-mcp
Минимальный read-only MCP сервер для Slack.
Работает от твоего аккаунта через сессию браузера — без бота, без Slack-приложения и без одобрения админов. Авторизация автоматическая: команда slack-readonly-login открывает окно браузера, ты логинишься руками, а дальше web-токен и cookie d вытаскиваются и сохраняются сами. Агент может читать историю, треды и искать сообщения только в явно разрешённых каналах. Отправки, правок и удаления нет.
Стек: Python 3.10+, httpx, официальный MCP Python SDK.
Зачем так
не нужно создавать Slack App и просить админа его одобрить;
доступ ровно такой же, как у тебя в браузере (включая
search.messages, который боту недоступен);fail-closed allowlist (
SLACK_ALLOWED_CHANNELSобязателен);только чтение, маленький код, который можно просмотреть целиком.
Related MCP server: Slack MCP Server
Tools
Tool | Описание |
| Чей аккаунт и workspace у сессии |
| Каналы из allowlist, в которых ты состоишь |
| Метаданные канала (id или |
| История канала (до 100, newest first, пагинация по cursor) |
| Тред (родитель + ответы) по |
| Поиск; результаты фильтруются по allowlist |
| Инфо о пользователе по id |
Требования
Python 3.10+
Аккаунт Slack (ты залогинишься в открывшемся браузере)
Быстрый старт
git clone https://github.com/SHTIKOV/slack-mcp.git
cd slack-mcp
uv sync --extra dev --extra browser
uv run playwright install chromium
cp .env.example .envУкажи каналы в .env:
SLACK_ALLOWED_CHANNELS=C01234567,#general,#dev-teamАвторизация (автоматическая)
uv run slack-readonly-loginОткроется окно браузера на app.slack.com. Залогинься (если ещё не залогинен) —
команда дождётся сессии, сама достанет токен и cookie d и сохранит их в
~/.local/state/slack-readonly-mcp/credentials.json (права 600). Профиль
браузера тоже сохраняется, так что в следующий раз пароль вводить не нужно.
Если валидная сессия уже есть — команда ничего не открывает и просто говорит «already authorized». Принудительно переавторизоваться:
--force.Когда сессия протухнет (например, ты вышел из Slack), снова запусти
slack-readonly-login.
По умолчанию берётся собственный Chromium от Playwright (системный Chromium из
snap не может писать профиль в ~/.local). Чтобы использовать свой браузер,
задай SLACK_CHROMIUM_PATH.
Ручная альтернатива (если не хочешь браузер): вписать SLACK_XOXC_TOKEN и
SLACK_XOXD_COOKIE в .env самому — env перекрывает сохранённый файл.
Проверка и запуск:
uv run slack-readonly-whoami
uv run pytest -q
uv run slack-readonly-mcpПодключение к Claude Code
Секреты лежат в .env проекта, в конфиг MCP их класть не нужно:
claude mcp add slack-readonly -- uv --directory /absolute/path/to/slack-mcp run slack-readonly-mcpПодключение к Cursor
~/.cursor/mcp.json:
{
"mcpServers": {
"slack-readonly": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/slack-mcp",
"run",
"slack-readonly-mcp"
]
}
}
}Дальше можно просить: «покажи последние сообщения в #dev-team» / «найди в #general обсуждение релиза».
Allowlist
SLACK_ALLOWED_CHANNELS — обязательный список через запятую:
id канала:
C01234567(а такжеG.../D...)имя:
#generalилиgeneral*— разрешить все каналы и личные сообщения, которые ты можешь читать (явный опт-ин; удобно, раз доступ и так read-only)
Пустое значение → сервер не стартует (fail-closed, чтобы случайно не открыть всё). Запрос к каналу вне списка → access_denied. Результаты поиска из неразрешённых каналов отбрасываются.
Как узнать id: добавь #name в allowlist и вызови list_allowed_channels — в ответе будет id.
Безопасность
Токен + cookie
d= полный доступ к твоему аккаунту. Они лежат в~/.local/state/slack-readonly-mcp/credentials.json(права600), не коммить.env.Если выйти из Slack в этом браузере, сессия инвалидируется — достань значения заново.
Это неофициальный способ (как у веб-клиента). Slack его не документирует; на платных тарифах админ видит сессии в access logs. Оцени, допустимо ли это по правилам твоего workspace.
Отправка/изменение сообщений не реализованы намеренно.
Структура
src/slack_readonly_mcp/
allowlist.py # парсинг и проверка каналов (fail-closed)
browserlogin.py # CLI авторизации через браузер (Playwright)
client.py # async-клиент Slack web API (xoxc token + d cookie)
credentials.py # сохранение/чтение кредов в ~/.local/state
format.py # сериализация сообщений/каналов/пользователей
login.py # CLI проверки сессии (whoami)
server.py # MCP tools (stdio)
service.py # read-only операции + allowlist-гард
tests/ # unit-тесты с моками (без сети)Лицензия
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
Enable interaction with Slack workspaces. Supports subscribing to Slack events through Resources.
Catch up on Slack without reading it. Unreads, threads, search. Browser-session or hosted OAuth.
Surface customer & prospect context from Slack, email, transcripts and tickets in any MCP client.
Human-authenticated setup for routing GitHub pull requests into the right Slack channel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to read messages, threads, channel info, user profiles, search conversations, and generate permalinks in Slack workspaces.1MIT
- AlicenseAqualityAmaintenanceGives AI agents full Slack access via session tokens, requiring no app registration, admin approval, or OAuth.20252 npm32MIT
- FlicenseAqualityDmaintenanceEnables AI agents to interact with Slack using a user token, providing full access to message search, channel history, DMs, and posting as the user.8-
- AlicenseAqualityCmaintenanceEnables reading Slack channels, messages, and threads using the web interface via a persistent browser session, designed for guest users without API access. Does not send messages.5MIT