Мастер Claude · Блок 6. MCP и интеграции

Урок 56 из 93 · ~10 мин чтения

MCP Slack — Claude в корпоративном мессенджере

Урок пока закрыт

Курс проходится последовательно.

К текущему уроку

Почему это важно именно вам

Представьте типичный вторник. Вы с утра открываете Slack и видите: 47 непрочитанных сообщений в #маркетинг, 23 в #команда, 11 в #клиенты. Плюс три личных чата. Прочитать всё — двадцать минут. Отделить важное от шума — ещё десять. И всё это до того, как вы реально начали работать. Умножьте на 240 рабочих дней в году — и поймёте, сколько времени уходит на то, что по сути является чтением ленты новостей.

Slack MCP даёт Claude прямой доступ к вашим каналам. Один вопрос «что важного произошло в #маркетинг за сегодня» — и через двадцать секунд у вас перед глазами структурированная выжимка: решения, которые приняли, вопросы, которые остались открытыми, и имена людей, которым нужно ответить. Не пересказ каждого сообщения, а именно то, что нужно директору — картина с высоты птичьего полёта.

Другой кейс — поиск по истории. «Найди все упоминания клиента Альфастрой за последнюю неделю». Slack сам по себе умеет искать, но результаты выдаёт списком сообщений — разбирайся сам. Claude с MCP-доступом прочитает эти результаты и скажет: вот что именно обсуждали, вот где возник конфликт, вот что было решено. Это не поиск — это разведка.

Что это такое

Slack MCP-сервер — это программа-посредник между Claude и вашим корпоративным Slack. По сути, это переводчик: Claude умеет работать с инструментами через протокол MCP (мы разбирали это в Дне 51), а Slack умеет отвечать на запросы через свой API. MCP-сервер стоит между ними и переводит «прочитай канал» в API-запрос к Slack и обратно.

Аналогия из жизни: представьте, что ваш ассистент знает английский, а ваш поставщик говорит только на немецком. Переводчик — это MCP-сервер. Вы говорите ассистенту задачу, переводчик передаёт поставщику, получает ответ, переводит обратно. Вы вообще не думаете о языковом барьере. Именно так устроено взаимодействие Claude и Slack: Claude «говорит» на MCP, Slack «говорит» на своём API, а MCP-сервер стоит между ними и занимается переводом в обе стороны.

Что конкретно умеет Slack MCP:

Slack MCP работает через Bot Token, то есть действует от имени бота, которого вы создадите в Slack. Сообщения будут приходить с именем бота, не от вашего личного аккаунта. Это важно учитывать, если вы планируете отправку в публичные каналы.

Как работает на практике

Шаг 0. Сначала проверьте простой путь

Подключите Slack как коннектор на claude.ai (раздел подключений) — он появится в Claude Code сам, без своего приложения и токена в конфиге. Шаги ниже нужны, только если коннектор недоступен или нужен свой набор прав.

Шаг 1. Создайте Slack-приложение и получите токен

Зайдите на api.slack.com/apps и нажмите Create New App → From scratch. Дайте приложению любое имя, например «Claude Assistant», и выберите ваше рабочее пространство.

После создания перейдите в раздел OAuth & Permissions и добавьте следующие Bot Token Scopes:

channels:history
channels:read
chat:write
groups:history
groups:read
im:history
im:read
search:read
users:read

Это минимальный набор для чтения каналов, поиска и отправки сообщений. После добавления скоупов нажмите Install to Workspace и скопируйте Bot User OAuth Token — он начинается с xoxb-.

Токен `xoxb-` — это полноценный ключ доступа к вашему Slack. Никогда не добавляйте его прямо в файлы конфигурации, которые могут оказаться в облаке или репозитории. Только через переменные окружения.

Сохраните токен в переменную окружения. В терминале (Mac):

echo 'export SLACK_BOT_TOKEN="xoxb-ваш-токен-здесь"' >> ~/.zshenv
source ~/.zshenv

Шаг 2. Пригласите бота в нужные каналы

Сам факт создания приложения не даёт ему доступ к каналам. Нужно явно пригласить бота в каждый канал, который вы хотите читать. В Slack напишите в канале:

