slack-mcp-server について
slack-mcp-server は、Slack API にアクセスするための MCP サーバーです。AI アシスタントが標準化されたインターフェースを通じてチャンネルの閲覧、メッセージ投稿、検索を行えます。Stdio と Streamable HTTP の両方のトランスポートに対応しています。
主な機能
- 01チャンネルとメッセージの読み取りツール
- 02メッセージ投稿とスレッド返信
- 03リアクション絵文字の追加
- 04ユーザープロフィールの一括取得
- 05複数条件によるメッセージ検索
- 06任意で有効にできるセーフ検索モード
活用シーン
- 01AI アシスタントによるチャンネルの最近のメッセージ要約
- 02アシスタント経由のスレッド返信やリアクション追加
- 03ユーザー・日付・チャンネルでの過去メッセージ検索
MCP 対応
本プロジェクトは MCP サーバーであり、slack_list_channels、slack_post_message、slack_search_messages などの Slack 操作を MCP クライアントにツールとして提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
slack-mcp-server
Slack API にアクセスするための MCP(Model Context Protocol) サーバーです。このサーバーを使用すると、AI アシスタントは標準化されたインターフェースを通じて Slack API を操作できます。
トランスポートのサポート
このサーバーは、従来の MCP トランスポート方式と最新の MCP トランスポート方式の両方をサポートしています。
- Stdio トランスポート(デフォルト):ローカル統合向けのプロセスベースの通信
- Streamable HTTP トランスポート:Web アプリケーションやリモートクライアント向けの HTTP ベースの通信
機能
利用可能なツール:
slack_list_channels- ページネーションを使用してワークスペース内の公開チャンネルを一覧表示slack_post_message- Slack チャンネルに新しいメッセージを投稿slack_reply_to_thread- Slack の特定のメッセージスレッドに返信slack_add_reaction- メッセージにリアクション絵文字を追加slack_get_channel_history- チャンネルの最近のメッセージを取得slack_get_thread_replies- メッセージスレッド内のすべての返信を取得slack_get_users- ワークスペース内のすべてのユーザーの基本プロフィール情報を取得slack_get_user_profiles- 複数ユーザーのプロフィール情報を一括で取得(バッチ処理に便利)slack_search_messages- 強力なフィルターを使ってワークスペース内のメッセージを検索:- 基本的なクエリ検索
- 場所フィルター:
in_channel - ユーザーフィルター:
from_user、with - 日付フィルター:
before(YYYY-MM-DD)、after(YYYY-MM-DD)、on(YYYY-MM-DD)、during(例:「July」、「2023」) - コンテンツフィルター:
has(絵文字リアクション)、is(保存済み/スレッド) - 関連度スコアまたはタイムスタンプによる並べ替え
クイックスタート
インストール
npm install @ubie-oss/slack-mcp-server
注:現在は GitHub Registry でホストされているため、PAT が必要です。
設定
以下の環境変数を設定する必要があります。
SLACK_BOT_TOKEN:Slack Bot User OAuth TokenSLACK_USER_TOKEN:Slack User OAuth Token(メッセージ検索など、一部の機能で必要)SLACK_SAFE_SEARCH(任意):trueに設定すると、検索結果からプライベートチャンネル、DM、グループ DM を自動的に除外します。この設定はサーバー側で適用され、クライアントから変更することはできません。
これらの環境変数を設定する .env ファイルを作成することもできます。
SLACK_BOT_TOKEN=xoxb-your-bot-token
SLACK_USER_TOKEN=xoxp-your-user-token
SLACK_SAFE_SEARCH=true # Optional: Enable safe search mode
使用方法
MCP サーバーを起動する
Stdio トランスポート(デフォルト):
npx @ubie-oss/slack-mcp-server
Streamable HTTP トランスポート:
npx @ubie-oss/slack-mcp-server -port 3000
インストール済みのモジュールは、node を使って実行することもできます。
# Stdio transport
node node_modules/.bin/slack-mcp-server
# HTTP transport
node node_modules/.bin/slack-mcp-server -port 3000
コマンドラインオプション:
-port <number>:指定したポートで Streamable HTTP トランスポートを起動-h, --help:ヘルプメッセージを表示
クライアントの設定
Stdio トランスポートの場合(Claude Desktop など):
{
"slack": {
"command": "npx",
"args": [
"-y",
"@ubie-oss/slack-mcp-server"
],
"env": {
"NPM_CONFIG_//npm.pkg.github.com/:_authToken": "<your-github-pat>",
"SLACK_BOT_TOKEN": "<your-bot-token>",
"SLACK_USER_TOKEN": "<your-user-token>",
"SLACK_SAFE_SEARCH": "true"
}
}
}
Streamable HTTP トランスポートの場合(Web アプリケーション):
サーバーを起動します。
SLACK_BOT_TOKEN=<your-bot-token> SLACK_USER_TOKEN=<your-user-token> npx @ubie-oss/slack-mcp-server -port 3000
接続先:http://localhost:3000/mcp
クライアントの詳細な使用例については、examples/README.md を参照してください。
実装パターン
このサーバーでは、以下の実装パターンを採用しています。
-
Zod スキーマを使用してリクエスト/レスポンスを定義
- リクエストスキーマ:入力パラメーターを定義
- レスポンススキーマ:必要なフィールドに限定してレスポンスを定義
-
実装の流れ:
- Zod スキーマでリクエストを検証
- Slack WebAPI を呼び出す
- Zod スキーマでレスポンスを解析し、必要なフィールドに限定
- JSON として返す
たとえば、slack_list_channels の実装では、ListChannelsRequestSchema でリクエストを解析し、slackClient.conversations.list を呼び出して、ListChannelsResponseSchema で解析したレスポンスを返します。
開発
利用可能なスクリプト
npm run dev- ホットリロードを有効にして開発モードでサーバーを起動npm run build- 本番環境向けにプロジェクトをビルドnpm run start- 本番サーバーを起動npm run lint- リントチェックを実行(ESLint および Prettier)npm run fix- リントの問題を自動修正
コントリビューション
- リポジトリをフォーク
- 機能ブランチを作成
- テストとリントを実行:
npm run lint - 変更をコミット
- ブランチにプッシュ
- プルリクエストを作成
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。