slack-mcp-server について
slack-mcp-serverは、AIアシスタントをSlackワークスペースの会話やメタデータに接続します。メッセージやスレッドの閲覧、会話の検索、チャンネルとユーザーの詳細取得に対応します。
主な機能
- 01チャンネルメッセージとスレッドの閲覧
- 02会話の検索
- 03チャンネル一覧とメタデータの確認
- 04ユーザープロフィールの参照
- 05メッセージのパーマリンク生成
活用シーン
- 01チャンネルの最近の議論を把握
- 02スレッド全体から背景を取得
- 03会話から決定事項やメンションを検索
- 04チャンネルやユーザーの詳細を確認
MCP 対応
MCPサーバーは、Slackのメッセージやスレッドの閲覧、会話検索、チャンネル一覧、チャンネル・ユーザー情報の取得、パーマリンク生成を行う7つのツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx slack-mcp-server-v2SLACK_USER_TOKENシークレットSlack User OAuth Token (starts with xoxp-). Get from https://api.slack.com/appsSLACK_BOT_TOKENシークレットSlack Bot User OAuth Token (starts with xoxb-). Alternative to user token.SLACK_WORKSPACE_URLYour Slack workspace URL (e.g., https://your-company.slack.com). Required for generating message links.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Slack MCP サーバー
Slack の会話、スレッド、ワークスペース情報へのプログラムによるアクセスを提供する Model Context Protocol(MCP)サーバーです。Claude などの AI アシスタントが、標準化されたインターフェースを通じて Slack ワークスペースとやり取りできるように設計されています。
MCP とは?
Model Context Protocol は、AI アシスタントが外部データソースやツールに安全にアクセスできるようにするオープンスタンダードです。このサーバーは MCP を実装し、Claude が Slack ワークスペースに直接アクセスできるようにします。
機能
📨 メッセージ操作
- チャンネルのメッセージを読む:時間による柔軟なフィルタリングで、任意のチャンネルから最近のメッセージを取得します
- スレッドのメッセージを読む:すべての返信を含む、会話スレッド全体にアクセスします
- メッセージのパーマリンクを取得:特定のメッセージへの恒久的な共有可能リンクを生成します
🔍 検索と発見
- チャンネルを一覧表示:メンバーになっているすべてのチャンネル(パブリック、プライベート、DM、グループ DM)を列挙します
- 会話を検索:Slack の検索機能を使って、自分がメンションされたメッセージや関与しているメッセージを見つけます
📊 メタデータとコンテキスト
- チャンネル情報を取得:チャンネルの詳細、トピック、目的、メンバー数、設定を確認します
- ユーザー情報を取得:ユーザープロフィール、メールアドレス、役職、タイムゾーン、ステータス情報を検索します
クイックスタート
方法 1:PyPI からインストール(推奨)
この MCP サーバーを最も簡単に使うには、PyPI から直接インストールします。
# Install via pip
pip install slack-mcp-server-v2
# Or install via uvx (recommended for MCP servers)
uvx slack-mcp-server-v2
方法 2:ソースからインストール
# Clone the repository
git clone https://github.com/stevenvo/slack-mcp-server.git
cd slack-mcp-server
# Install dependencies
pip install -r requirements.txt
インストール後、認証を設定する必要があります(以下を参照)。
認証
方法 1:ユーザートークン(推奨)
ユーザートークンは個人の Slack 権限を使用し、メンバーになっているすべてのチャンネルにアクセスできます。
- https://api.slack.com/apps にアクセスします
- 新しいアプリを作成します(または既存のアプリを使用します)
- 「OAuth & Permissions」に移動します
- 次の User Token Scopes を追加します:
channels:history- パブリックチャンネルのメッセージを表示しますchannels:read- チャンネルの基本情報を表示しますgroups:history- プライベートチャンネルのメッセージを表示しますgroups:read- プライベートチャンネルの基本情報を表示しますim:history- ダイレクトメッセージのメッセージを表示しますim:read- DM の基本情報を表示しますmpim:history- グループ DM のメッセージを表示しますmpim:read- グループ DM の基本情報を表示しますusers:read- ユーザー情報を表示しますsearch:read- メッセージを検索します
- アプリをワークスペースにインストールします
- 「User OAuth Token」をコピーします(
xoxp-で始まります)
方法 2:ボットトークン
ボットトークンは制限が多いものの、チーム全体で使う場合は設定がより簡単です。
- 上記の手順 1~2 に従います
- 代わりに Bot Token Scopes を追加します(同じ一覧ですが、ボットのセクションにあります)
- アプリをインストールします
- 「Bot User OAuth Token」をコピーします(
xoxb-で始まります) - 読み取りたいチャンネルにボットを招待します:
/invite @YourBotName
環境を設定
.env ファイルを作成します:
cp .env.example .env
.env を編集して、トークンを追加します:
# Use one of these:
SLACK_USER_TOKEN=xoxp-your-user-token-here
# OR
SLACK_BOT_TOKEN=xoxb-your-bot-token-here
Claude Code の設定
~/.claude.json ファイルを編集して、このサーバーを Claude Code に追加します:
PyPI パッケージを使用(推奨)
{
"mcpServers": {
"slack": {
"command": "uvx",
"args": ["slack-mcp-server-v2"],
"env": {
"SLACK_USER_TOKEN": "xoxp-your-user-token-here",
"SLACK_WORKSPACE_URL": "https://your-workspace.slack.com"
}
}
}
}
ローカルインストールを使用
ソースからインストールした場合:
{
"mcpServers": {
"slack": {
"command": "python",
"args": ["/path/to/slack-mcp-server/server.py"],
"env": {
"SLACK_USER_TOKEN": "xoxp-your-user-token-here",
"SLACK_WORKSPACE_URL": "https://your-workspace.slack.com"
}
}
}
}
ボットトークンを使用
ユーザートークンの代わりにボットトークンを使用する場合:
{
"mcpServers": {
"slack": {
"command": "uvx",
"args": ["slack-mcp-server-v2"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token-here",
"SLACK_WORKSPACE_URL": "https://your-workspace.slack.com"
}
}
}
}
注:ボットをチャンネルに招待してください:/invite @YourBotName
インストールを確認
Claude Code を再起動し、サーバーが実行されていることを確認します:
claude mcp list
有効な MCP サーバーの一覧に slack が表示されます。
利用可能なツール
このサーバーは、Slack とやり取りするための 7 つの MCP ツールを提供します:
📬 read_channel_messages
柔軟な期間指定で、任意の Slack チャンネルから最近のメッセージを取得します。
パラメーター:
| 名前 | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
channel_id | string | ✅ | - | Slack チャンネル ID(例:C1234567890) |
lookback_hours | number | ❌ | 24 | 現在から遡る時間数 |
limit | number | ❌ | 100 | 取得するメッセージの最大数(最大:1000) |
自然言語での例:
- 「過去 24 時間の #general チャンネルのメッセージを表示して」
- 「チャンネル C1234567890 の過去 48 時間分のメッセージを読んで」
- 「C070PDRHQS1 から最新の 50 件のメッセージを取得して」
戻り値: タイムスタンプ、ユーザーへのメンション、スレッド表示、リアクション、パーマリンクを含む、整形済みのメッセージです。
💬 read_thread_messages
親メッセージとすべての返信を含む、会話スレッド内のすべてのメッセージを読み取ります。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
channel_id | string | ✅ | スレッドが存在するチャンネル ID |
thread_ts | string | ✅ | スレッドのタイムスタンプ(親メッセージの ts フィールド) |
自然言語での例:
- 「チャンネル C1234567890 のタイムスタンプ 1699564800.123456 のスレッド全体を読んで」
- 「メッセージ ts 1699564800.123456 へのすべての返信を表示して」
戻り値: 親メッセージとすべての返信を含む完全なスレッドです。タイムスタンプとリアクション付きで整形されます。
📋 get_channel_info
Slack チャンネルの詳細なメタデータを取得します。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
channel_id | string | ✅ | Slack チャンネル ID |
自然言語での例:
- 「チャンネル C1234567890 の情報を取得して」
- 「#engineering チャンネルの詳細を表示して」
戻り値: チャンネル名、ID、作成日、メンバー数、プライバシー設定、トピック、目的です。
👤 get_user_info
任意の Slack ユーザーの詳細なプロフィール情報を検索します。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
user_id | string | ✅ | Slack ユーザー ID(例:U1234567) |
自然言語での例:
- 「ユーザー U1234567 の情報を取得して」
- 「@john.doe の詳細を表示して」
戻り値: ユーザーの本名、表示名、メールアドレス、役職、ステータス、タイムゾーン、管理者/ボットのフラグです。
📑 list_my_channels
チャンネルの種類を指定して、自分がメンバーになっているすべてのチャンネルを一覧表示します。
パラメーター:
| 名前 | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
types | string | ❌ | public_channel,private_channel | カンマ区切りのチャンネルタイプ |
対応しているタイプ:
public_channel- パブリックチャンネルprivate_channel- プライベートチャンネルmpim- グループダイレクトメッセージim- ダイレクトメッセージ
自然言語での例:
- 「自分のチャンネルをすべて一覧表示して」
- 「参加しているプライベートチャンネルをすべて表示して」
- 「自分の DM をすべて一覧表示して」
戻り値: チャンネル名、ID、メンバー数、プライバシー表示です。
🔍 search_my_conversations
自分がメンションされている、または関与しているすべての会話からメッセージを検索します。
パラメーター:
| 名前 | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
query | string | ✅ | - | 検索語 |
count | number | ❌ | 20 | 結果の数(最大:100) |
自然言語での例:
- 「自分の会話から『deployment』を検索して」
- 「過去 1 週間の『bug fix』に言及しているメッセージを探して」
- 「『Q4 planning』に関するメッセージを検索して」
戻り値: チャンネル名、ユーザー情報、タイムスタンプ、パーマリンクを含む、一致したメッセージです。
🔗 get_message_permalink
特定の Slack メッセージへの、恒久的に共有できるリンクを生成します。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
channel_id | string | ✅ | チャンネル ID |
message_ts | string | ✅ | メッセージのタイムスタンプ |
自然言語の例:
- 「チャンネル C1234567890 のメッセージ 1699564800.123456 のパーマリンクを取得して」
- 「このメッセージへのリンクを生成して」
戻り値: ワークスペースの URL が変更されても機能する恒久的な URL。
使用例
Claude Code で設定すると、自然言語を使って Slack ワークスペースを操作できます。以下にクエリの例を示します。
メッセージを読む
👤 "Show me the latest messages from #engineering"
🤖 [Claude fetches and displays recent messages with timestamps, users, and links]
👤 "What were the last 100 messages in the #product-updates channel from the past week?"
🤖 [Claude retrieves messages from the last 168 hours with limit of 100]
スレッドを追う
👤 "Read the full thread that starts at timestamp 1699564800.123456 in channel C1234567890"
🤖 [Claude displays the entire conversation thread with all replies]
探索と検索
👤 "List all channels I'm a member of"
🤖 [Claude shows all your public and private channels with member counts]
👤 "Search my Slack conversations for 'quarterly review'"
🤖 [Claude searches across all your messages and shows matches with context]
👤 "Find mentions of 'production deployment' in my conversations"
🤖 [Claude uses Slack search to find relevant messages]
コンテキストを取得する
👤 "Get info about channel C1234567890"
🤖 [Claude shows channel name, topic, member count, etc.]
👤 "Who is user U1234567?"
🤖 [Claude displays user profile with email, title, timezone]
👤 "Get me a permanent link to message 1699564800.123456 in #general"
🤖 [Claude generates a shareable permalink]
実用的なワークフロー
プロジェクトの状況を把握する:
👤 "Show me all messages from #project-alpha in the last 3 days"
重要な決定を見つける:
👤 "Search for messages about 'API migration decision'"
オンボーディングのコンテキストを把握する:
👤 "List all channels I'm in and show me the purpose of each"
チャンネル ID の確認方法
方法 1:Slack URL から確認する
チャンネルを開くと、URL は次のようになります。
https://your-workspace.slack.com/archives/C1234567890/p1234567890
/archives/ の後ろの部分がチャンネル ID です:C1234567890
方法 2:MCP サーバーを使用する
Claude に次のように尋ねます。
List all my channels
方法 3:Slack で右クリックする
- チャンネル名を右クリックします
- 「リンクをコピー」をクリックします
- URL からチャンネル ID を取り出します
要件
- Python:3.10 以降
- Slack ワークスペース:Slack アプリを作成および設定するための管理者アクセス権
- Claude Code:MCP に対応した最新バージョン
- オペレーティングシステム:macOS、Linux、または WSL を使用した Windows
トラブルシューティング
「Missing required scopes」エラー
Slack アプリに適切な OAuth スコープを設定する必要があります。
解決方法:
- https://api.slack.com/apps にアクセスし、アプリを選択します
- 「OAuth & Permissions」に移動します
- Authentication セクションに記載されている必須スコープをすべて追加したことを確認します
- アプリをワークスペースに再インストールします
- 新しいトークンをコピーします
「Channel not found」エラー
Bot トークンの場合:
# Invite the bot to the channel first
/invite @YourBotName
User トークンの場合:
- チャンネルのメンバーであることを確認します
- チャンネル ID が正しいことを確認します(「チャンネル ID の確認方法」セクションを参照)
「Not authenticated」エラー
設定を確認する:
# Verify token is set correctly (check ~/.claude.json)
cat ~/.claude.json | grep -A 5 "slack"
# Ensure no extra whitespace
echo "$SLACK_USER_TOKEN" | wc -c
よくある問題:
- トークンの有効期限が切れている、または取り消されている
- トークン文字列に余分な空白や改行がある
- トークンの種類が間違っている(user または bot)
- JSON 内でトークンが適切に引用符で囲まれていない
MCP サーバーが起動しない
サーバーが読み込まれていることを確認する:
# List all MCP servers
claude mcp list
# Check if slack server is running
claude mcp list | grep slack
ログでエラーを確認する:
# View recent MCP server logs
tail -f ~/.claude/debug/*.log
# Filter for slack-related errors
tail -f ~/.claude/debug/*.log | grep -i slack
よくある解決方法:
- Claude Code を完全に再起動します
~/.claude.jsonの構文が有効な JSON であることを確認します- Python のバージョンを確認します:
python --version(3.10 以降が必要です) - サーバーを手動でテストします:
python server.py(ソースからインストールした場合)
SSL 証明書エラー
企業プロキシ(Zscaler など)経由で接続している場合:
# Set SSL certificate environment variable
export SSL_CERT_FILE=/path/to/your/ca-bundle.pem
export REQUESTS_CA_BUNDLE=/path/to/your/ca-bundle.pem
# Then reinstall
pip install slack-mcp-server-v2
レート制限
Slack API にはレート制限があります。制限に達した場合:
read_channel_messagesのlimitパラメーターを減らしますlookback_hoursを増やして、取得するメッセージを減らします- 再試行する前に数分待ちます
レート制限の兆候:
Error: ratelimited
解決方法: サーバーはレート制限を自動的に処理しますが、待機が必要な場合があります。
セキュリティとプライバシー
トークンのセキュリティ
- トークンをバージョン管理にコミットしないでください -
.envファイルはデフォルトで gitignore に登録されています - 漏えいしたトークンは直ちに取り消してください(https://api.slack.com/apps)
- 本番環境では環境変数を使用し、トークンをハードコードしないでください
- セキュリティのベストプラクティスとして、トークンを定期的にローテーションしてください
データアクセス
User トークン:
- Slack で自分が閲覧できるすべての情報にアクセスできます
- 個人の権限を使用します
- 自分がメンバーになっているすべてのチャンネルを閲覧できます
- 個人利用に便利です
Bot トークン:
- bot が招待されているチャンネルに限定されます
- 個人の ID とは切り離されています
- チームや共有環境での利用に適しています
- より細かな制御が可能です
企業環境
企業環境で使用する場合:
- Slack アプリを作成する前に、IT/セキュリティチームに確認してください
- データ保持ポリシーとコンプライアンスポリシーに注意してください
- 監査証跡にはボットトークンの使用を検討してください
- SSL 証明書の設定が必要になる場合があります(トラブルシューティングを参照)
制限事項
- 読み取り専用:このサーバーはデータを読み取るだけで、メッセージの投稿やコンテンツの変更はできません
- レート制限:Slack の API レート制限(Tier 3:約50リクエスト/分)が適用されます
- トークンのスコープ:トークンに閲覧権限があるチャンネル/会話にのみアクセスできます
- メッセージ履歴:Slack ワークスペースのメッセージ保持ポリシーによって制限されます
貢献
貢献を歓迎します!以下の方法でご協力いただけます。
問題の報告
バグを見つけた場合や、機能のリクエストがある場合:
- https://github.com/stevenvo/slack-mcp-server/issues に既存の問題がないか確認してください
- 以下を含めて新しい問題を作成してください:
- 問題/機能の明確な説明
- 再現手順(バグの場合)
- 期待される動作と実際の動作
- ご利用の環境(Python のバージョン、OS、Claude Code のバージョン)
プルリクエスト
- リポジトリをフォークします
- 機能ブランチを作成します:
git checkout -b feature/amazing-feature - 変更を加えます
- 十分にテストします
- 明確なメッセージを付けてコミットします:
git commit -m "Add amazing feature" - フォークしたリポジトリにプッシュします:
git push origin feature/amazing-feature - プルリクエストを作成します
開発環境のセットアップ
# Clone your fork
git clone https://github.com/YOUR_USERNAME/slack-mcp-server.git
cd slack-mcp-server
# Install in development mode
pip install -e .
# Make changes and test
python server.py
変更履歴
v0.1.0 (2025-01-06)
- 初回リリース
- Slack の会話を読み取るための7つのコアツール
- ユーザートークンとボットトークンに対応
- PyPI と MCP レジストリに公開
- 包括的なドキュメント
ロードマップ
今後追加される可能性のある機能:
- Slack Enterprise Grid への対応
- ユーザーまたはリアクションによるメッセージのフィルタリング
- 会話をさまざまな形式でエクスポート
- Slack Connect チャンネルへの対応
- API 呼び出しを減らすためのキャッシュ
- リアルタイム更新のための Webhook 対応
ご提案は GitHub Issues までお寄せください!
関連プロジェクト
- Model Context Protocol - MCP の仕様
- MCP Registry - ほかの MCP サーバーを検索
- Slack SDK for Python - 基盤となるライブラリ
- Claude Code - MCP に対応した AI アシスタント
サポート
- ドキュメント:今ご覧のものです!
- 問題:https://github.com/stevenvo/slack-mcp-server/issues
- ディスカッション:https://github.com/stevenvo/slack-mcp-server/discussions
- Slack API ドキュメント:https://api.slack.com/docs
ライセンス
MIT License - 詳細は LICENSE ファイルをご覧ください。
Copyright (c) 2025 Steven Vo
MCP コミュニティのために ❤️ を込めて作成
役に立った場合は、GitHub でリポジトリに ⭐ を付けてください!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。