claude-slack-channel
Relays Slack direct messages to a local Claude Code session via Socket Mode, allowing users to chat with their session entirely from Slack. Provides tools for replying in threads (reply), adding reactions (react), and editing messages (edit_message), and supports approving or denying tool permission requests (e.g. file writes) through Slack buttons or 'yes xxxxx' / 'no xxxxx' replies.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@claude-slack-channelstart relaying my Slack DMs to the local Claude Code session"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
claude-slack-channel
Slack のメッセージを、手元の PC で動いている Claude Code のセッションに中継する MCP channel サーバー(以下、ブリッジ)。 Claude の返信やリアクションを受け取るのも、実行許可に答えるのも、Slack の中で済む。Windows 専用。
初めて使うときは、「必要なもの」から「起動」までを順に進めれば動かせる。その先は、必要になったときに ドキュメント の該当するファイルを開く。動かないときは トラブルシューティング を見る。
概要
Slack (DM / 許可したチャンネル)
│ Socket Mode(サーバー側から WebSocket を張るので、ポート開放やトンネルは不要)
▼
claude-slack-channel(dist/src/main.js。node で動く)
│ MCP(標準入出力、experimental の channels 機能)
▼
Claude Code(claude.exe、手元のセッション)許可したユーザーからの DM と、指定したチャンネルでボットにメンションした発言が、Claude のセッションにそのまま届く。
Claude は
reply/react/edit_messageの3つのツールで Slack に返信する。.envにDOWNLOAD_DIRを書けば、添付を保存するdownload_fileも使える。ファイルの書き込みなどの実行許可には、Slack のボタンか
yes xxxxx/no xxxxxの返信で答える。起動スクリプトは PowerShell で書いてある。
Related MCP server: Claude Code Slack Channel
必要なもの
Windows と Windows Terminal。VS Code の統合ターミナルは、動作を確かめていないので対象外。
Node.js 22.12 以上。Claude Code が
nodeコマンドでこのサーバーを起動するので、nodeとnpmに PATH を通しておく。Claude Code。channels 機能と、channel 経由の実行許可の確認に対応した版が要る(最低バージョンは確かめていない)。
claude.exeは次の順に探す。PATH 上の
claudeVS Code 拡張に同梱の
%USERPROFILE%\.vscode\extensions\anthropic.claude-code-<版>-win32-x64\resources\native-binary\claude.exe(複数あればバージョン番号が最大のもの)
Claude のサブスクリプション(必要なプランは確かめていない)。
Slack ワークスペースの管理権限。アプリのインストールに要る。
セットアップ
0. clone してビルドする
git clone https://github.com/elys0912/claude-slack-channel.git
cd claude-slack-channel
npm install
npm run build1. Slack アプリを作る
api.slack.com/apps で次の順に操作する。
Create New App → From an app manifest でワークスペースを選び、slack-app-manifest.yaml の中身を貼り付けて作る。 DM とチャンネルに対応し、Socket Mode が有効で、次の表の8つのスコープを持つアプリになる。
Basic Information → App-Level Tokens → Generate Token and Scopes で、スコープ
connections:writeのトークンを発行する。 このxapp-で始まるトークンがSLACK_APP_TOKENになる。OAuth & Permissions → Install to Workspace でインストールする。 発行される
xoxb-で始まるトークンがSLACK_BOT_TOKENになる。 Scopes に次の8つがあるか確かめる。添付を保存しない(.envにDOWNLOAD_DIRを書かない)なら、files:readは外して7つにしてよい。files:readがあると、ボットトークンが漏れたときにワークスペースのファイルまで読まれうる。スコープを足した・外したら、Reinstall to Workspace で入れ直す。スコープ
用途
chat:write返信と実行許可のメッセージの投稿
im:historyDM(
message.im)の受信im:write許可ユーザーとの DM を開く(
conversations.open)channels:history公開チャンネル(
message.channels)の受信groups:history非公開チャンネル(
message.groups)の受信reactions:write受信と判定のリアクション
users:readnpm run checkで表示名を確かめるfiles:readdownload_fileで添付を保存する(.envにDOWNLOAD_DIRを書くときだけ)Slack で自分のプロフィールを開き、その他 → メンバーIDをコピー で自分のユーザー ID(
Uで始まる)を控える。
2. .env と access.json を作る
トークンと許可リストは、状態ディレクトリ(既定は %USERPROFILE%\.claude\channels\slack。ブリッジの設定・ログ・ロックを置く場所)に置く。
次の2つのファイルをメモ帳で作り、BOM なしの UTF-8(メモ帳の「UTF-8」)で保存する。BOM 付きでも読めるが、勧めない。
場所を変えたいときは 環境変数 を参照。
.env(ひな形: config/env.example):
SLACK_BOT_TOKEN=xoxb-...
SLACK_APP_TOKEN=xapp-...
# 任意。書くと download_file ツールが使える(絶対パス)
# DOWNLOAD_DIR=C:\Users\<ユーザー名>\Downloads書式は KEY=VALUE。export の接頭辞、"..." / '...' の引用符、CRLF の改行も使える。# で始まる行はコメントになる。
値の後ろにもコメントを書ける。コメントとして無視されるのは、次の部分。
引用符なしの値: 空白に続く
#以降。a#bのように前に空白の無い#は、値の一部になる。引用符付きの値: 閉じ引用符より後ろの
#以降。
access.json(ひな形: config/access.example.json):
{
"teamId": "T00000000",
"allowFrom": ["U00000000"],
"channels": ["C00000000"]
}teamId: ワークスペースの ID(Tで始まる)。次のnpm run checkで確かめられる。allowFrom: DM を受け付けるユーザー ID(Uで始まる)。1件以上書き、重複は許さない。ここに無い相手からの DM とボタン操作は無視する。channels(省略可): DM のほかに使うチャンネルの ID(Cで始まる。古い非公開チャンネルはG)。重複は許さない。 ID はチャンネル名を右クリック → リンクをコピー で得られる URL の末尾にある。使う前に、そのチャンネルで/invite @<ボット名>としてボットを招待しておく。 チャンネルで Claude に届くのは、ボットへのメンション(@<ボット名>)付きの発言と、ボットが関わっているスレッドへの返信だけ。詳しくは メッセージ を参照。
この2つは Claude に作らせず、手で作る。トークンと許可リストそのものなので、Claude に扱わせるとログや会話履歴に混ざる経路が増える。起動スクリプトも、ファイルがあるかを確かめるだけで中身は読まない。
3. 疎通を確かめる
npm run checkビルド(precheck)のあと、次を表示する。トークンそのものは出さず、xoxb-*** のように接頭辞だけを出す。
状態ディレクトリの場所
ワークスペース名・
team_id・ボットのユーザー IDApp-Level Token(
SLACK_APP_TOKEN)で Socket Mode の接続の URL を取れるか(接続はしない)access.jsonのteamIdが実際のteam_idと違うときの警告allowFromに書いた ID の表示名
access.json がまだ無いか読めないときは、その旨を表示して先へ進む。teamId の突き合わせと表示名の確認だけを省く。
4. 起動するプロジェクトを登録する
config/projects.example.json を config\projects.json にコピーし、Claude Code を起動したいプロジェクトを並べる。projects.json は git の管理外。
{
"projects": [
{ "name": "my-app", "path": "C:\\path\\to\\my-app" }
]
}起動
Windows Terminal から実行する。
コマンド | 動作 |
|
|
|
|
| パスで直接指定して起動する |
| 実行許可のモードを変える(権限の設計) |
| 起動せずに、実行するコマンドラインだけを表示する。ビルドは省き、 |
| 別の Slack アプリと設定で、もう1つのセッションを起動する(セッションを並べる) |
起動すると experimental channels の警告ダイアログが出る。起動スクリプトが画面を見張って、「1」(I am using this for local development) を自動で選ぶ。90秒たってもダイアログが残っていたら、手で「1」を選ぶ。
distが無いときだけ自動でビルドする。git pullで更新したら、古いdistのまま起動しないよう、npm run buildを手で実行する。起動したら、Slack でボットに DM を送るか、
channelsに書いたチャンネルでボットにメンションして話しかける。
使い方の要点
詳しい挙動は docs/usage.md にまとめてある。
ボットに話しかけるとメッセージが手元のセッションに届き、届いた印に :eyes: が付く。Claude は元のメッセージのスレッドに返信する。
Slack 側の会話はすべて1つのセッションの同じ文脈を共有する。
添付ファイルの中身は渡さない。Claude に届くのはファイル名・種類・サイズの要約とファイル ID だけで、中身が要るときは Claude が
download_fileで取りに行く。許可リストに無い操作を Claude が実行しようとすると、スレッドに確認のメッセージが届く。Allow / Deny のボタンか
yes xxxxx/no xxxxxの返信で答える。30分答えなければ自動で拒否する。確認のメッセージの ♾ 今後も許可 を押すと、同じ種類の操作を次回の起動から確認なしで通せる。ボタンが出るのは、ファイルの中身を読み書きしないシェルのコマンドなど、決まった一覧に当てはまる操作だけ(docs/security.md)。
5分たっても Claude から何も返ってこないと、スレッドに警告が出る。
/で始まる文は Slack のコマンドとして扱われ、Claude Code には届かない。代わりに!で始まる次のコマンドを使う。これらは Claude に渡さず、ブリッジ自身が処理する。
コマンド | 動作 |
| コマンドの一覧を返す |
| ブリッジの状態(接続、返事待ち、回答待ちの実行許可、直近の hook)を返す |
| ターミナルの画面を見る。選択画面なら、ボタンで選択肢を選べる |
| 「今後も許可」で足したルールを一覧し、ボタンで消せる |
|
|
|
|
|
|
| Claude Code を強制終了してから再起動する(応答しないとき用) |
| 「このセッション中は全部許可」を解除する(有効にしたボットだけ) |
Claude Code 側の出来事(使用量の上限、ターミナル側の入力待ち、セッションの開始と終了など)は、hook を通して Slack に通知する。
セキュリティの要点
Slack から手元の PC を操作する以上、何をどこまで許すかが一番の注意点になる。詳しくは docs/security.md を参照。
送信者は Slack のユーザー ID(
allowFrom)とワークスペース ID(teamId)で判定する。表示名やメールアドレスは使わない。Slack のセッションは、ユーザー設定(
~/.claude/settings.json)を読まない設定で起動する。普段使いのために入れた緩い許可を、Slack からの指示に効かせないため。権限は config/channel-settings.json で絞る。主に次のリスクが残る(すべては 残るリスク にある)。
許可ユーザーの Slack アカウントが乗っ取られると、手元の Claude をそのまま操作される。
確認で許可した操作は、その内容どおりに実行される。確認の中身はよく読む。
Slack のメッセージ・リポジトリの中身・Web ページに仕込まれた指示(プロンプトインジェクション)を、Claude が実行しようとすることがある。最後の防御は確認での拒否になる。
トークンが漏れたら、まず App-Level Token を Revoke する。手順は トークンが漏れたとき にある。
ドキュメント
ファイル | 内容 |
各機能が Slack でどう動くかを知りたいとき(実行許可、今後も許可、画面の確認、再起動、hook の通知、セッションを並べる など) | |
Slack から実行できる範囲を変える前と、トークンが漏れたとき | |
期限や上限などの値、設定ファイルと環境変数を調べるとき。動かないときのトラブルシューティング | |
このリポジトリに手を入れるとき(コマンド、テスト、ファイル構成) |
ドキュメントで解決しないときは、GitHub の Issues に書いてほしい。
ライセンス
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted Slack MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Shared memory and mail for your AI agents. Verified with Claude Code; other MCP clients in testing.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server for Slack integration, allowing Claude to interact with your Slack workspace.20,636 npmMIT
- AlicenseAqualityDmaintenanceMCP server that connects Claude Code to Slack, allowing two-way communication via Slack Socket Mode without tunnels.1MIT
- FlicenseNot gradedqualityDmaintenanceLocal stdio MCP proxy for the official Slack MCP endpoint, using Claude's Slack plugin for authentication to enable Slack integration via MCP without needing a custom Slack app.-
- AlicenseAqualityAmaintenanceLocal MCP stdio bridge to Slack's hosted MCP server, enabling agents to use Slack tools (send messages, search, history, canvas, etc.) via local OAuth and token refresh.8508 npmMIT