/invite @Claude Assistant

Без этого шага попытки прочитать канал будут возвращать ошибку доступа.

Шаг 3. Установите и подключите Slack MCP-сервер

Официальный Slack MCP-сервер доступен через npm. Установите его глобально:

npm install -g @slack/mcp-server

Теперь добавьте его в конфигурацию Claude Code. Откройте ~/.claude.json (это ваш личный файл) или создайте .mcp.json в корне проекта, если сервер нужен всей команде, и добавьте:

{
  "mcpServers": {
    "slack": {
      "command": "slack-mcp-server",
      "env": {
        "SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}"
      }
    }
  }
}

Конструкция ${SLACK_BOT_TOKEN} означает, что Claude Code подставит значение из переменных окружения — токен не будет храниться в конфиге напрямую.

Перезапустите Claude Code. При следующем запуске он обнаружит новый MCP-сервер и загрузит инструменты Slack.

Конструкция `"env": { "ключ": "${ПЕРЕМЕННАЯ}" }` — стандартный способ передавать секреты в MCP-серверы без хардкода. Claude Code разворачивает переменные из вашего окружения перед запуском сервера. Это тот же принцип, что и у всех правильно написанных shell-скриптов.

Шаг 4. Первые запросы

После перезапуска Claude Code попробуйте простые команды:

Саммари канала за день:

Прочитай последние 100 сообщений из канала #маркетинг и сделай выжимку: 
что обсуждали, какие решения приняли, что осталось открытым.

Поиск по клиенту:

Найди в Slack все сообщения с упоминанием "Альфастрой" за последние 7 дней. 
Сгруппируй по теме и скажи, что было решено.

Итоги встречи в канал:

Напиши в канал #команда сообщение об итогах сегодняшней встречи по бюджету:
- Утвердили план на Q3
- Дополнительный бюджет на контекст — 15%
- Следующий созвон в пятницу в 11:00
Напиши кратко, по делу, без излишеств.

Claude сам выберет нужный инструмент — slack_read_channel, slack_search, slack_post_message — и выполнит запрос. Вам не нужно знать, какой именно инструмент использовать: достаточно описать задачу человеческим языком. MCP-сервер предоставляет Claude набор функций с описаниями, и модель сама решает, что применить в данном случае — точно так же, как опытный сотрудник выбирает, какой инструмент взять из ящика.

Важная деталь с отправкой сообщений: подтверждение перед отправкой — это обычный запрос прав на вызов инструмента. В режимах, где запросы отключены (авторежим, bypassPermissions), сообщение уйдёт без вопроса. Нужна гарантия — держите отправку под правилом ask или работайте в ручном режиме (сообщение отправится реальным людям). Если хотите автоматическую отправку без подтверждения — укажите это явно в запросе, но делайте это осознанно.

Шаг 5. Утренний ритуал

Когда разберётесь с базовыми запросами, создайте собственный ежеутренний сценарий. Напишите запрос, который агрегирует несколько каналов сразу:

Собери утренний дайджест: прочитай последние 50 сообщений в каждом из каналов 
#маркетинг, #команда, #клиенты за вчера и сегодня. 
Для каждого канала — 3-5 пунктов: что важного, кому нужно ответить, что требует решения.

Этот запрос можно сохранить как фрагмент в любом инструменте — и использовать каждое утро за одну команду. Или, если вы дошли до Дня 39 курса, где разбирается cron, — вообще автоматизировать: Claude сам запустится в 8:45, соберёт дайджест и пришлёт вам в личный канал или на почту. Но это следующий уровень; для начала достаточно просто понять, что такой запрос работает и экономит реальное время.

Частые ошибки

Ошибка 1: Бот не приглашён в канал

Симптом: Claude пишет что-то вроде «не могу получить доступ к каналу» или возвращает пустой список сообщений при явно активном канале.

Причина: MCP-сервер авторизован в Slack, но бот физически не является участником канала. Slack API не даёт читать историю каналов, в которых бот не состоит, даже если у него есть технические права.

Решение: зайдите в каждый нужный канал и выполните /invite @ИмяВашегоБота.

