Slack MCPサーバーの使い方 — Claude Codeへの接続とClaude Tagとの違い
SlackのリモートMCPサーバー(mcp.slack.com)をClaude Codeにつなぐ手順と、権限スコープの絞り方、Claude Tagとの役割の違いをまとめます。
SlackはAIエージェント向けに、https://mcp.slack.com/mcpというリモートMCPサーバーを公式に提供しています。ローカルにサーバーを立てる必要はなく、Claude CodeやClaude.aiからURLとOAuth認証だけでSlackのメッセージ・チャンネル・canvasにアクセスできます。似た名前の製品にClaude Tagがありますが、これはSlackチャンネルの中で@Claudeとして動く別の仕組みです。両者は「SlackをClaudeの外部ツールとして使う」のか「ClaudeをSlackの中の一員として使う」のかで向きが逆になります。この記事では接続手順とスコープ設計、そしてこの向きの違いを実際の設定で確認します。
Slack MCPサーバーとは — mcp.slack.comへのリモート接続
Slack MCPサーバーは、JSON-RPC 2.0 over Streamable HTTPで動くリモートMCPサーバーです。OAuth 2.0のユーザートークンで認証し、ワークスペース管理者が事前にMCPクライアントの利用を承認する運用が前提になっています。ローカルへのインストールは不要で、claude mcp addかclaude.aiのコネクタ設定からURLを登録するだけで使えます。
提供される機能は大きく4つに分かれます。
| カテゴリ | できること |
|---|---|
| 検索 | できることメッセージ・ファイル・ユーザー・チャンネル・カスタム絵文字の検索 |
| メッセージ | できること任意の会話への送信、下書き作成、スレッドの読み込み、リアクション追加 |
| Canvas | できることMarkdown形式でのcanvasの作成・更新・読み込み |
| ユーザー情報 | できることプロフィール情報の取得、チャンネルメンバー一覧の取得 |
検索とメッセージ操作が中心で、チャンネルの作成やワークスペース設定の変更のような管理系操作は含まれません。日常的な「Slackの内容を読んで、必要ならメッセージも送る」用途に絞ったツールセットだと捉えておくと実態に近くなります。
Claude Codeで接続する手順
claude mcp add --transport http slack https://mcp.slack.com/mcp登録後は/mcpパネルを開き、slackが表示されたら認証を進めます。ブラウザでOAuth認証画面が開き、ワークスペースへのサインインと権限の許可を済ませると接続が完了します。接続状態はclaude mcp listでも確認でき、✔ Connectedになっていれば準備完了です。
接続後に何ができるか — 検索とメッセージの実例
接続が済めば、あとは自然文で頼むだけです。
先週の#engineeringチャンネルで、デプロイ障害について話していたスレッドを探してこのとき呼ばれるのは検索系のツールで、キーワードに一致するメッセージとスレッドの文脈がまとめて返ってきます。過去ログを調べてからコードの修正に取り掛かる、という流れをClaude Codeのセッション内で完結できます。
今のバグ修正の要点を3行でまとめて、#eng-alertsチャンネルに投稿して送信系のツールは、投稿前に内容を確認できる設計です。意図しない相手への誤送信を避けたい場合は、oauth.scopesからchat:writeを外し、検索・閲覧専用の接続にしておく選択肢もあります。Canvasのツールを使えば、複数のメッセージから拾った要点をMarkdown形式でまとめ、チーム向けの資料として残すこともできます。
権限スコープをどう絞るか
Slack MCPサーバーの機能ごとに、必要なOAuthスコープが分かれています。
| 機能 | 主なスコープ |
|---|---|
| メッセージ送信 | 主なスコープchat:write |
| 検索 | 主なスコープsearch:read.publicほか複数 |
| Canvas作成・更新 | 主なスコープcanvases:write |
| Canvas読み込み | 主なスコープcanvases:read |
既定では、Slackサーバーが対応する全スコープが要求される可能性があります。検索と閲覧しか使わないのに送信権限まで渡したくない場合、Claude Code側で要求スコープを固定できます。.mcp.jsonのoauth.scopesに許可したいスコープだけを空白区切りで書くと、以降の認証フローはそのスコープだけを要求するようになります。
{
"mcpServers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"scopes": "channels:read search:read.public"
}
}
}
}送信ツールを呼ぼうとしてスコープ不足の403エラーが返ってきたら、その時点でoauth.scopesを広げて再認証します。最初から広いスコープを渡すより、必要になった時点で足す方が、意図しないメッセージ送信のリスクを小さく保てます。Claude Code側のMCP OAuth実装全般はClaude Code MCP設定ガイドにまとめています。
Slack MCPサーバーとClaude Tagはどう違うか
名前が近いため混同されがちですが、役割はほぼ正反対です。
| 仕組み | 向き | 主体 | 対象プラン |
|---|---|---|---|
| Slack MCPサーバー | 向きSlackをClaudeの外部ツールとして使う | 主体Claude Code・claude.ai等のMCPクライアント | 対象プラン制限記載なし(要ワークスペース承認) |
| Claude Tag | 向きClaudeをチームの一員としてSlackに置く | 主体Slackチャンネル内の@Claude | 対象プランTeam・Enterprise |
| 旧Claude Code in Slack | 向きSlackから個人のコーディングセッションを起動する | 主体個人のClaudeアカウント | 対象プランPro・Max(Team/EnterpriseはClaude Tagへ移行中) |
Slack MCPサーバーは、Claude CodeのセッションがSlackの中身を読みに行く・書きに行くための接続です。一方Claude Tagは、Slackチャンネルの中に組織共有の@Claudeという人格を置く仕組みで、誰かが@Claudeをメンションするとタスクとして受け取ります。「Slackの過去ログを検索してコンテキストに使いたい」ならMCPサーバー、「チームの誰もがSlackから直接Claudeにタスクを振れるようにしたい」ならClaude Tag、と目的で選び分けます。両方を同時に使う運用も可能です。Claude Tagの詳細はClaude Tagのドキュメントで確認できます。
v2.1系でのSlack MCP関連の修正タイムライン
Slack MCPサーバーは、Dynamic Client Registration(DCR)に対応しない代表的なMCPサーバーとして、Claude Code側のOAuth実装の中でたびたび個別に扱われてきました。半年ほどの間に入った修正を並べると、認証まわりの成熟がよく見えます。
| バージョン | 公開日 | 変更内容 |
|---|---|---|
| v2.1.30 | 公開日2026-02-04 | 変更内容DCR非対応サーバー向けに、claude mcp addで--client-id・--client-secretを事前指定できるように |
| v2.1.74 | 公開日2026-03-12 | 変更内容コールバックポート衝突によるハングと、HTTP 200でエラーを返すサーバで再認証が促されないバグを修正 |
| v2.1.94 | 公開日2026-04-08 | 変更内容送信ツール呼び出し時のトランスクリプト表示をSlacked #channelに簡略化、チャンネル名をリンク化 |
| v2.1.231 | 公開日2026-08-13 | 変更内容事前登録OAuthクライアントを使うサーバーで、リダイレクトURIが一致せずサインインに失敗する不具合を修正 |
最初の2件は「そもそも認証が通る・通り続ける」ための修正、後の2件は「使い始めてからの体験」を整える修正です。DCR非対応サーバーへの接続がv2.1.30以降でようやく現実的になり、v2.1.74でハング系の不具合が消え、v2.1.231でリダイレクトURI起因のサインイン失敗が解消されました。古いバージョンのままSlack MCPサーバーへの接続で認証が不安定なら、まずv2.1.231以降へのアップデートを疑うのが手早い切り分けです。リモートMCPのOAuth設計全般はリモートMCPのOAuth認証で扱っています。
よくあるつまずき
- 認証が繰り返し求められる: v2.1.74より前のバージョンでは、HTTP 200でエラーを返すSlack側の挙動によって再認証が促されないバグがあった。まずバージョンを確認する
- 送信ツールだけ403になる:
oauth.scopesでchat:writeを含めずにスコープを固定していると、検索は通るのに送信だけ失敗する。エラー内容から不足スコープを特定して追加する - 社内で「Connect」の選択肢自体が出ない: 未承認のMCPクライアントからの接続はSlack側でブロックされる。ワークスペース管理者にMCPクライアントの承認状況を確認する
- claude.aiのSlackコネクタと二重に接続している: claude.ai側のコネクタと
claude mcp addでの個別登録を両方有効にすると、同じSlackに2つの経路で接続する状態になる。/mcpパネルでどちらが有効かを確認する
よくある質問
Slack MCPサーバーと旧Claude Code in Slackはどちらを使うべきですか
目的が違います。Slack MCPサーバーはSlackの内容をClaude Codeのセッションに取り込むための接続で、Claude Code in Slackは逆にSlackから個人のコーディングセッションを起動する仕組みです。Slackの過去ログや添付ファイルを参照したいだけならSlack MCPサーバー、Slackのスレッドから直接コーディングを依頼したいならClaude Code in Slack(Team/EnterpriseはClaude Tag)を使います。
個人のSlackワークスペースでも接続できますか
未公開のカスタムアプリや承認されていないMCPクライアントは接続できない設計です。ワークスペース管理者がMCPクライアントの利用を承認している必要があり、個人プランのワークスペースでも管理者権限を持つ本人が事前に許可する作業が要ります。
検索した内容が意図しない指示として実行されることはありますか
Slack MCPサーバーに限らず、外部コンテンツを取得するMCPサーバーには間接的なプロンプトインジェクションのリスクがあります。検索結果やスレッドの中に紛れた指示文をClaudeがそのまま実行しないよう、信頼できるチャンネルでの利用に留め、送信系ツールの実行結果は都度確認する運用が安全です。
組織側でSlack MCPサーバーの利用状況を監査できますか
Slack側の管理者コンソールで、どのMCPクライアントが接続され、どのツールがいつ呼ばれたかを監査ログから追跡できます。Enterprise GridのワークスペースではIPアドレスの許可リストも組み合わせられるため、社外ネットワークからの接続自体を制限する運用も可能です。
スコープを空にすると全機能が使えなくなりますか
oauth.scopesを設定しない場合は、Slackサーバーが提示するスコープをそのまま要求します。特定のスコープだけに絞りたい場合にのみoauth.scopesを指定し、指定しなければ既定の動作に戻ります。
まとめ
Slack MCPサーバーは、claude mcp add --transport http slack https://mcp.slack.com/mcpの1行とOAuth認証で使い始められます。肝心なのはその先で、検索・送信・Canvasのどこまでを許可するかをoauth.scopesで絞り込むことと、Claude Tagのような「Slackの中で動く」仕組みと役割を混同しないことです。認証まわりで不安定さを感じたら、まずv2.1.231以降へのアップデートを確認してから、スコープとワークスペース側の承認状況を順に見ていくと切り分けが早くなります。