mcpField
S
Slack MCP Server with SSE Transport

Slack MCP Server with SSE Transport

ローカル
github.com/dVelopmentコミュニケーション081 週間前に更新

Slack MCP Server with SSE Transport について

HTTP上のSSEを通じてAIアシスタントからSlackワークスペースの機能を利用できる、TypeScript製のMCPサーバーです。チャンネルやメッセージ、スレッド、リアクション、ユーザー情報を扱うツールを備え、Dockerにも対応しています。

主な機能

  1. 01HTTP/HTTPSでのSSE通信
  2. 02公開チャンネルの一覧表示
  3. 03メッセージ送信とスレッド返信
  4. 04チャンネル履歴とスレッド返信の取得
  5. 05メッセージへのリアクション追加
  6. 06ユーザーとプロフィールの取得

活用シーン

  1. 01チャンネル一覧や最近のメッセージの確認
  2. 02更新情報の投稿やスレッドへの返信
  3. 03Slackメッセージへのリアクション追加
  4. 04ワークスペースのユーザーとプロフィールの検索

MCP 対応

`/sse`エンドポイントを通じて、Slack APIの機能をMCPクライアント向けのツールとして提供します。クライアントはSSE通信に対応している必要があります。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"slack-mcp-server-sse": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"compose"
]
}
}
}
起動コマンドdocker run -i --rm compose

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocicompose

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

SSE トランスポート対応 Slack MCP サーバー

Server-Sent Events(SSE)トランスポートを使用して Slack API を統合する、Model Context Protocol(MCP)サーバーです。このサーバーを使用すると、AI アシスタントはシンプルな HTTP ベースのインターフェースを介して Slack ワークスペースを操作できます。

特長

  • SSE トランスポート:stdio の代わりに Server-Sent Events(SSE)を使用し、HTTP/HTTPS 経由の通信を可能にします
  • Slack API 統合:Slack API の主要な機能を利用できます
  • シンプルなウェブインターフェース:基本的なウェブ UI とヘルスチェックエンドポイントを備えています
  • Docker サポート:簡単にデプロイできるよう、Docker で完全にコンテナ化されています
  • TypeScript による実装:型安全性を高め、開発者エクスペリエンスを向上させる TypeScript で構築されています
  • クロスプラットフォーム対応:SSE トランスポートに対応するあらゆる MCP クライアントで動作します

前提条件

  • Node.js 18 以降
  • 適切な権限を持つ Slack ボットトークン
  • Slack チーム ID
  • Docker(任意。コンテナ化してデプロイする場合)

環境変数

変数説明デフォルト
SLACK_BOT_TOKENSlack ボットユーザー OAuth トークン(xoxb- で始まります)必須
SLACK_TEAM_IDSlack ワークスペース/チーム ID必須
PORTサーバーが実行されるポート3000

セットアップ手順

Slack ボットトークンとチーム ID の取得
  1. Slack アプリを作成します:

    • Slack Apps ページにアクセスします
    • 「Create New App」をクリックします
    • 「From scratch」を選択します
    • アプリ名を入力し、ワークスペースを選択します
  2. ボットトークンのスコープを設定します:

    • アプリの設定で「OAuth & Permissions」に移動します
    • 次のスコープを追加します:
      • channels:history - パブリックチャンネルのメッセージやその他のコンテンツを表示する
      • channels:read - チャンネルの基本情報を表示する
      • chat:write - アプリとしてメッセージを送信する
      • reactions:write - メッセージに絵文字リアクションを追加する
      • users:read - ユーザーとその基本情報を表示する
  3. ワークスペースにアプリをインストールします:

    • 「Install to Workspace」をクリックして、アプリを認証します
    • xoxb- で始まる「Bot User OAuth Token」を保存します
  4. チーム ID を取得します:

    • ウェブブラウザーで Slack を開きます
    • ログイン後、ブラウザーの URL を確認します
    • URL は https://app.slack.com/client/T01234567/... のような形式です
    • チーム ID は T で始まる文字列です(例:T01234567)
ローカルでの開発
  1. リポジトリをクローンします
  2. 依存関係をインストールします:
    npm install
    
  3. .env.example を基に .env ファイルを作成します:
    SLACK_BOT_TOKEN=xoxb-your-slack-bot-token
    SLACK_TEAM_ID=your-slack-team-id
    PORT=3000
    
  4. TypeScript コードをビルドします:
    npm run build
    
  5. サーバーを起動します:
    npm start
    

自動リロードを有効にして開発する場合:

npm run dev
Docker によるデプロイ
Docker Compose を使用する(推奨)
  1. 上記の手順に従って Slack の認証情報を記載した .env ファイルを作成します
  2. コンテナをビルドして実行します:
    docker compose up --build
    
ビルド済みイメージを使用する
docker run -p 3000:3000 \
  -e SLACK_BOT_TOKEN=xoxb-your-slack-bot-token \
  -e SLACK_TEAM_ID=your-slack-team-id \
  ghcr.io/dvelopment/slack-mcp-server-sse:latest

GitHub Container Registry への公開など、Docker の詳しい手順については、DOCKER.md を参照してください。

サーバーのエンドポイント

  • SSE エンドポイント:/sse - SSE イベントを受信するには、このエンドポイントに接続します
  • ヘルスチェック:/health - シンプルなヘルスチェックエンドポイント({"status":"ok"} を返します)
  • ホームページ:/ - サーバーに関する情報を掲載したシンプルな HTML ページ

利用可能な Slack API ツール

ツール名説明必須パラメーター
slack_list_channelsページネーションを使用してワークスペース内の公開チャンネルを一覧表示しますなし(任意:limit、cursor)
slack_post_messageSlack チャンネルに新しいメッセージを投稿しますchannel_id、text
slack_reply_to_threadSlack の特定のメッセージスレッドに返信しますchannel_id、thread_ts、text
slack_add_reactionメッセージにリアクション絵文字を追加しますchannel_id、timestamp、reaction
slack_get_channel_historyチャンネルの最近のメッセージを取得しますchannel_id(任意:limit)
slack_get_thread_repliesメッセージスレッド内のすべての返信を取得しますchannel_id、thread_ts
slack_get_usersワークスペース内のすべてのユーザーの一覧を取得しますなし(任意:cursor、limit)
slack_get_user_profile特定のユーザーの詳細なプロフィール情報を取得しますuser_id

サーバーへの接続

Node.js クライアントの例
// Replace with your server URL
const SERVER_URL = 'http://localhost:3000/sse';

// Create EventSource to connect to the SSE endpoint
const eventSource = new EventSource(SERVER_URL);

// Handle connection open
eventSource.onopen = () => {
  console.log('Connected to SSE server');
};

// Handle messages
eventSource.onmessage = (event) => {
  console.log('Received message:', event.data);
  try {
    const data = JSON.parse(event.data);
    console.log('Parsed data:', data);
  } catch (error) {
    console.log('Raw message (not JSON):', event.data);
  }
};

// Handle errors
eventSource.onerror = (error) => {
  console.error('SSE connection error:', error);
  eventSource.close();
};

クライアントの例については、examples ディレクトリをご覧ください。

  • examples/client.js - Node.js クライアントの例
  • examples/browser-client.html - ブラウザークライアントの例
Claude MCP Wrapper での使用

このサーバーを Claude MCP Wrapper で使用するには、次のようにします。

claude_mcp_wrapper.sh -y docker run -i --rm -e SLACK_BOT_TOKEN -e SLACK_TEAM_ID mcp/slack

SSE ベースの接続の場合は、次のようにします。

claude_mcp_wrapper.sh -y http://localhost:3000/sse

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。