Skip to main content
Glama
hamas

Spark Assistant for Slack - MCP Server

by hamas

Spark Assistant for Slack - MCP Server

Сервер Model Context Protocol (MCP) для взаимодействия с рабочими пространствами Slack, адаптированный для Spark Assistant. Этот сервер предоставляет инструменты для просмотра списка каналов, отправки сообщений, ответов в тредах, добавления эмодзи-реакций, получения истории каналов, просмотра профилей пользователей и проверки аутентификации Slack API.


⚡ Быстрый старт

  1. Установите зависимости и выполните сборку:

    npm install
    npm run build
  2. Настройте переменные окружения: Скопируйте .env.example в .env и укажите свои учётные данные Slack:

    cp .env.example .env
    SLACK_BOT_TOKEN=xoxb-your-slack-bot-token
    SLACK_TEAM_ID=T00000000
  3. Запустите сервер:

    # Standard stdio mode (for Claude Desktop / Antigravity / Cursor / Windsurf)
    node dist/index.js
    
    # HTTP mode on port 3000
    node dist/index.js --transport http --port 3000

Related MCP server: Slack MCP Server

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

  1. slack_auth_test

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

    • Возвращает: название рабочего пространства, team ID, ID пользователя-бота и URL аутентификации

  2. slack_list_channels

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

    • Необязательные входные параметры: limit (по умолчанию: 100, максимум: 200), cursor (пагинация)

  3. slack_post_message

    • Отправляет новое сообщение в канал Slack или личное сообщение пользователю

    • Обязательные входные параметры: channel_id, text

  4. slack_reply_to_thread

    • Отвечает в конкретный тред сообщения в Slack

    • Обязательные входные параметры: channel_id, thread_ts, text

  5. slack_add_reaction

    • Добавляет эмодзи-реакцию к сообщению

    • Обязательные входные параметры: channel_id, timestamp, reaction (название эмодзи без двоеточий)

  6. slack_get_channel_history

    • Получает последние сообщения из канала

    • Обязательные входные параметры: channel_id | Необязательно: limit (по умолчанию: 10)

  7. slack_get_thread_replies

    • Получает все ответы в треде сообщения

    • Обязательные входные параметры: channel_id, thread_ts

  8. slack_get_users

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

    • Необязательные входные параметры: cursor, limit (по умолчанию: 100, максимум: 200)

  9. slack_get_user_profile

    • Получает подробную информацию о профиле конкретного пользователя

    • Обязательные входные параметры: user_id

Настройка Slack-бота

Чтобы использовать этот MCP-сервер, необходимо создать Slack-приложение и настроить его с необходимыми разрешениями:

1. Создайте Slack-приложение

  • Перейдите на страницу Slack Apps

  • Нажмите «Create New App»

  • Выберите «From scratch»

  • Дайте приложению имя и выберите рабочее пространство

2. Настройте области токена бота

Перейдите в раздел «OAuth & Permissions» и добавьте следующие области (scopes):

  • channels:history - просмотр сообщений и другого содержимого в публичных каналах

  • channels:read - просмотр основной информации о канале

  • chat:write - отправка сообщений от имени приложения

  • reactions:write - добавление эмодзи-реакций к сообщениям

  • users:read - просмотр пользователей и их основной информации

  • users.profile:read - просмотр подробных профилей пользователей

3. Установите приложение в рабочее пространство

  • Нажмите «Install to Workspace» и авторизуйте приложение

  • Сохраните «Bot User OAuth Token», который начинается с xoxb-

4. Получите свой Team ID

Получите свой Team ID (начинается с T), следуя этому руководству

5. Добавьте бота в каналы (необязательно)

Чтобы бот мог получать доступ к приватным каналам или отправлять сообщения, возможно, потребуется пригласить его в нужные каналы с помощью /invite @your-bot-name

Возможности

  • Поддержка нескольких транспортов: поддержка транспортов stdio и Streamable HTTP

  • Современный MCP SDK: обновлён для использования последней версии MCP SDK (v1.13.2) с современными API

  • Полная интеграция со Slack: полный набор операций Slack, включая:

    • список каналов (с поддержкой заранее заданных каналов)

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

    • ответы в тредах

    • добавление реакций

    • получение истории каналов

    • получение ответов в тредах

    • список пользователей

    • получение профилей пользователей

Установка

Локальная разработка

npm install
npm run build

Глобальная установка (NPM)

npm install -g @zencoderai/slack-mcp-server

Установка через Docker

# Build the Docker image locally
docker build -t slack-mcp-server .

# Or pull from Docker Hub
docker pull zencoderai/slack-mcp:latest

# Or pull a specific version
docker pull zencoderai/slack-mcp:1.0.0

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

Задайте следующие переменные окружения:

export SLACK_BOT_TOKEN="xoxb-your-bot-token"
export SLACK_TEAM_ID="your-team-id"
export SLACK_CHANNEL_IDS="channel1,channel2,channel3"  # Optional: predefined channels
export AUTH_TOKEN="your-auth-token"  # Optional: Bearer token for HTTP authorization (Streamable HTTP transport only)

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

Параметры командной строки

slack-mcp [options]

Options:
  --transport <type>     Transport type: 'stdio' or 'http' (default: stdio)
  --port <number>        Port for HTTP server when using Streamable HTTP transport (default: 3000)
  --token <token>        Bearer token for HTTP authorization (optional, can also use AUTH_TOKEN env var)
  --help, -h             Show this help message

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

Использование команды slack-mcp (после глобальной установки)

# Use stdio transport (default)
slack-mcp

# Use stdio transport explicitly
slack-mcp --transport stdio

# Use Streamable HTTP transport on default port 3000
slack-mcp --transport http

