Skip to main content
Glama
EgumaYuto

slack-mcp

by EgumaYuto

slack-mcp

Slack を操作するための MCP サーバーです。Slack の user token (xoxp-) を使って、チャンネル・DM・スレッド・全文検索の読み取りと、メッセージの投稿を Claude(や他の MCP クライアント)から行えるようにします。

投稿・編集・削除はあなた本人の名前で行われます(bot ではありません)。

提供ツール

読み取り

ツール

説明

slack_whoami

トークンの本人・ワークスペースを確認(動作確認用)

slack_list_channels

チャンネル / DM / グループDM の一覧(id を取得)

slack_get_history

チャンネル・DM の最近のメッセージを読む

slack_get_activity

期間指定でその期間の動きを全部取る。期間より前に立ったスレッドへの返信も拾う(週次サマリ向け)

slack_get_thread

スレッドの親+返信を展開

slack_search

ワークスペース全体を全文検索(in:#ch from:@user 等の演算子対応)

slack_list_users

メンバー一覧(id → 名前解決)

書き込み

ツール

説明

slack_post_message

チャンネル・DM に投稿。thread_ts を渡すとスレッド返信になる

slack_add_reaction

メッセージに絵文字リアクションを付ける

slack_update_message

自分が書いたメッセージの本文を差し替える

slack_delete_message

自分が書いたメッセージを削除する(取り消し不可

Related MCP server: nomos-slack-mcp

必要なもの

  • Node.js 20.11 以上(.env の自動読み込みに process.loadEnvFile を使うため)

  • Slack の user token (xoxp-)(検索と DM 読み取りに必須)

セットアップ

1. Slack App を作成してトークンを取得(マニフェスト方式・おすすめ)

スコープを1つずつクリックせず、slack-app-manifest.yml を貼り付けて一括設定します。

  1. https://api.slack.com/apps を開く(Slack にログインした状態で)。

  2. Create New AppFrom a manifest を選ぶ。

  3. トークンを取りたいワークスペースを選択 → Next。

  4. フォーマットを YAML に切り替え、slack-app-manifest.yml の中身を丸ごと貼り付け → Next → Create。

  5. 左メニュー OAuth & Permissions を開き、上部の Install to Workspace → 内容を確認して 許可する

  6. 表示された User OAuth Tokenxoxp-... で始まる)をコピーする。これが SLACK_TOKEN です。

スコープを手動で設定したい場合は、User Token Scopes に次を追加します: channels:read, channels:history, groups:read, groups:history, im:read, im:history, mpim:read, mpim:history, search:read, users:read, chat:write, reactions:write

注意: user token は「あなた本人」の権限で Slack を読み書きします。投稿・編集・削除も あなた本人の発言として記録されます。取り扱いは慎重に。

2. インストール

git clone https://github.com/EgumaYuto/slack-mcp.git
cd slack-mcp
npm install

3. 動作確認

SLACK_TOKEN=xoxp-... npm start

または、リポジトリ直下に .env を置く方法(トークンを起動コマンドに書かずに済む・おすすめ):

cp .env.example .env      # .env を作成
# .env を開いて SLACK_TOKEN=xoxp-... を実際のトークンに書き換える
npm start                 # サーバーが .env を自動で読み込む

.env.gitignore 済みなのでコミットされません。.env の場所はこのリポジトリの直下src/ の隣、.env.example と同じ場所)です。

[slack-mcp] running on stdio と出れば起動 OK です(stdin を待ち続けるので Ctrl+C で終了)。

既存アプリに投稿権限を追加する

以前の読み取り専用版からアップデートした場合、投稿系ツールには chat:writereactions:write が追加で必要です。Bot User の追加やイベント購読は不要で、 User Token Scopes を増やすだけです。

  1. https://api.slack.com/apps → 対象のアプリを開く。

  2. 左メニュー App Manifest を開く。

  3. oauth_config.scopes.userchat:writereactions:write を追記 → Save Changes

  4. スコープ変更の警告が出るので、OAuth & PermissionsReinstall to Workspace で再インストール → 許可する。

  5. User OAuth Token が新しい値に変わるので、コピーして .envSLACK_TOKEN= を差し替える。

App Manifest 画面に display_information.name を含めて貼り替えると、アプリの表示名も 変わります。名前を変えたくない場合は scopes の2行だけ追記してください。

Claude Code への登録

.env を使う場合はトークンを渡さずに登録できます:

claude mcp add slack --scope user -- node /ABSOLUTE/PATH/TO/slack-mcp/src/index.js

.env を使わず直接渡す場合:

claude mcp add slack --scope user --env SLACK_TOKEN=xoxp-... -- node /ABSOLUTE/PATH/TO/slack-mcp/src/index.js

claude mcp listslack が出れば登録完了です。Claude Code の中で「#general の最近のメッセージを読んで」のように依頼できます。

Claude Desktop への登録

claude_desktop_config.json に追記:

{
  "mcpServers": {
    "slack": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/slack-mcp/src/index.js"],
      "env": { "SLACK_TOKEN": "xoxp-..." }
    }
  }
}

同梱の Skill

skill/slack-reader/ に、このサーバーの使い方をまとめた Claude Code 用 Skill を同梱しています。ユーザー全体で使うには:

cp -R skill/slack-reader ~/.claude/skills/

トラブルシューティング

  • missing_scope: 上記スコープを追加して Reinstall し、トークンを取り直す。

  • not_allowed_token_type: search.messages は bot token では使えません。user token を使ってください。

  • invalid_auth: トークンが失効/誤り。再取得する。

  • channel_not_found: user token でも自分が参加していないチャンネルは読めません。投稿する場合も、 先にそのチャンネルに参加している必要があります。

  • not_in_channel: 投稿しようとしたチャンネルに参加していません。Slack 上で join してください。

  • cant_update_message / cant_delete_message: 他人のメッセージは編集・削除できません。 user token の本人が書いたものだけが対象です(slack_whoami で本人を確認できます)。

  • already_reacted: そのリアクションは既に自分が付けています。

  • fetch failed: Slack の認証エラーではなくネットワーク遮断です。Claude Code のサンドボックスが MCP サーバープロセスの通信をブロックしている場合に起きます。~/.claude/settings.json に Slack を許可ドメインとして追加してください:

    {
      "sandbox": {
        "network": {
          "allowedDomains": ["slack.com", "*.slack.com"]
        }
      }
    }

    切り分け方: node -e 'fetch("https://slack.com/api/api.test").then(r=>console.log(r.status))' がターミナルでは成功するのに MCP 経由だけ fetch failed になるなら、この設定が原因です。

ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    A production-ready MCP server for the Slack API that enables searching, listing channels, reading history, inspecting users, fetching threads, and sending messages through controlled Slack tools.
    21,724 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server that reads Slack through your own browser session, authenticating as you rather than a bot. Provides tools to search messages, retrieve channel/DM/thread history, resolve users, and post messages (write disabled by default).
    10
    MIT