公開日 更新日

claude-slack-channel

Slack の DM から手元の Claude Code に話しかけ、実行許可もボタンで返せる MCP サーバー

リポジトリ ↗

概要

Slack のメッセージを、手元の PC で動いている Claude Code のセッションへ中継する MCP channel サーバー。PC の前に行かなくても、Slack から話しかけて実行許可にも答えられる。Slack とは Socket Mode でつなぐので、ポートの開放は要らない。Windows 専用で、TypeScript で書き、MIT ライセンスで公開している。

できること

  • 許可したユーザーの DM と、指定したチャンネルでのメンションを Claude に届ける。Claude は reply・react・edit_message で Slack に返す
  • 実行許可の確認を Slack のボタンで返す。30 分答えなければ自動で拒否する
  • 5 分たっても Claude から反応が無ければ、スレッドに警告を出す
  • !screen・!status・!restart・!compact などのコマンドで、画面の確認や再起動をする

設計の判断

  • 迷ったら拒否に倒す。期限切れ、配信の失敗、終了時に保留中の確認は、すべて自動で拒否する
  • Slack のセッションはユーザー設定を読まずに起動し、専用の設定で権限を絞る。deny は常に allow より優先し、確認を飛ばすモードへの切り替えは設定で禁止した
  • 「今後も許可」で足せるルールは確認の中身から作り、破壊的な操作や deny に当たるものは作らない

つまずいた点

  • ターミナル側の選択画面は Slack に届かず、Slack からは止まったことに気付けなかった。無応答の警告と、画面を読んで選択肢をボタンで出す !screen を足した
  • Claude Code の中から起動すると子セッション扱いになり、返信のツールが使えなかった。親セッションの目印の環境変数を消して直した

技術

  • 言語:TypeScript(Node.js 22)
  • 主なライブラリ:MCP の TypeScript SDK、Slack の Socket Mode と Web API のクライアント
  • 起動スクリプト:PowerShell
  • テスト:Vitest

リンク

  • リポジトリ:GitHub
  • 関連記事:準備中