Ошибка 2: Токен с недостаточными правами

Симптом: некоторые операции работают, другие — нет. Например, читать можно, а искать — ошибка.

Причина: при создании приложения вы добавили не все нужные скоупы. Slack API строго разделяет права: channels:history позволяет читать историю, но не искать. search:read — отдельный скоуп.

Решение: вернитесь на api.slack.com/apps, добавьте недостающие скоупы в Bot Token Scopes, переустановите приложение в workspace через Install to Workspace. Токен останется тем же.

Ошибка 3: Переменная окружения недоступна Claude Code

Симптом: при запуске Claude Code пишет, что не может подключиться к Slack MCP-серверу. В логах — SLACK_BOT_TOKEN is not set.

Причина: на macOS приложения, запущенные не из терминала (например, через Spotlight или Dock), могут не видеть переменные из ~/.zshenv. Claude Code, запущенный через UI, читает переменные из другого источника.

Решение: запускайте Claude Code из терминала командой claude, а не через иконку в Dock. Или добавьте переменную в ~/.zprofile вместо ~/.zshenv — этот файл читается при логине.

Этот нюанс macOS с переменными окружения — частая причина «работает в терминале, не работает в приложении». Правило простое: секреты для интеграций держите в `~/.zshenv` — он читается и интерактивными сессиями, и скриптами, и launchd.

Ошибка 4: Слишком большой запрос на историю

Симптом: Claude начинает читать канал и зависает или возвращает ответ через минуту.

Причина: в активных каналах за день может быть 500+ сообщений. Попытка прочитать всё сразу перегружает контекст и замедляет обработку.

Решение: явно ограничивайте запрос. «Последние 100 сообщений» или «сообщения за последние 8 часов» — разумные рамки. Если нужно больше — разбивайте на части или используйте поиск вместо чтения всей истории.

Когда нужно / когда нет

Slack MCP нужен, если:

Slack MCP не нужен или не подойдёт, если:

В некоторых enterprise-версиях Slack администратор может запрещать установку сторонних приложений. Если вы работаете в крупной компании с централизованным IT — уточните политику до начала настройки. Иначе потратите час на конфигурацию и получите отказ при установке.

Связь с другими уроками

День 51: Что такое MCP и зачем он нужен — фундаментальное объяснение протокола MCP, концепция MCP-серверов и почему это принципиально отличается от просто «вставить текст в Claude». Если не читали — стоит начать оттуда, иначе часть этого урока будет непонятна.

День 52: 4 транспорта MCP — разбор того, как именно MCP-серверы подключаются: через stdio (запускается как программа), http (внешний сервис) или websocket. Slack MCP использует stdio-транспорт — это важно понимать, когда что-то идёт не так при подключении.

День 54: MCP GitHub — паттерн настройки GitHub MCP очень похож на Slack: токен → скоупы → конфиг → проверка. Если вы уже настроили GitHub MCP, Slack настроится за вдвое меньшее время. И наоборот — опыт со Slack поможет разобраться с GitHub. Оба инструмента — примеры того, как MCP превращает Claude из текстового помощника в участника ваших рабочих систем.

День 21: Субагенты и .claude/agents/ — когда Slack MCP настроен, следующий логичный шаг — создать специализированного субагента, который знает структуру ваших каналов, понимает контекст проектов и умеет формировать дайджест в вашем стиле. Субагент с Slack MCP — это уже полноценный ИИ-помощник по коммуникациям, а не просто «прочитай канал».

Задание на сегодня

Настройте Slack MCP и сделайте один реальный саммари-запрос по самому активному вашему каналу.

Критерий «выполнено»: Claude прочитал канал, вернул структурированную выжимку из реальных сообщений (не пример, не шаблон — именно содержимое вашего канала за сегодня или вчера), и вы увидели в ней хотя бы один пункт, который иначе пришлось бы найти вручную.

Если Slack не используется в вашей компании — создайте бесплатное тестовое workspace на slack.com, пригласите туда нескольких коллег или напишите несколько тестовых сообщений самостоятельно. Механика настройки идентична.

Резюме

Следующий урок откроется после отметки.