🔔

Claude code × Slack MCP で学ぶ全エージェント共通の通知基盤

に公開

はじめに

こんにちは!株式会社 ispec で EM をしている shinya です。

Zennの最近のトレンドは Claude Code 一色になってきており、私も例に漏れず Claude Code の使い方、特に通知設定について書いていきます。

Claude Code を使っていると処理に長い時間がかかることがあると思うので、少し使い慣れ始めてきたら、通知の設定をしたくなるのではないかと思います。

通知の方法は様々あると思いますが、今回はSlack MCP を使って Claude code の通知を送る方法を紹介します。

この方法は Claude code だけはなく、cursor や つい先日リリースされた Gemini CLI など、すべての AI エージェントで使える方針だと思うので、「Claude じゃないけど、AI エージェントを使ってるよ!」という方も、ぜひ参考にしていただけたら嬉しいです。

AIエージェント通知設定の課題

「Claude Code 通知」みたいなキーワードで検索すると、通知設定に関する記事はたくさん出てきます。

また、Claude Code 公式で通知機能は提供されており、以下のコマンドでターミナルベル通知を設定できると公式ドキュメントに記載されています。

claude config set --global preferredNotifChannel terminal_bell

しかし、このコマンドを実行しても利用しているターミナルごとに別途設定が必要だったりするんですよね...

https://zenn.dev/milmed/articles/03f7f0c2c4e594

https://dev.classmethod.jp/articles/claudecode-notify-waiting-user-input-wezterm/

さらに音を鳴らすだけだと、並列でClaudeCodeを動かしている時にどのプロセスが終了したか分かりづらかったり、ちょっと席を外した際に通知を見逃し・聴き逃したりしてしまっていました。

そこで普段通知に使っているサービスである Slack に通知を飛ばしてしまえば、通知は溜まるし任意のメッセージ形式で通知できるのでは...?と思いたち導入を決意しました。

導入方法

方法は簡単で大きく次の3ステップです。

  1. 通知用の Slack アプリを用意する
  2. Claude Code に Slack MCP を連携させる
  3. global の CLAUDE.md に通知プロンプトを追加する

以下で順に詳細を書いていきます。

1. 通知用の Slack アプリを用意する

まず Slack のどのチャンネルで通知をさせるかを決める必要があります。

この際に自分のプライベートgmailで新規で Slack のワークスペースを作っておくと、複数のプロジェクトに所属していても、通知が一箇所にまとまってシンプルになるのでオススメです。

大枠の Slack アプリの作成は特に変わったことをする必要はないので、他記事を参照していただければと思っていて、今回のアプリに必要な scope だけまとめておきます。

必要となるBot Token Scope

- channels:history
- channels:read
- chat:write
- reactions:write
- users.profile:read
- users:read

(また、この際にアプリアイコンに Claude のアイコンを公式感が出て愛着が湧きます。ウニみたいですよね。)

2. Claude Code に Slack MCP を連携させる

Claude Code はMCPで様々なツールと連携させることができます。
公式ドキュメントにまとまっている通り様々な方法で連携をさせることができるのですが、個人的には json で追加するのが楽でした。

MCP 連携を行う際に以下3つの情報が必要になるので、先ほど登録したアプリに紐づく情報を取得してきましょう。

  • SLACK_BOT_TOKEN
  • SLACK_TEAM_ID
  • SLACK_CHANNEL_IDS

上記値が取得できたら、こちらの Slack MCP に次のコマンドで登録できるかと思います。

claude mcp add-json slack-mcp-server \
  -s user \
  '{
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-slack"],
    "env": {
      "SLACK_BOT_TOKEN": "{YOUR_SLACK_BOT_TOKEN}",
      "SLACK_TEAM_ID": "{YOUR_SLACK_TEAM_ID}",
      "SLACK_CHANNEL_IDS": "{YOUR_SLACK_CHANNEL_IDS}"
    }
  }'

登録が完了したら、Claude Code を起動させて「SlackにHelloメッセージを送って」のような形でメッセージが届いたら連携完了です!

3. global の CLAUDE.md に通知プロンプトを追加する

CLAUDE.mdは/initコマンドによりプロジェクト内に配置する使い方が多いと思うのですが、~/.claude/CLAUDE.mdファイルに記載することで、全プロジェクト共通の設定を書くことができます。(公式

そこで次のようなプロンプトを用意すると、Claude Code のタスク完了後に Slack に通知をしてくれるようになります。

# 必ず守って欲しいこと

全てのタスクが完了したら slack へ以下の形式でメッセージを送信する。

レポジトリ:{repository_name}
ブランチ:{branch_name}
作業時間:{working_time}

指示
{instructions}

作業内容
{result_summary}

ここのプロンプトはみなさんの用途に合わせてカスタマイズしてもらえたらと思いますが、レポジトリとブランチを最初に表示させることで、通知を見るだけで「どの作業が完了したのか」がパッと分かりやすくしていたりします。

まとめと今後の展望

ということで、今回は Claude Code × Slack MCP を使った通知設定の方法を紹介しました。

通知の設定って環境やツールごとにバラバラになりがちですが、Slack に統一してしまえば、
どの AI エージェントを使っていても同じ体験を再現できるのがいいところです。
(実際に試せてはいないですが、例えば cursor の場合だとユーザーレベルの cursor rules に同じように設定すれば slack 通知ができるはず)

今は作業完了後に通知をさせているだけですが、実際に使っていると「なかなか処理が終わらないな...と思ったら、特定のコマンドを実行するためのユーザー承認待ちのステータスだった」なんてこともあると思うので、ユーザー承認が必要になったら Slack 通知させる、なんて出来るとより快適な Claude Code 生活ができるのではと企んでいます。

おわりに:採用情報

ispec では更なる事業拡大を見据え、エンジニア職にて新しいメンバーを募集しています。
採用サイトでは各求人の詳細だけでなく、ispec で大切にしている価値観や、メンバーの紹介記事も掲載しております。

  • 技術へのこだわりやプロダクト愛を活かして働きたい
  • フルリモート、フルフレックス下で最大限のバリューを発揮したい
  • 心理的安全性の高い環境の中、チームで成果をあげてみたい

そんな思いを持った方がいらっしゃいましたら、ぜひ一度カジュアルにお話ができたらと思います。

ispec inc.

Discussion