はじめに
Claude Code で Slack の過去チャットを取得したいと思い、slack-explorer-mcp を導入することにしました。
しかし、実際に設定を始めてみると、
「MCP の設定ファイルをどこに書けばいいのか分からない」
「Docker コンテナがいつ起動して、いつ停止するのかが掴めない」
など、分からないことだらけ……。
試行錯誤を繰り返しながらなんとか設定を進めたので、同じように躓いている方の参考になるよう、この記事にまとめておきます。
なお、slack-explorer-mcp は、Slack User Token を利用して、Slack のメッセージやスレッドを取得することに特化した MCP サーバーです。
slack-explorer-mcpを選んだ背景などはこちらの記事で説明しています。↓
前提条件
- Docker Desktopがインストールされていること
- Claude Codeがインストールされていること
- Slack User Token(xoxp-で始まるトークン)を取得済みであること
Slack User Tokenの取得方法については、slack-explorer-mcpの公式READMEを参照してください。
導入手順
この記事では、私が実際に試して動作した手順を記載しています。詳細な設定方法や最新の情報は公式READMEの日本語版を参照してください。
1. MCPサーバーの追加
以下のコマンドを実行して、slack-explorer-mcpをClaude Codeに追加します。
claude mcp add slack-explorer-mcp -- docker run -i --rm --pull always \
-e SLACK_USER_TOKEN=xoxp-your-token-here \
ghcr.io/shibayu36/slack-explorer-mcp:latest
コマンドの各部分の説明
私も最初は何をやっているのか全然わからなかったので、コマンドの各部分を調べてみました。
-
claude mcp add slack-explorer-mcp:slack-explorer-mcpという名前でMCPサーバーを追加 -
-s project: プロジェクトスコープで追加(プロジェクト内でのみ利用可能)。グローバルスコープで追加する場合は-s userを指定 -
--: Claude CLIのオプションとMCPサーバーのコマンドを分離する記号 -
docker run: Dockerコンテナを起動 -
-i: インタラクティブモード(標準入力を開いたまま) -
--rm: コンテナ停止時に自動削除 -
--pull always: 常に最新イメージを取得 -
-e SLACK_USER_TOKEN=...: 環境変数としてSlack User Tokenを渡す -
ghcr.io/shibayu36/slack-explorer-mcp:latest: GitHubコンテナレジストリから最新のイメージを使用
2. 設定ファイルの確認
コマンドを実行すると、プロジェクト直下の.mcp.jsonファイルに設定が自動的に追加されます。もし自動で追加されない場合は、手動で.mcp.jsonファイルを作成・編集してください。
{
"mcpServers": {
"slack-explorer-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--pull",
"always",
"-e",
"SLACK_USER_TOKEN=xoxp-your-token-here",
"ghcr.io/shibayu36/slack-explorer-mcp:latest"
]
}
}
}
この設定により、Claude CodeがDockerコンテナとしてslack-explorer-mcpを起動できるようになります。
.claude/settings.local.jsonファイルには、ツールの実行権限などが書かれます。たとえば、Claude Codeがslack-explorer-mcpのsearch_messages、get_user_profiles、get_thread_repliesなどのツールを使用する際に許可を求められ、承認すると以下のように追加されていきます。
{
"permissions": {
"allow": [
"mcp__slack-explorer-mcp__search_messages",
"mcp__slack-explorer-mcp__get_user_profiles",
"mcp__slack-explorer-mcp__get_thread_replies",
]
},
"enableAllProjectMcpServers": true,
"enabledMcpjsonServers": [
"slack-explorer-mcp"
]
}
MCP設定は.mcp.jsonに記載されます。
Dockerコンテナのライフサイクル
最初、Dockerコンテナがずっと起動しているのかと思っていたのですが、実際に動作確認してみると以下のような動作になっていました。
動作の流れ
「1. MCPサーバーの追加」の設定方法でslack-explorer-mcpに追加した場合、Dockerは以下のような流れで動作します。
実際に確認してみた結果
docker psコマンドで動作を確認できます。
実行中
docker ps
# slack-explorer-mcpのコンテナが表示される
# 複数のClaude Codeタスクを同時実行していると、複数のコンテナが起動している
タスク完了後
docker ps
# コンテナは停止・削除されており、表示されない
つまり、MCPサーバーは以下のライフサイクルで動作します。
- 起動: Claude Codeでslack-explorer-mcpを使用するツールを呼び出したとき、Dockerコンテナが起動
- 実行: Claude CodeとMCPサーバー間で通信が行われ、Slackからデータを取得
-
停止: Claude Codeのセッションが終了すると、
--rmオプションによりDockerコンテナが自動的に停止・削除
この仕組みにより、システムリソースを効率的に使用できるようになっています。
Claude Code内で以下のコマンドを実行すると、登録されているMCPサーバーの一覧が確認できます。
claude mcp list
または、Claude Code内で以下のように実行することもできます。
/mcp
MCPサーバーの一覧確認
Claude Code内で以下のコマンドを実行すると、登録されているMCPサーバーの一覧が確認できます。
claude mcp list
または、Claude Code内で以下のように実行することもできます。
/mcp
トラブルシューティング
私が遭遇したトラブルと解決方法を記載しておきます。
設定を間違えた場合
MCPサーバーを削除するには、以下のコマンドを実行します。
claude mcp remove slack-explorer-mcp
削除後、正しい設定で再度claude mcp addコマンドを実行してください。
Dockerコンテナが残っている場合
通常、--rmオプションにより、コンテナは自動的に削除されます。もし手動で削除する必要がある場合は、以下を実行してください。
docker ps -a # すべてのコンテナを表示
docker rm <container_id> # 特定のコンテナを削除
使用例
実際にClaude Codeで以下のようなプロンプトを送ってみました。
generalチャンネルの内容を要約して!
slack-explorer-mcpを通じてSlackのメッセージを検索・取得し、結果をまとめて返してくれます。
まとめ
最初は設定に戸惑いましたが、正しく設定できればslack-explorer-mcpはとても便利なツールだなぁと思いました。Claude CodeからSlackの過去の議論を簡単に検索・分析できるようになります。
この記事が同じように困っている方の参考になれば幸いです。間違いや改善点があれば、コメントで教えていただけると助かります。