📝 はじめに
Slack MCPを活用すると、CursorやClaude DesktopなどのAIエージェントから
Slackにアクセスできるようになる…という夢?のような期待を抱いて、はや1ヶ月ほど。
自社メディアサイトを扱う所属企業でSlackを使っていますが、長年いろいろなチャンネルに
やりとりが積み重ねられ、分散しており、
「このトピックについて、どこで話していたっけ?」
「この改修って、数年前にバグ報告されていた件が関係するみたいだけど、どこに履歴あるかな?」
などなど、けっこうSlack履歴検索には不自由している感じがありました。
Slack AIを契約?できれば解決できそうだけれど、会社に頼んでもなかなか反応がよろしくない…。
そんな中で出合った好都合なニュースに浮足立ちつつ、
試してみて得られた「ここがイマイチ」「ここはいいかも?」を、せっかくなので残しておこうと思います。
💡 MCPとは? 基本的な導入方法は?
ーーといったことについては、すでに公開されているわかりやすい記事にゆずります。
🔌 ナレッジ1: 複数ワークスペースに接続してみた
(理想のイメージ)
企業で使っていると、さまざまな理由で複数ワークスペースに所属することになりますよね。
グループ会社のワークスペースに入っている、とか、客先のワークスペースに入っている、とか。
Slack MCPで、複数ワークスペースの設定を設けて、いつでも切り替えられるようにしたい。
一般的に紹介されているSlack MCP接続方法は、単一ワークスペースのケースが多い印象。
私が試したときはあまりナレッジが転がっていなかったので、試してみた感じです。
結論
今のところ「うまくいかない」です。
複数設定して、CursorでもClaude DesktopでもMCP設定画面にて複数認識されているように見えるのですが、、
いざ「それぞれのワークスペースに接続できるか試して」とお願いしてみると
どちらか一方のワークスペースにしか接続できない、といった不安定な挙動をみせました。
やってみたこと
接続したい各ワークスペースでSlack botを作成しました。
そしてAIエージェント(CursorやClaude Desktop)のMCP設定用JSONファイルには、
ワークスペースごとに異なる設定を記述しました。
ネームスペースが同じだとさすがにAIが混乱するかと思い、差異をつけました。
▼具体的な設定例:
- slack-workspace-a(slack-workspace-b):ネームスペース。任意の名前でOK
- SLACK_BOT_TOKEN:各ワークスペースで設定したbotのトークン
- SLACK_TEAM_ID:下記記載は例。上記接続方法記事で紹介されている、ワークスペースごとのID。
{
"mcpServers": {
"slack-workspace-a": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-example-token-123456",
"SLACK_TEAM_ID": "T12ABCDE3"
}
},
"slack-workspace-b": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-example-token-789012",
"SLACK_TEAM_ID": "T45FGHIJ6"
}
}
}
}
結論のとおり、AIエージェントは双方のワークスペースへの接続を試みようとはしてくれますが
どうしても一方のみ接続となります。
試しにチャット自体を分けて、それぞれ一つずつのワークスペースへ接続を試みましたが
んーーイマイチうまくいかず。
ClaudeではワークスペースAのほう、CursorではワークスペースBのほうのみに接続するという
これまた「?」な挙動もありつつ、でした。。
可能性
Claudeも上記で言っているように、MCPサーバにパラメータを渡せるようになれば、いけるかもですね。
ただ、そのためには非公式のMCPを探すか、自作する必要がありそうですね。
これについては、一旦ここまでとします。
小ネタ:Slack MCPのJSON設定の管理について
複数ワークスペースへの接続が必要でも、JSONには一つずつの記述にする必要がありそうなので、
現状、JSONファイルはgit管理などができないこともあり、以下のような工夫が有効です:
※Cursorの例。Claude Desktopも同様。
-
/Users/ユーザー名/.cursor/mcp.json.bak
などにバックアップファイルを保存 - 接続したいワークスペースが変わるたびに、設定を切り替え
(ワークスペースAのほうに接続したいとき。BにしたいときはBだけの記述に手動で更新することになる。)
{
"mcpServers": {
"slack-workspace-a": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-example-token-123456",
"SLACK_TEAM_ID": "T12ABCDE3"
}
}
}
}
🧩 ナレッジ2: Slack MCPの現状の使い心地 - プライベートチャンネルへのアクセスにはbotの招待が一つひとつ必要…
多くの企業ではプライベートチャンネルを活用しているのでは。
案件や意味合いごとにプライベートチャンネルを乱立させ、必要なメンバースコープにのっとって招待する、
といったふうに。
個人的にもっとも期待していたのはSlack AIが不要になるほどの検索力、
つまり「全チャンネルを横断した強力なグレップ検索」でしたが
残念ながら実際に使ってみると、プライベートチャンネルごとにbotを招待しないかぎり
アクセスできないことがわかりました。
Slack MCPはSlack APIの拡張でしかないため、当然と言えば当然ですね。。
プライベートチャンネルへのSlack botの招待方法
プライベートチャンネルのメッセージ欄で以下のコマンドを実行→アプリを追加する→アプリ一覧で該当アプリを選択:
または以下のコマンド実行
/slack @ボット名
ナレッジ3: 局所的な使い方に役立った!
社内のとあるメンバーから、
「Difyを使って社内ナレッジのチャットボットをつくりたいんだけど、関連するやりとりや問い合わせが6つくらいのチャンネルに散らばっていて、いちいち検索して集めるのが大変。Slack MCPでなんとかならないか?」
という相談を受けました。
これについてはすべてのチャンネルにbotを追加していけば
あとはMCPを通してAIエージェントから関連情報を集めることが、無事にできました。
とくになにがよいかというと、Cursorから実行できると、
そのままマークダウン形式などでまとめてもくれ、
それをそのままDifyのナレッジベースに渡すだけ、ということが実現できたことです。
少し苦労してSlack MCP導入を試してみてよかったです。
Slack MCPの現状の強みと限界を考慮すると、以下のような使い方が効果的ですね:
-
特定プロジェクトの情報検索
- プロジェクト専用チャンネルの過去の議論を参照
- 決定事項や進捗状況の確認
-
チーム内ナレッジの活用
- チームチャンネル内の技術的な議論の参照
- トラブルシューティング履歴の検索
使い方のコツ
質問するときは具体的なチャンネルIDや期間を指定すると、より正確な情報が得られます。
例:「チャンネルCID82cnyr94の先週のAPI設計に関する議論をまとめて」
※チャンネルIDの取得方法は、チャンネルの詳細やメッセージのリンクから取得できるみたいです。
https:[ドメイン]/archives/[チャンネルID]/[メッセージID]
📚 まとめ
Slack MCPはAIエージェントとSlackを連携させる強力なツールですが、まだまだ制約が少なくないので、
使いこなすにはいくつかのコツが必要ですね。
複数ワークスペースへの接続や、プライベートチャンネルへのアクセス方法を理解することで、
より効果的に活用できるかなと思いました。