更新日:
SlackのMCPを使い、AIと連携させよう

SlackのMPCサーバーと使うとSlack内の情報に生成AIがアクセスすることができるよ!
この記事ではSlackのMCPサーバーを使い、生成AIがSlackのチャンネルに投稿したり、投稿した内容を読み取れるようにする方法を詳しく解説します。
MCPとは
MCPとは「Model Context Protocol」の略で、生成AIが他のサービスと連携するための共通のルールです。
詳しくはこちらの記事を参照してください。
SlackのMCPサーバーとは
SlackのMCPサーバーはSlackとClaudeなどの生成AIを簡単に連携させるためのMCPサーバーです。これを使うと生成AIから以下のようなことをすることができます。
- チャンネルにメッセージを投稿する
- チャンネルに投稿されたメッセージを確認する
- メッセージにリアクションをする
- 投稿されたメッセージの検索
MCPサーバーのインストール
まずは以下のコマンドでSlackのMCPサーバーをインストールしましょう。
1
npm install -g @modelcontextprotocol/server-slack
Slack側の設定
次にSlackの設定を行います。Slackアカウントを持っていない方はこちらのページから作成してください。
アカウントをお持ちの方はSlack APIページにアクセスします。
そして「Create an App」をクリックします。
次に「From scratch」をクリックします。
次に表示される画面で、「App Name」には任意の名前を、「pick a workspace to develop your app in」は連携させたいワークスペースを選びましょう。その後、「Create App」をクリックします。
すると以下の画面が表示されるので、左メニューの「OAuth & Permissions」をクリックします。
次に、「Scopes」の「Bot Token Scopes」で以下の必要な権限を追加します。追加をするには「Add OAuth Scope」をクリックします。
scope | 役割 |
---|---|
channels:history | パブリックチャンネルのメッセージやその他のコンテンツを閲覧する |
channels:read | 基本的なチャンネル情報を表示する |
chat:write | アプリとしてメッセージを送信 |
reactions:write | メッセージに絵文字リアクションを追加する |
users.profile:read | ユーザーとその基本情報を表示する |
users:read | ユーザーの詳細なプロフィールを表示する |
左メニューの「Install App」をクリックし、遷移したページの「Install to ワークスペース名」をクリックします。
すると「Bot User OAuth Token」が表示されるので、コピーして保存しておきます。
これでSlack側の準備は完了です。
Claude Desktopの設定
次にClaude Desktop側の設定を行います。
こちらの記事を参考に、前提準備を行います。
Claude Desktopをインストールし、設定ファイル(claude_desktop_config.json
)が開けていれば準備完了です。
設定ファイルを記述しよう
claude_desktop_config.json
に、以下のコードを記述します。ハイライトされている行のみ、自分のものに変更します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"mcpServers": {
"slack": {
"command": "which nodeで表示されるパス",
"args": [
"--experimental-modules",
"npm root -gで表示されるパス/@modelcontextprotocol/server-slack/dist/index.js",
"--token",
"取得したBot User OAuth Token"
],
"env": {
"SLACK_BOT_TOKEN": "取得したBot User OAuth Token",
"SLACK_TEAM_ID": "ワークスペースのID"
}
}
}
}
command
の「which nodeで表示されるパス」はターミナルで以下のコマンドを実行し、表示されたパスを入れてください。
1
2
3
4
which node
# 例
/Users/ユーザー名/.nodebrew/current/bin/node
args
の「npm root -gで表示されるパス」の部分は以下のコマンドを実行し、表示されたパスを入れてください。
1
2
3
4
npm root -g
# 例
/Users/ユーザー名/.nodebrew/node/v20.18.0/lib/node_modules
上の例だと以下のようなコードになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"mcpServers": {
"slack": {
"command": "/Users/ユーザー名/.nodebrew/current/bin/node",
"args": [
"--experimental-modules",
"/Users/ユーザー名/.nodebrew/node/v20.18.0/lib/node_modules/@modelcontextprotocol/server-slack/dist/index.js",
"--token",
"取得したBot User OAuth Token"
],
"env": {
"SLACK_BOT_TOKEN": "取得したBot User OAuth Token",
"SLACK_TEAM_ID": "ワークスペースのID"
}
}
}
}
「取得したBot User OAuth Token」には先ほどSlackの設定で取得した「Bot User OAuth Token」を記述してください。「SLACK_TEAM_ID」にはワークスペースのIDを記述します。
ワークスペースのIDを確認するため、Slack ログイン画面にアクセスします。ワークスペースにサインインしていれば画面下の「開く」をクリックします。
するとSlackのアプリで開くかどうか確認のモーダルが表示されますが、「キャンセル」をクリックします。
「ブラウザでSlackを使用する」をクリックし、ブラウザでワークスペースを表示せましょう。
ブラウザのURLを見ると、client/
と/
の間にあるワークスペースのIDが確認できるので、このIDを「SLACK_TEAM_ID」に記述します。
最終的には以下のようなコードになります。ユーザー名は自分のユーザー名を記述してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"mcpServers": {
"slack": {
"command": "/Users/ユーザー名/.nodebrew/current/bin/node",
"args": [
"--experimental-modules",
"/Users/ユーザー名/.nodebrew/node/v20.18.0/lib/node_modules/@modelcontextprotocol/server-slack/dist/index.js",
"--token",
"xoxb-744960XXXXXXXX-1234521810675-XXXXXXuY5CnaSTjwHCgbxEJB"
],
"env": {
"SLACK_BOT_TOKEN": "xoxb-744960XXXXXXXX-1234521810675-XXXXXXuY5CnaSTjwHCgbxEJB",
"SLACK_TEAM_ID": "T07D7XXXXNRK"
}
}
}
}
これでClaude Desktopの設定は完了です。一度アプリを終了させ、再度起動してください。
起動後、「+」ボタン横のボタンをクリックし、Slackが表示されていれば連携完了です。
Slackに関して質問をするとClaudeがSlackに接続し、回答をしてくれます。その際、Slackにアクセスしても良いかを確認されるので、どちらかを「許可」しましょう。
特定のチャンネルに関して質問をすると以下のようにチャンネルに参加していないため答えられないという回答が返ってきます。
招待したいチャンネルのチャット欄に「/invite @」と入力し、以下のようにslack_mcp
のアプリを選択して招待しましょう。
すると招待されたチャンネルの内容を確認することができます。
確認だけでなく、投稿をすることもできます。
以下のように「あなた宛にメンションがついた投稿に返答してください」と入力すると、すべてのチャンネルを確認し、メンションがついた投稿内容を把握して返答をしてもらうこともできます。
このように投稿をしてくれました。
他にもチャンネルに招待されているユーザーの確認や、日時による検索などもできます。
とても便利な機能なので、ぜひ連携してみましょう。
この記事のまとめ
- MCPサーバーは生成AIとSlackを簡単に連携する仕組みです。
- チャンネルにAIを招待することが出来ます。
- 招待されたチャンネル内で生成AIは投稿の内容を確認したり、投稿をすることが出来ます。
