Skip to main content
Glama
hamas

Spark Assistant for Slack - MCP Server

by hamas

Spark Assistant for Slack - MCP Server

Slack ワークスペースと対話するための Model Context Protocol (MCP) サーバーで、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

    • ボットトークン認証をテストし、接続されたワークスペースとボットユーザーの詳細を取得します。

    • 戻り値: ワークスペース名、チーム 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. Bot Token スコープを構成する

「OAuth & Permissions」に移動し、以下のスコープを追加します:

  • channels:history - 公開チャンネルのメッセージやその他のコンテンツを表示する

  • channels:read - チャンネルの基本情報を表示する

  • chat:write - アプリとしてメッセージを送信する

  • reactions:write - メッセージに絵文字リアクションを追加する

  • users:read - ユーザーとその基本情報を表示する

  • users.profile:read - ユーザーの詳細なプロフィールを表示する

3. アプリをワークスペースにインストールする

  • 「Install to Workspace」をクリックしてアプリを承認します

  • xoxb- で始まる「Bot User OAuth Token」を保存します

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 トランスポート

  • ユースケース: リモートサーバーや Web ベースの統合

  • 通信: オプションの Server-Sent Events ストリームを伴う HTTP POST リクエスト

  • 機能:

    • セッション管理

    • 双方向通信

    • 再開可能な接続

    • RESTful API エンドポイント

    • Bearer トークン認証

認証 (Streamable HTTP トランスポートのみ)

Streamable HTTP トランスポートを使用する場合、サーバーは Bearer トークン認証をサポートします:

  1. コマンドライン: --token <token> を使用してカスタムトークンを指定します

  2. 環境変数: フォールバックとして AUTH_TOKEN=<token> を設定します

  3. 自動生成: どちらも指定されない場合は、ランダムなトークンが生成されます

コマンドラインオプションは環境変数より優先されます。HTTP リクエストでは、Authorization: Bearer <token> ヘッダーを使用してトークンを含めてください。

トラブルシューティング

権限エラーが発生した場合は、以下を確認してください:

  1. 必要なスコープがすべて 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