Interact with Slack workspaces via AI assistant
MCP server for Slack: list channels, post and reply to messages, react, and read channel/user data.
1.0.0Add to Favorites
Why it matters
Enable AI assistants to read, post, and manage messages across Slack channels and threads, allowing automated communication and information retrieval from your workspace.
Outcomes
What it gets done
Post messages and reply to threads in Slack channels
Retrieve channel history and thread conversations
Add emoji reactions to messages
List channels and get user profile information
Source
Get it from source
Spark does not host a copy of it.
Open sourceReports
Agent outcome reports
No reports yet
Overview
Slack
This MCP server connects an AI assistant to Slack: listing channels and users, posting messages and thread replies, adding reactions, and reading channel history or user profiles via a scoped bot token. Use it when an assistant needs to read or post Slack content on the team's behalf; check for a maintained alternative for long-term use since this repository is archived.
What it does
This MCP server lets an assistant interact with a Slack workspace through 8 tools. slack_list_channels lists public or pre-defined channels with pagination; slack_post_message posts a new message to a channel; slack_reply_to_thread replies to a specific thread by its parent message timestamp; slack_add_reaction adds an emoji reaction to a message; slack_get_channel_history retrieves recent messages from a channel; slack_get_thread_replies retrieves every reply in a thread; slack_get_users lists workspace users with basic profiles and pagination; and slack_get_user_profile retrieves detailed profile information for one specific user.
When to use - and when NOT to
Use it when you want an assistant to read Slack conversations, post updates, reply in threads, react to messages, or look up user information as part of a workflow - for example summarizing a channel's recent activity or posting a status update on the team's behalf. It requires a Slack app with a Bot User OAuth Token (xoxb-...) granted the channels:history, channels:read, chat:write, reactions:write, users:read, and users.profile:read scopes, installed to the target workspace, and added to any channel it needs to access - a missing scope or an app not invited to a channel is the most common source of permission errors. Note this repository lives in the Model Context Protocol project's archived servers collection rather than its actively maintained one, so check for a currently maintained alternative before a long-term integration.
Capabilities
- List channels and workspace users with pagination
- Post messages and reply to threads
- Add emoji reactions to messages
- Retrieve channel history and full thread replies
- Retrieve detailed profile information for a specific user
How to install
Create a Slack app at the Slack Apps page, add the six OAuth scopes listed above under "OAuth & Permissions," install the app to your workspace, and copy the Bot User OAuth Token (xoxb-...) and your Team ID (starts with T). Then configure your MCP client, for example Claude Desktop via NPX:
{
"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"
}
}
}
}
The optional SLACK_CHANNEL_IDS environment variable restricts channel listing to a comma-separated set of channel IDs; if omitted, all public channels are listed. A Docker variant and the same NPX/Docker configuration pattern for VS Code are also supported, each prompting for the bot token and team ID as inputs.
Who it's for
Teams wanting an AI assistant to read and post in Slack on their behalf - summarizing channels, replying in threads, reacting to messages, or looking up teammates - as part of an automated or assistant-driven workflow. The server is MIT-licensed.
Source README
Slack MCP Server
MCP Server for the Slack API, enabling Claude to interact with Slack workspaces.
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
Setup
Create a Slack App:
- Visit the Slack Apps page
- Click "Create New App"
- Choose "From scratch"
- Name your app and select your workspace
Configure Bot Token Scopes:
Navigate to "OAuth & Permissions" and add these scopes:channels:history- View messages and other content in public channelschannels:read- View basic channel informationchat:write- Send messages as the appreactions:write- Add emoji reactions to messagesusers:read- View users and their basic informationusers.profile:read- View detailed profiles about users
Install App to Workspace:
- Click "Install to Workspace" and authorize the app
- Save the "Bot User OAuth Token" that starts with
xoxb-
Get your Team ID (starts with a
T) by following this guidance
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_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",
"-e",
"SLACK_CHANNEL_IDS",
"mcp/slack"
],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T01234567",
"SLACK_CHANNEL_IDS": "C01234567, C76543210"
}
}
}
}
Usage with VS Code
For quick installation, click one of the installation buttons below...
For manual installation, add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing Ctrl + Shift + P and typing Preferences: Open Settings (JSON).
Optionally, you can add it to a file called .vscode/mcp.json in your workspace. This will allow you to share the configuration with others.
Note that the
mcpkey is not needed in the.vscode/mcp.jsonfile.
NPX
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "slack_bot_token",
"description": "Slack Bot Token (starts with xoxb-)",
"password": true
},
{
"type": "promptString",
"id": "slack_team_id",
"description": "Slack Team ID (starts with T)"
}
],
"servers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "${input:slack_bot_token}",
"SLACK_TEAM_ID": "${input:slack_team_id}"
}
}
}
}
}
Docker
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "slack_bot_token",
"description": "Slack Bot Token (starts with xoxb-)",
"password": true
},
{
"type": "promptString",
"id": "slack_team_id",
"description": "Slack Team ID (starts with T)"
}
],
"servers": {
"slack": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp/slack"],
"env": {
"SLACK_BOT_TOKEN": "${input:slack_bot_token}",
"SLACK_TEAM_ID": "${input:slack_team_id}"
}
}
}
}
}
Environment Variables
SLACK_BOT_TOKEN: Required. The Bot User OAuth Token starting withxoxb-.SLACK_TEAM_ID: Required. Your Slack workspace ID starting withT.SLACK_CHANNEL_IDS: Optional. Comma-separated list of channel IDs to limit channel access (e.g., "C01234567, C76543210"). If not set, all public channels will be listed.
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 .
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.