Slack MCP Server
Lets Claude interact with Slack workspaces — list channels, read message history, post messages, reply to threads, add reactions, and look up user profiles.
Client Compatibility
What It Does
Connects Claude to a Slack workspace through a bot token. Claude can list channels, read channel history, read thread replies, post messages, reply to threads, add reactions, and retrieve user profiles. It’s the Anthropic reference server from the MCP servers repository — simple, focused, and npm-installable.
Note: Slack also has a newer official remote MCP server at mcp.slack.com that uses OAuth and is hosted by Slack themselves. That server is designed for enterprise integrations and app developers. This listing covers the reference server (@modelcontextprotocol/server-slack), which is the simpler option for individual users who want Claude to interact with their workspace.
What It Does Well
- Full read/write on the channels you care about. Claude can read message history, understand thread conversations, post responses, and add reactions. For workflows like “summarize what happened in #engineering today” or “reply to that thread about the deploy,” it’s exactly what you need. The
SLACK_CHANNEL_IDSenv var lets you restrict which channels Claude can touch. - Simple tool surface. Seven tools total:
slack_list_channels,slack_post_message,slack_reply_to_thread,slack_add_reaction,slack_get_channel_history,slack_get_thread_replies, andslack_get_users. That’s enough to be useful without overwhelming the model with options. Each tool maps cleanly to one Slack API call. - Standard npx install. Once you have the bot token and team ID, the config block is three lines. No Docker, no Python, no build step.
What It Doesn’t Do Well
- The setup process is the hard part. You need to create a Slack app at api.slack.com, add bot token scopes (channels:history, channels:read, chat:write, reactions:write, users:read at minimum), install the app to your workspace, then copy the bot token. If you’ve never created a Slack app before, this takes 15+ minutes and requires admin-level permissions on the workspace. Most MCP servers need an API key — this one needs you to build the whole app first.
- Bot must be explicitly added to channels. A common confusion: even after installing the Slack app to your workspace, the bot can’t read or post in a channel until someone invites it with
/invite @YourBotName. If Claude says a channel is empty when you know it’s not, this is why. Every channel you want Claude to access needs an explicit bot invite. - No search capability. The reference server can read channel history (most recent messages) and thread replies, but it cannot search across the workspace. If you want Claude to find a specific message from three weeks ago, it would need to paginate through history manually. The official Slack MCP server at
mcp.slack.comdoes support search — this one doesn’t. - Rate limits can bite on busy channels. Reading history from high-volume channels generates multiple API calls. Slack’s rate limits are per-workspace per-app, and the server doesn’t surface rate limit warnings clearly. If Claude starts getting empty results on channels you know have messages, rate limiting is the likely cause.
- Last npm publish was April 2025. The reference servers repo is in maintenance mode — it still works, but don’t expect new features. For teams that need more, the official Slack MCP server or the community server by korotovsky (which supports DMs, stealth mode, and smart history fetching) may be better options.
Setup Notes
The multi-step setup is the biggest barrier. Here’s the path:
- Go to api.slack.com/apps and create a new app “From scratch”
- Under OAuth & Permissions, add these bot token scopes:
channels:history,channels:read,chat:write,reactions:write,users:read. Addgroups:readandgroups:historyif you need private channels. - Click Install to Workspace and authorize
- Copy the Bot User OAuth Token (starts with
xoxb-) - Find your Team ID — it’s the
Tvalue in your Slack workspace URL, or under workspace settings
Common mistakes: forgetting to add the bot to channels (use /invite @BotName), using a user token instead of a bot token, and not adding enough scopes before installing (you’ll need to reinstall the app if you add scopes later).
If your workspace requires admin approval for apps, you’ll need to submit the app for approval before you can install it. This can add days to the setup process depending on your org.
Config
Standard:
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T01234567"
}
}
}
}
Restricted to specific channels:
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T01234567",
"SLACK_CHANNEL_IDS": "C01234567,C76543210"
}
}
}
}
Docker:
{
"mcpServers": {
"slack": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "SLACK_BOT_TOKEN",
"-e", "SLACK_TEAM_ID",
"mcp/slack"
],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T01234567"
}
}
}
}
Note: The official Slack MCP server at mcp.slack.com is a different product — remote, OAuth-based, and designed for enterprise use. This is the simpler reference implementation for individual users.
Tested With
- Claude Desktop on Windows 11
{
"mcpServers": {
"slack-mcp": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-slack"
],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T01234567"
}
}
}
} Environment Variables
SLACK_BOT_TOKEN(required) — Bot user OAuth token from your Slack app — starts with xoxb-SLACK_TEAM_ID(required) — Your Slack workspace ID — find it in workspace settings or the URLSLACK_CHANNEL_IDS— Comma-separated list of channel IDs to restrict access. Optional — if omitted, the bot can access all channels it's been added to.
Prerequisites
- Node.js 18+
- A Slack workspace where you have admin or app-install permissions
- A Slack app with bot token scopes configured (see Setup Notes)
View on GitHub · npx -y @modelcontextprotocol/server-slack
Reviewed by J-Dub · February 22, 2026