Slack MCP Server with SSE Transport について
HTTP上のSSEを通じてAIアシスタントからSlackワークスペースの機能を利用できる、TypeScript製のMCPサーバーです。チャンネルやメッセージ、スレッド、リアクション、ユーザー情報を扱うツールを備え、Dockerにも対応しています。
主な機能
- 01HTTP/HTTPSでのSSE通信
- 02公開チャンネルの一覧表示
- 03メッセージ送信とスレッド返信
- 04チャンネル履歴とスレッド返信の取得
- 05メッセージへのリアクション追加
- 06ユーザーとプロフィールの取得
活用シーン
- 01チャンネル一覧や最近のメッセージの確認
- 02更新情報の投稿やスレッドへの返信
- 03Slackメッセージへのリアクション追加
- 04ワークスペースのユーザーとプロフィールの検索
MCP 対応
`/sse`エンドポイントを通じて、Slack APIの機能をMCPクライアント向けのツールとして提供します。クライアントはSSE通信に対応している必要があります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
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_TOKEN | Slack ボットユーザー OAuth トークン(xoxb- で始まります) | 必須 |
SLACK_TEAM_ID | Slack ワークスペース/チーム ID | 必須 |
PORT | サーバーが実行されるポート | 3000 |
セットアップ手順
Slack ボットトークンとチーム ID の取得
-
Slack アプリを作成します:
- Slack Apps ページにアクセスします
- 「Create New App」をクリックします
- 「From scratch」を選択します
- アプリ名を入力し、ワークスペースを選択します
-
ボットトークンのスコープを設定します:
- アプリの設定で「OAuth & Permissions」に移動します
- 次のスコープを追加します:
channels:history- パブリックチャンネルのメッセージやその他のコンテンツを表示するchannels:read- チャンネルの基本情報を表示するchat:write- アプリとしてメッセージを送信するreactions:write- メッセージに絵文字リアクションを追加するusers:read- ユーザーとその基本情報を表示する
-
ワークスペースにアプリをインストールします:
- 「Install to Workspace」をクリックして、アプリを認証します
xoxb-で始まる「Bot User OAuth Token」を保存します
-
チーム ID を取得します:
- ウェブブラウザーで Slack を開きます
- ログイン後、ブラウザーの URL を確認します
- URL は
https://app.slack.com/client/T01234567/...のような形式です - チーム ID は T で始まる文字列です(例:
T01234567)
ローカルでの開発
- リポジトリをクローンします
- 依存関係をインストールします:
npm install .env.exampleを基に.envファイルを作成します:SLACK_BOT_TOKEN=xoxb-your-slack-bot-token SLACK_TEAM_ID=your-slack-team-id PORT=3000- TypeScript コードをビルドします:
npm run build - サーバーを起動します:
npm start
自動リロードを有効にして開発する場合:
npm run dev
Docker によるデプロイ
Docker Compose を使用する(推奨)
- 上記の手順に従って Slack の認証情報を記載した
.envファイルを作成します - コンテナをビルドして実行します:
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_message | Slack チャンネルに新しいメッセージを投稿します | channel_id、text |
slack_reply_to_thread | Slack の特定のメッセージスレッドに返信します | 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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。