Quick takeaways

  • Create a dedicated Slack app with the narrowest OAuth scopes possible.
  • Restrict the assistant to specific channels or private groups, not the entire workspace.
  • Never let Claude send messages without a human review step.

MCP explained

Fireship explains the Model Context Protocol and how MCP servers extend AI assistants to tools like Slack.

What the Slack MCP server does

The Slack MCP server exposes Slack tools to Claude Desktop. With it, Claude can list channels, read thread history, search messages, and draft replies. This is useful for catching up on long threads, extracting decisions, and preparing status updates.

Because Slack contains sensitive conversations, this integration demands more caution than most. Start with read access to a small set of channels, and keep write actions behind an explicit approval gate.

Prerequisites

  • Claude Desktop installed.
  • Node.js 18 or newer.
  • A Slack workspace where you have permission to create apps and install them.

Create a Slack app

  1. Go to api.slack.com/apps and click Create New App.
  2. Choose From scratch and give it a clear name like claude-mcp.
  3. Select the workspace where the app will be installed.
  4. Go to OAuth & Permissions and add the scopes you need.
  5. Install the app to the workspace and copy the Bot User OAuth Token.

Claude Desktop config

Open claude_desktop_config.json and add the Slack MCP server. The reference server reads the token from an environment variable.

{
  "mcpServers": {
    "slack": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-slack"
      ],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-REPLACE_ME",
        "SLACK_TEAM_ID": "T00000000"
      }
    }
  }
}

Replace the token and team ID with your own. The team ID appears in Slack workspace URLs or in the Slack API settings. Restart Claude Desktop after saving.

Permissions

These OAuth scopes are a reasonable starting point for read-only or draft-mode use. Add scopes only when a specific workflow requires them.

channels:historyRead public channel history. Required for summaries and search.
groups:historyRead private channel history. Only add if you need access to private groups.
chat:writeDraft or send messages. Use only with human approval and never in high-risk channels.
users:readResolve user names and mentions. Helpful for summaries and status updates.

Safety considerations

  • Channel scope: Invite the bot only to channels the assistant genuinely needs. Remove it from channels it does not.
  • Message sending: Treat chat:write as a high-risk permission. Start without it and add it later if necessary.
  • Retention: Be aware that Slack conversation history may contain PII, confidential plans, or customer data.
  • Token storage: Keep the bot token in the config file and do not share it. Rotate it if you suspect exposure.
  • Workspace policy: Check your organization's Slack app policy before installing third-party integrations.

Test the connection

  1. Restart Claude Desktop after saving the config.
  2. Open a new conversation and ask: "List the Slack channels I have access to."
  3. Then ask: "Summarize the last 20 messages in the general channel."

If Claude returns channel names or a thread summary, the integration is working. If it fails, check that the bot is invited to the channel and that the token has the required scopes.

Related: See MCP guide for permission design and AI agents explained for multi-step workflow thinking.

Without AI vs. with AI

TaskWithout AIWith AI
Catching up on threadsUsers scroll through hundreds of Slack messages to find decisions.The MCP server summarizes thread history and extracts decisions in seconds.
Channel searchUsers remember a conversation happened but cannot find it.Claude can search Slack messages through the MCP server using natural-language queries.
Drafting repliesReps type repetitive status updates and meeting summaries by hand.Claude drafts replies from thread context, ready for human review before sending.
Access controlBots are given workspace-wide permissions by default.The Slack MCP server is scoped to specific channels and read-only actions until approved.
Tool integrationAssistants cannot see live Slack context without copy-paste.MCP gives Claude structured access to Slack without exposing chat history to third-party training.

FAQ

Can Claude send Slack messages automatically?

Only if the token includes chat:write and the workflow allows it. I recommend requiring human approval before sending.

Can I limit the app to one channel?

Yes. Invite the bot only to specific channels. It cannot read channels it has not joined.

What is the difference between a user token and a bot token?

Bot tokens act as the app itself and are easier to scope. User tokens act on behalf of a person and usually have broader access.

Does Slack notify users when the bot reads history?

No, but your workspace admin can audit app activity. Be transparent about which channels the assistant can access.

Should I use this with customer Slack Connect channels?

No. Avoid connecting AI assistants to external or customer-facing channels unless you have explicit policy and legal approval.

What can the Slack MCP server do?

It lets Claude Desktop list channels, read threads, search messages, and draft replies with the right scopes.

Is the Slack MCP server safe?

It is safe when you scope OAuth tokens narrowly, restrict channels, and require approval before sending messages.

What OAuth scopes does Slack MCP need?

Start with the narrowest read scopes such as channels:history and groups:history; avoid write scopes until you need them.

Where is the Slack MCP server config stored?

In Claude Desktop's claude_desktop_config.json, with the token referenced from an environment variable when possible.