⏸ 未適用・承認待ち

Slack複数ワークスペース読み取り専用接続(2WS常設)— 設計レビュー

作成: 守(情シス) 2026-08-28 依頼元: アカミヤ
結論
公式Slack MCPは複数WS非対応 → korotovsky/slack-mcp-server の2インスタンス構成を推奨
読み取り専用は環境変数レベル+settings.jsonの二重ガードで担保。まだ何も適用していません。この内容でOKか判断をお願いします。
公式Slack MCP
1接続=1WSが実質仕様
Claude Code側の裏技
未文書化・不安定
korotovsky版 ×2インスタンス
読み取り専用・二重ガード

1比較:公式 vs korotovsky版

観点 案A:公式Slack MCP 案B:korotovsky版(2インスタンス)
複数WS対応 ✕ 実質不可
1接続=1WSが仕様。公式に複数WS対応の明記なし
◯ 構造的に成立
WSごとに別トークン・別名で2エントリ登録すれば動く
Claude Code側の壁 あり
同一サーバーを2エントリ登録するとURL重複排除で2つ目が無効化される(issue #32549)。回避策は未文書化の裏技
なし(別コマンド・別envの独立プロセスとして登録するだけ)
claude.aiコネクタの制限 issue #44243:1アカウント1WS限定。2026-04-06作成・2026-08-26更新時点でOPEN・未解決
読み取り専用の担保 OAuthスコープをsearch:read.*に絞れば可能 SLACK_MCP_ADD_MESSAGE_TOOL / SLACK_MCP_REACTION_TOOLを未設定のままにすれば書き込みツール自体が無効
規約リスク 低い(通常のOAuthフローに従う限り) 断定不可(複数WS同時読み取りを直接禁じる条項は見当たらないが、一次情報に明記なし)
安定性 低い:裏技依存で将来のアップデートで壊れる可能性ありと検証者本人が明記 :OSSでメンテ停滞気味(master最終更新2026-05-14)だが挙動は読める
既知の懸念 第三者セキュリティ監査issue(DM read→send chaining等)あり。書き込み機能を有効化しない前提なら実害なし

汎用インフラとして今後も使い続ける前提のため、裏技より挙動が読める 案B(korotovsky版) を採用します。

2ガードレール構成(二重ガード)

1段目

サーバー内で機能ごと無効化

2インスタンスとも、以下の環境変数を設定しない(未設定=既定nilで無効)。

SLACK_MCP_ADD_MESSAGE_TOOL SLACK_MCP_REACTION_TOOL

投稿・リアクションのツール自体がサーバー側に存在しない状態になる。

2段目

settings.jsonで明示deny

1段目が万一無効化された場合の保険として、8/19送信deny化と同じ枠組みでdeny層に追加。

conversations_add_message reactions_add reactions_remove
実際のツール名は導入後に確認が必要(詳細は差分案セクション参照)

トークン保護(新規の手当て)

korotovsky版はトークンを .env に平文保存する前提。以下を追加で手当てする:

3差分案(未適用)

⚠️ AIはsettings.jsonをWrite/Edit不可(自己防衛denyのため)。 承認後、minakoさんご本人に反映していただく必要があります。
~/.claude.json — mcpServers に追記
{
  "mcpServers": {
    "slack-cto-association": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "slack-mcp-server@latest"],
      "env": {
        "SLACK_MCP_XOXC_TOKEN": "(cto-associationのxoxcトークン)",
        "SLACK_MCP_XOXD_TOKEN": "(cto-associationのxoxdトークン)"
      }
    },
    "slack-ctoacommunity": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "slack-mcp-server@latest"],
      "env": {
        "SLACK_MCP_XOXC_TOKEN": "(ctoacommunityのxoxcトークン)",
        "SLACK_MCP_XOXD_TOKEN": "(ctoacommunityのxoxdトークン)"
      }
    }
  }
}

意図的に含めていない変数SLACK_MCP_ADD_MESSAGE_TOOL / SLACK_MCP_REACTION_TOOL(1段目のガード)

~/.claude/settings.json — permissions.deny に追記
"mcp__slack-cto-association__conversations_add_message",
"mcp__slack-cto-association__reactions_add",
"mcp__slack-cto-association__reactions_remove",
"mcp__slack-ctoacommunity__conversations_add_message",
"mcp__slack-ctoacommunity__reactions_add",
"mcp__slack-ctoacommunity__reactions_remove"
ツール名は仮。korotovsky/slack-mcp-serverの実装でこの通りの名前とは限らないため、接続後に実際のツール一覧で確認し、必要なら差し替えてから適用する。

見送った案(参考)

公式Slack MCPを.mcp.jsonに2エントリ登録する案は、Claude Code側のURL重複排除で2つ目が無効化される既知の壁があり、回避策は未文書化の裏技依存のため見送り。

4未確認事項(正直な申告)

  • ?korotovsky版で「2WS同時稼働」を明記した一次情報は見つかっていない。mcpServersの構造上成立するはずという推測に基づく設計であり、導入後の実地確認が必須
  • ?書き込み系ツールの実際のツール名は、実際に接続してツール一覧を取得するまで確定しない。上記のdeny案は仮の名前。
  • ?xoxc/xoxdトークンの有効期限は未確認(運用しながら把握する)。

5トークン取得手順(minakoさん向け)

対象:cto-association(運営側)・ctoacommunity(会員側)の2ワークスペース。各3〜5分。

⚠️ このトークンはご自身のSlackアカウントの閲覧範囲(DM含め)にアクセスできる強い権限を持ちます。取得後は他人に見せない・貼り付け先は指定の設定ファイルのみにしてください。
各ワークスペースで1回ずつ(計2回)
  1. ワークスペースを開く

    Chromeでそのワークスペースを開く(例:https://cto-association.slack.com)。ログイン済みの状態で。

  2. DevToolsを開く

    F12(またはメニュー→その他のツール→デベロッパーツール)

  3. Consoleタブでxoxcトークンを取得

    以下を貼り付けてEnter:

    JSON.parse(localStorage.localConfig_v2).teams[Object.keys(JSON.parse(localStorage.localConfig_v2).teams)[0]].token

    xoxc-から始まる文字列が表示されます。

  4. Application → Cookies でxoxdトークンを取得

    DevTools「Application」タブ→左メニュー「Cookies」→該当のSlackドメインを選択。名前が d のCookieの値をコピー(xoxd-から始まる文字列)。

  5. 一時控え

    取得した2つの値をメモ帳などに一時控え。この後、差分案の該当箇所にご自身で貼り付けていただきます。

2ワークスペース分終わったら

差分案ファイルの該当箇所に取得したxoxc/xoxdをご自身で貼り付けてください(AIには生トークンを渡さない運用を推奨)。貼り付け後、守さんに「貼った」とお声がけいただければ、反映のやり方をご案内します。

うまく取得できない場合