# Use Streamable HTTP transport on custom port
slack-mcp --transport http --port 8080

# Use Streamable HTTP transport with custom auth token
slack-mcp --transport http --token mytoken

# Use Streamable HTTP transport with auth token from environment variable
AUTH_TOKEN=mytoken slack-mcp --transport http

Использование node напрямую (для разработки)

# Use stdio transport (default)
node dist/index.js

# Use stdio transport explicitly
node dist/index.js --transport stdio

# Use Streamable HTTP transport on default port 3000
node dist/index.js --transport http

# Use Streamable HTTP transport on custom port
node dist/index.js --transport http --port 8080

# Use Streamable HTTP transport with custom auth token
node dist/index.js --transport http --token mytoken

# Use Streamable HTTP transport with auth token from environment variable
AUTH_TOKEN=mytoken node dist/index.js --transport http

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

Использование Docker напрямую

# Run with stdio transport (default)
docker run --rm \
  -e SLACK_BOT_TOKEN="xoxb-your-bot-token" \
  -e SLACK_TEAM_ID="your-team-id" \
  zencoderai/slack-mcp:latest

# Run with HTTP transport on port 3000
docker run --rm -p 3000:3000 \
  -e SLACK_BOT_TOKEN="xoxb-your-bot-token" \
  -e SLACK_TEAM_ID="your-team-id" \
  zencoderai/slack-mcp:latest --transport http

# Run with HTTP transport on custom port
docker run --rm -p 8080:8080 \
  -e SLACK_BOT_TOKEN="xoxb-your-bot-token" \
  -e SLACK_TEAM_ID="your-team-id" \
  zencoderai/slack-mcp:latest --transport http --port 8080

# Run with custom auth token
docker run --rm -p 3000:3000 \
  -e SLACK_BOT_TOKEN="xoxb-your-bot-token" \
  -e SLACK_TEAM_ID="your-team-id" \
  -e AUTH_TOKEN="mytoken" \
  zencoderai/slack-mcp:latest --transport http

Использование Docker Compose

Создайте файл docker-compose.yml:

version: '3.8'

services:
  slack-mcp:
    # Use published image:
    image: zencoderai/slack-mcp:latest
    # Or build locally:
    # build: .
    environment:
      - SLACK_BOT_TOKEN=xoxb-your-bot-token
      - SLACK_TEAM_ID=your-team-id
      - SLACK_CHANNEL_IDS=channel1,channel2,channel3  # Optional
      - AUTH_TOKEN=your-auth-token  # Optional for HTTP transport
    ports:
      - "3000:3000"  # Only needed for HTTP transport
    command: ["--transport", "http"]  # Optional: specify transport type
    restart: unless-stopped

Затем выполните:

# Start the service
docker compose up -d

# View logs
docker compose logs -f slack-mcp

# Stop the service
docker compose down

Типы транспортов

Транспорт Stdio

  • Назначение: инструменты командной строки и прямые интеграции

  • Передача данных: стандартные потоки ввода/вывода

  • По умолчанию: да

Транспорт Streamable HTTP

  • Назначение: удалённые серверы и веб-интеграции

  • Передача данных: HTTP POST-запросы с опциональными потоками Server-Sent Events

  • Возможности:

    • Управление сеансами

    • Двунаправленная связь

    • Возобновляемые подключения

    • Конечные точки RESTful API

    • Аутентификация по Bearer-токену

Аутентификация (только для транспорта Streamable HTTP)

При использовании транспорта Streamable HTTP сервер поддерживает аутентификацию по Bearer-токену:

  1. Командная строка: используйте --token <token> для указания собственного токена

  2. Переменная окружения: задайте AUTH_TOKEN=<token> в качестве запасного варианта

  3. Автогенерация: если не указано ни то, ни другое, генерируется случайный токен

Параметр командной строки имеет приоритет над переменной окружения. Включайте токен в HTTP-запросы с помощью заголовка Authorization: Bearer <token>.

Устранение неполадок

Если возникают ошибки разрешений, проверьте следующее:

  1. Все необходимые области (scopes) добавлены в ваше Slack-приложение

  2. Приложение правильно установлено в ваше рабочее пространство

  3. Токены и ID рабочего пространства правильно скопированы в вашу конфигурацию

  4. Приложение добавлено в каналы, к которым ему требуется доступ

Разработка

Сборка

npm run build

Режим наблюдения

npm run watch

Конечные точки API (транспорт Streamable HTTP)

При использовании транспорта Streamable HTTP сервер предоставляет следующие конечные точки:

  • POST /mcp - связь «клиент-сервер»

  • GET /mcp - уведомления «сервер-клиент» (потоки Server-Sent Events)

  • DELETE /mcp - завершение сеанса

Изменения по сравнению с предыдущей версией

  • Обновлённый MCP SDK: обновлён с v1.0.1 до v1.13.2

  • Современный API: переход от низкоуровневого класса Server к высокоуровневому классу McpServer

  • Валидация через Zod: добавлена корректная валидация схем с помощью Zod

  • Гибкость транспорта: добавлена поддержка транспорта Streamable HTTP

  • Интерфейс командной строки: добавлены аргументы CLI для выбора транспорта

  • Управление сеансами: реализована корректная обработка сеансов для HTTP-транспорта

  • Улучшенная обработка ошибок: улучшены обработка ошибок и журналирование

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Interact with Slack Workspaces over the Slack API. Supports stdio and Streamable HTTP transport. Extended from Anthropic's archived server
    8
    15,054 npm
    75
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Slack workspaces through natural language, supporting channel management, message operations, user profiles, reactions, and threaded conversations.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with Slack workspaces, including listing channels, posting messages, replying to threads, adding reactions, and retrieving user information.
    10
    12 npm
    MIT