>100 Views
March 23, 26
スライド概要
Claude Code × Discord連携
Channelsセットアップと
ハマりポイント解決集
スマホからDMを送るだけでローカルのClaude Codeが動く
Claude Code × Discord連携 Channelsセットアップと ハマりポイント解決集 スマホからDMを送るだけでローカルのClaude Codeが動く @takish
やりたいこと • ターミナルに張り付かず、外出先からClaude Codeを操作したい • スマホからDMを送るだけでコード生成・ファイル操作 • Claude Code Channels(v2.1.80+、research preview)で実現
/remote-control vs Channels
従来のリモート操作との違い • /remote-control: ブラウザ経由でターミナルUIを直接操作 • → スマホの小さい画面ではつらい • Channels: Discord DMで自然言語の指示を送る • → ターミナル不要。手軽にタスクを投げられる • 同じセッションで両方を有効にすることも可能
Channelsのアーキテクチャ • 内部実装はMCP(Model Context Protocol)サーバー • claude /channel capabilityを持つMCPサーバーが仲介 • Discordからのメッセージを<channel>タグでコンテキストに注入 • Bunランタイムで動作、Claude Codeがサブプロセスとして管理 • 自分でサーバーを立てる必要なし
前提条件
セットアップ前の確認事項 • Claude Code v2.1.80 以上 • Bun ランタイム(brew install bun) • claude.ai ログイン必須(API key認証では使えない) • Team/Enterpriseは管理者によるChannels有効化が必要 • Discordアカウント + Developer Portalへのアクセス
セットアップ手順 全7ステップ
Step 1: Discord Botを作成する • Discord Developer Portalで「New Application」 • 「Bot」セクションでトークンを生成(Reset Token) • 重要: Message Content Intent を ON にする • OAuth2 > URL GeneratorでBot招待URLを生成 • Scopes: bot / Permissions: 6つ(View Channels等)
Step 2-3: プラグインのインストールと有効化 # セッション内で実行 /plugin install discord@claude-plugins-official # マーケットプレイスが古い場合 /plugin marketplace update claude-plugins-official # プラグインの有効化を確認 /reload-plugins # → skills > 0 と表示されれば成功 # → 0 skills なら --channels 付きで再起動
ハマりポイント 1: プラグインが認識されない • インストールしてもenabledPluginsに登録されないことがある • /reload-plugins で「0 skills」→ /discord:configure が失敗 • 「Unknown skill」エラーが出る • 解決策: セッションを終了し --channels フラグ付きで再起動
Step 4-5: Botトークン設定 → Channels起動 # Step 4: Botトークンを設定 /discord:configure <BOT_TOKEN> # → ~/.claude/channels/discord/.env に保存される # Step 5: Channels有効でセッションを起動 claude --channels plugin:discord@claude-plugins-official # ※ --channels はセッション単位の設定(毎回指定)
ハマりポイント 2: 「Unknown skill」エラー • /discord:configure 実行時に発生することがある • プラグインがenabledPluginsに正しく登録されていない • 解決策: Step 3と同じ • --channels フラグ付きでセッションを再起動してから再実行
Step 6-7: ペアリング → セキュリティ設定 • Discord で Bot に DM を送信(内容は何でもOK) • Bot がペアリングコードを返信 • /discord:access pair <pairing_code> で接続 • /discord:access policy allowlist で DM を制限 • → ペアリング済みユーザーだけがメッセージ送信可能に
セキュリティ上の注意 • Bot起動直後は誰でもDMを送れる状態 • → 起動後すぐにペアリング + allowlist設定を行う • allowlist未設定 = 全ユーザーがローカルClaude Codeを操作可能 • ファイルの読み書き・コマンド実行が可能になるリスク • Botの運用はDMベースを推奨(パブリックチャンネルは危険)
使えるMCPツール
Channels で使える MCP ツール ツール 説明 使いどころ reply メッセージ送信 基本の応答 react リアクション追加 処理中・完了の通知 edit_message 送信済みメッセージ編集 長い出力の段階的更新 fetch_messages メッセージ取得(最大100件) 過去の会話の参照 download_attachment ファイルダウンロード スマホ写真・スクショを渡す
実践的な運用Tips
alias と tmux で常時待機 # .zshrc に追加 alias claude-discord='claude --channels \ plugin:discord@claude-plugins-official' # tmux でバックグラウンド常時起動 tmux new-session -d -s claude-discord \ 'claude --channels plugin:discord@claude-plugins-official' # 朝PCを開いたら実行 → 外出先からいつでもDMで操作
複数リポジトリでの運用 • 1つのBotトークンにつき --channels セッションは1つだけ • 同じトークンで複数起動 → Gateway二重接続で片方が切断 • リポジトリ切替時は現在のセッションを終了してから再起動 • 他リポジトリは --channels なしの通常起動で併用可能
ハマりポイント 3: 「入力中...」が消える • Bot に DM → 「入力中...」が一瞬表示されて消える • エラーメッセージも出ない。返信も来ない • 原因: --channels フラグなしで起動している • MCPツール(送信側)はプラグインだけで動くが • チャンネル通知(受信側)は --channels フラグが必須
まとめ: 3つのポイント • ① 困ったら --channels フラグ付きで再起動 • プラグイン認識も「入力中が消える」もこれで解決 • ② allowlist 設定を忘れずに • デフォルトは誰でもDM可能。起動後すぐに設定 • ③ 1 Bot トークンにつき --channels セッションは1つ • 複数起動するとGatewayが競合する
Thank you! Zennでも公開しています https://zenn.dev/takish/articles/channels-setup https://zenn.dev/takish/articles/channels-setup