About Slack MCP Server
Slack MCP Server lets AI assistants read and send workspace messages through the Slack API, using a user token to act on a user’s behalf. It supports workflows involving channels, direct messages, user profiles, and message threads.
Key features
- 01List workspace channels and users
- 02Read channel message history
- 03Read direct messages and thread replies
- 04Send messages as the user
- 05Add message reactions
Use cases
- 01Review recent channel messages
- 02Send messages in channels or direct messages
- 03Retrieve thread replies and add reactions
MCP support
As an MCP server, it provides MCP clients with Slack tools to read channels and messages, view user profiles, send messages, reply in threads, and add reactions. User-token authentication allows messages to be sent on a user’s behalf.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMESlack MCP Server
Forked from https://github.com/modelcontextprotocol/servers/tree/0ad83e8dda5f3a46f0157c6f2c45e03f397d11a1/src/slack
Swapped authentication from bot token to user token to allow to use the MCP server in a wider range of use cases such as reading direct messages and sending messages on behalf of a user.
MCP Server for the Slack API, enabling Claude to interact with Slack workspaces.
Setup
-
Create a Slack App:
- Visit the Slack Apps page
- Click "Create New App"
- Choose "From scratch"
- Name your app "Slack MCP Server" and select your workspace
-
Configure User Token Scopes: Navigate to "OAuth & Permissions" and add these scopes to the user token:
channels:history- View messages and other content in public channelschannels:read- View basic channel informationchat:write- Send messages as the userreactions:write- Add emoji reactions to messagesusers:read- View users and their basic informationusers.profile:read- View detailed profiles about usersgroups:history- View messages and other content in private channelsgroups:read- View basic channel informationgroups:write- Send messages to private channelsim:history- View messages and other content in direct messagesim:read- View basic direct message informationim:write- Send messages to direct messagesmpim:history- View messages and other content in multi-person direct messagesmpim:read- View basic multi-person direct message informationmpim:write- Send messages to multi-person direct messages
-
Install App to Workspace:
- Click "Install to Workspace" and authorize the app
- Save the "User OAuth Token" that starts with
xoxp-
-
Run
npm installto install the dependencies.
Tools
-
slack_list_channels- List public or pre-defined channels in the workspace
- Optional inputs:
limit(number, default: 100, max: 200): Maximum number of channels to returncursor(string): Pagination cursor for next page
- Returns: List of channels with their IDs and information
-
slack_post_message- Post a new message to a Slack channel
- Required inputs:
channel_id(string): The ID of the channel to post totext(string): The message text to post
- Returns: Message posting confirmation and timestamp
-
slack_reply_to_thread- Reply to a specific message thread
- Required inputs:
channel_id(string): The channel containing the threadthread_ts(string): Timestamp of the parent messagetext(string): The reply text
- Returns: Reply confirmation and timestamp
-
slack_add_reaction- Add an emoji reaction to a message
- Required inputs:
channel_id(string): The channel containing the messagetimestamp(string): Message timestamp to react toreaction(string): Emoji name without colons
- Returns: Reaction confirmation
-
slack_get_channel_history- Get recent messages from a channel
- Required inputs:
channel_id(string): The channel ID
- Optional inputs:
limit(number, default: 10): Number of messages to retrieve
- Returns: List of messages with their content and metadata
-
slack_get_thread_replies- Get all replies in a message thread
- Required inputs:
channel_id(string): The channel containing the threadthread_ts(string): Timestamp of the parent message
- Returns: List of replies with their content and metadata
-
slack_get_users- Get list of workspace users with basic profile information
- Optional inputs:
cursor(string): Pagination cursor for next pagelimit(number, default: 100, max: 200): Maximum users to return
- Returns: List of users with their basic profiles
-
slack_get_user_profile- Get detailed profile information for a specific user
- Required inputs:
user_id(string): The user's ID
- Returns: Detailed user profile information
Usage with Claude Desktop
Add the following to your claude_desktop_config.json:
NPX
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_USER_TOKEN": "xoxp-your-user-token"
}
}
}
}
docker
{
"mcpServers": {
"slack": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "SLACK_USER_TOKEN"],
"env": {
"SLACK_USER_TOKEN": "xoxp-your-bot-token"
}
}
}
}
Environment Variables
SLACK_USER_TOKEN: Required. The Bot User OAuth Token starting withxoxp-.
Troubleshooting
If you encounter permission errors, verify that:
- All required scopes are added to your Slack app
- The app is properly installed to your workspace
- The tokens and workspace ID are correctly copied to your configuration
- The app has been added to the channels it needs to access
Build
Docker build:
docker build -t mcp/slack -f src/slack/Dockerfile .
License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.