Slack MCP Server について
Slack MCP Server は、LLM によるワークスペース内容の検索、閲覧、管理を可能にします。操作ツールに加え、ワークスペースのリソースと一般的なチーム業務向けのプロンプトを備えています。
主な機能
- 01チャンネルと詳細情報の閲覧
- 02メッセージとスレッドの確認
- 03ワークスペース内メッセージの検索
- 04ユーザーと共有ファイルの一覧表示
- 05メッセージへのリアクション追加と削除
- 06ワークスペースリソースとワークフロープロンプト
活用シーン
- 01特定の話題に関する議論の検索
- 02最近のチャンネル活動の確認
- 03デイリースタンドアップ情報の収集
- 04ワークスペースのメンバーやチャンネルの確認
MCP 対応
チャンネル、メッセージ、ユーザー、ファイル、リアクションを操作する Slack ツールと、ワークスペースのリソースおよびワークフロープロンプトを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Slack MCP サーバー
LLM が Slack ワークスペースとやり取りできるようにする、包括的な Model Context Protocol(MCP)サーバーです。このサーバーは、Slack コンテンツの検索、閲覧、管理を行うツールに加え、ワークスペース情報を提供するリソースと、一般的なワークフロー向けのプロンプトを提供します。
機能
🛠️ ツール(11 種類)
- チャンネル管理
slack_list_channels- パブリックチャンネルとプライベートチャンネルを閲覧しますslack_get_channel_info- チャンネルの詳細情報を取得しますslack_list_bookmarks- チャンネル内のブックマークを一覧表示します
- メッセージ操作
slack_list_messages- チャンネルやスレッドのメッセージを読み取りますslack_list_threads- スレッド形式の会話を見つけますslack_search_messages- ワークスペース全体を検索します
- ユーザー管理
slack_get_user_info- ユーザーの詳細情報を取得しますslack_list_users- ワークスペースのユーザーを一覧表示します
- コンテンツとリアクション
slack_list_files- 共有ファイルを閲覧しますslack_add_reaction- 絵文字リアクションを追加しますslack_remove_reaction- 絵文字リアクションを削除します
📚 リソース(4 種類)
slack://workspace- ワークスペース情報slack://me- 現在のボットユーザー情報slack://users- ユーザーディレクトリ全体slack://channels- アクセス可能なすべてのチャンネル
💡 プロンプト(5 種類)
find_recent_discussions- 特定のトピックに関する議論を検索しますchannel_activity_summary- チャンネルのアクティビティを要約しますteam_member_activity- チームメンバーの参加状況を確認しますdaily_standup_helper- デイリースタンドアップに必要な情報を収集しますknowledge_search- 組織内のナレッジを検索します
クイックスタート
1. Slack アプリを作成する
- api.slack.com/apps にアクセスし、「Create New App」をクリックします
- 「From scratch」を選択し、アプリに名前を付けます
- インストール先のワークスペースを選択します
2. OAuth スコープを設定する
アプリの設定で「OAuth & Permissions」に移動し、以下の Bot Token Scopes を追加します。
必須スコープ:
channels:read- チャンネルの基本情報を表示しますchannels:history- パブリックチャンネルのメッセージを表示しますgroups:read- プライベートチャンネルの基本情報を表示しますgroups:history- プライベートチャンネルのメッセージを表示しますusers:read- ワークスペース内のメンバーを表示しますusers:read.email- メールアドレスを表示しますteam:read- ワークスペース情報を表示します
すべての機能を利用するための追加スコープ:
im:read- ダイレクトメッセージを表示しますim:history- ダイレクトメッセージ内のメッセージを表示しますmpim:read- グループダイレクトメッセージを表示しますmpim:history- グループダイレクトメッセージ内のメッセージを表示しますsearch:read- メッセージを検索しますfiles:read- ファイルを表示しますreactions:read- 絵文字リアクションを表示しますreactions:write- リアクションを追加、削除しますbookmarks:read- ブックマークを表示します
3. アプリをインストールする
- 「OAuth & Permissions」で「Install to Workspace」をクリックします
- 「Bot User OAuth Token」をコピーします(
xoxb-で始まります)
4. Claude Desktop を設定する
Claude Desktop の設定ファイルに追加します。
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@sergdev1/slack-mcp-server"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T01234567"
}
}
}
}
使用例
ツールの使用
"Search for messages about the deployment"
"List all channels I have access to"
"Show me threads in #engineering from the last week"
"Get information about user U1234567890"
"Add a thumbsup reaction to message 1234567890.123456 in channel C1234567890"
リソースの使用
リソースを使うと、よく必要になる情報にすばやくアクセスできます。
"Check the workspace resource for company info"
"Look at the users resource to see all team members"
"Review the channels resource for a complete channel list"
プロンプトの使用
プロンプトを使うと、一般的なタスクをガイド付きのワークフローで実行できます。
"Use the find_recent_discussions prompt to search for budget talks"
"Run the channel_activity_summary for #general and #random"
"Execute daily_standup_helper for the #engineering channel"
"Use knowledge_search to find our deployment process"
API リファレンス詳細
ツール
slack_list_channels
Slack ワークスペース内のチャンネルを一覧表示します。
パラメーター:
exclude_archived(boolean、任意):アーカイブ済みのチャンネルを除外します(デフォルト:true)types(string、任意):チャンネルの種類(デフォルト:"public_channel,private_channel")limit(number、任意):返すチャンネルの最大数(デフォルト:100)cursor(string、任意):ページネーション用カーソル
slack_search_messages
ワークスペース全体のメッセージを検索します。
パラメーター:
query(string、必須):Slack の検索修飾子を含む検索クエリcount(number、任意):1 ページあたりの結果数(デフォルト:20)page(number、任意):ページ番号(デフォルト:1)highlight(boolean、任意):一致箇所を強調表示します(デフォルト:true)sort(string、任意):'score' または 'timestamp' で並べ替えます(デフォルト:'score')sort_dir(string、任意):並べ替え順 'asc' または 'desc'(デフォルト:'desc')
検索修飾子:
from:@username- 特定のユーザーからのメッセージin:#channel- 特定のチャンネル内のメッセージafter:2024-01-01- 指定日以降のメッセージbefore:2024-12-31- 指定日以前のメッセージhas:link- リンクを含むメッセージhas:file- ファイルを含むメッセージ
slack_add_reaction / slack_remove_reaction
メッセージの絵文字リアクションを管理します。
パラメーター:
channel(string、必須):チャンネル IDtimestamp(string、必須):メッセージのタイムスタンプname(string、必須):コロンを除いた絵文字名(例:'thumbsup')
リソース
リソースには URI からアクセスし、JSON データを返します。
- slack://workspace:ワークスペース ID、名前、ドメイン、Enterprise 情報を返します
- slack://me:ボットのユーザー ID、名前、認証情報を返します
- slack://users:プロフィール付きのすべてのアクティブユーザーを返します
- slack://channels:メタデータ付きの、アクセス可能なすべてのチャンネルを返します
プロンプト
各プロンプトは引数を受け取り、LLM 向けの構造化メッセージを返します。
find_recent_discussions
topic(string、必須):検索するトピックdays(string、任意):遡る日数(デフォルト:"7")
channel_activity_summary
channel_names(string、必須):カンマ区切りのチャンネル名hours(string、任意):分析する時間数(デフォルト:"24")
高度な設定
環境変数
SLACK_BOT_TOKEN(必須):Slack ボットトークンSLACK_TEAM_ID(任意):チーム情報を取得するためのワークスペース ID
セキュリティのベストプラクティス
-
トークンのセキュリティ
- トークンをバージョン管理にコミットしないでください
- 機密データには環境変数を使用してください
- トークンを定期的にローテーションしてください
-
チャンネルへのアクセス
- ボットをプライベートチャンネルに招待する必要があります:
/invite @your-bot-name - DM にはユーザーからの明示的な許可が必要です
- ボットをプライベートチャンネルに招待する必要があります:
-
レート制限
- Slack のレート制限を遵守してください
- リトライには指数バックオフを実装してください
- 頻繁にアクセスするデータをキャッシュしてください
開発
プロジェクト構成
slack-mcp-server/
├── src/
│ ├── index.ts # Main server entry point
│ ├── slack-client.ts # Slack API client wrapper
│ ├── tools.ts # Tool implementations
│ ├── resources.ts # Resource handlers
│ ├── prompts.ts # Prompt definitions
│ └── types.ts # TypeScript interfaces
├── package.json
├── tsconfig.json
└── README.md
ソースからのビルド
# Clone the repository
git clone https://github.com/sergdev1/slack-mcp-server.git
cd slack-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode
npm run dev
テスト
# Set your Slack token
export SLACK_BOT_TOKEN="xoxb-your-bot-token"
export SLACK_TEAM_ID="T01234567" # Optional
# Run the server
npm test
# Use MCP Inspector for testing
npx @modelcontextprotocol/inspector
サーバーの拡張
新しいツールを追加するには:
tools.tsでスキーマを定義します- ハンドラー関数を実装します
server.tool()に登録します
新しいリソースを追加するには:
resources.tsでハンドラーを定義しますserver.resource()に登録します
新しいプロンプトを追加するには:
prompts.tsでテンプレートを定義しますserver.prompt()に登録します
トラブルシューティング
よくある問題
"channel_not_found" エラー
- ボットがチャンネルのメンバーであることを確認してください
- チャンネル名ではなくチャンネル ID を使用していることを確認してください
- チャンネルがアーカイブされていないことを確認してください
"missing_scope" エラー
- アプリに必要な OAuth スコープを追加してください
- アプリをワークスペースに再インストールしてください
- 一部のスコープには管理者の承認が必要です
メッセージが返されない
- ボットがチャンネルの種類に応じた履歴スコープを持っていることを確認してください
- 時間範囲のパラメーターを確認してください
- 指定した範囲内にチャンネルのメッセージがあることを確認してください
検索が機能しない
search:readスコープが必要です- 検索インデックスの反映には遅延が生じる場合があります
- クエリの構文が有効であることを確認してください
デバッグモード
次の設定を行うと、デバッグログを有効にできます。
DEBUG=slack-mcp-server npm run dev
コントリビューション
コントリビューションを歓迎します。以下の手順に従ってください。
- リポジトリをフォークします
- フィーチャーブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
コードスタイル
- 型安全性のために TypeScript を使用してください
- 既存のコードパターンに従ってください
- 公開 API には JSDoc コメントを追加してください
- 新機能にはテストを含めてください
ライセンス
MIT License - 詳細については LICENSE file を参照してください
謝辞
- Model Context Protocol を使用して構築しました
- Slack Web API を使用しています
- @slack/web-api を基盤としています
変更履歴
v2.0.0
- 8 個の新しいツールを追加(検索、ユーザー、ファイル、リアクション)
- データにすばやくアクセスするための 4 個のリソースを追加
- よく使われるワークフロー向けに 5 個のプロンプトを追加
- エラー処理と検証を改善
- TypeScript の型を改善
- モジュール化されたコードアーキテクチャ
v1.0.0
- 初回リリース
- 基本的なチャンネル、メッセージ、スレッド用ツール
MCP コミュニティのために ❤️ を込めて作成
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。