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
- Go to api.slack.com/apps and click Create New App.
- Choose From scratch and give it a clear name like
claude-mcp. - Select the workspace where the app will be installed.
- Go to OAuth & Permissions and add the scopes you need.
- 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.
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:writeas 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
- Restart Claude Desktop after saving the config.
- Open a new conversation and ask: "List the Slack channels I have access to."
- 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.
Without AI vs. with AI
| Task | Without AI | With AI |
|---|---|---|
| Catching up on threads | Users scroll through hundreds of Slack messages to find decisions. | The MCP server summarizes thread history and extracts decisions in seconds. |
| Channel search | Users remember a conversation happened but cannot find it. | Claude can search Slack messages through the MCP server using natural-language queries. |
| Drafting replies | Reps type repetitive status updates and meeting summaries by hand. | Claude drafts replies from thread context, ready for human review before sending. |
| Access control | Bots are given workspace-wide permissions by default. | The Slack MCP server is scoped to specific channels and read-only actions until approved. |
| Tool integration | Assistants 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.