slack
MCP Server for the Slack API, enabling Claude to interact with Slack workspaces.
MCP Server for the Slack API, enabling Claude to interact with Slack workspaces.
MCP Server for the Slack API, enabling Claude to interact with Slack workspaces.
slack_list_channels
limit
(number, default: 100, max: 200): Maximum number of channels to returncursor
(string): Pagination cursor for next pageReturns: List of channels with their IDs and information
slack_post_message
channel_id
(string): The ID of the channel to post totext
(string): The message text to postReturns: Message posting confirmation and timestamp
slack_reply_to_thread
channel_id
(string): The channel containing the threadthread_ts
(string): Timestamp of the parent messagetext
(string): The reply textReturns: Reply confirmation and timestamp
slack_add_reaction
channel_id
(string): The channel containing the messagetimestamp
(string): Message timestamp to react toreaction
(string): Emoji name without colonsReturns: Reaction confirmation
slack_get_channel_history
channel_id
(string): The channel IDlimit
(number, default: 10): Number of messages to retrieveReturns: List of messages with their content and metadata
slack_get_thread_replies
channel_id
(string): The channel containing the threadthread_ts
(string): Timestamp of the parent messageReturns: List of replies with their content and metadata
slack_get_users
cursor
(string): Pagination cursor for next pagelimit
(number, default: 100, max: 200): Maximum users to returnReturns: List of users with their basic profiles
slack_get_user_profile
user_id
(string): The user's IDName 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 information
Install App to Workspace:
Save the "Bot User OAuth Token" that starts with xoxb-
Get your Team ID (starts with a T
) by following this guidance
Add the following to your claude_desktop_config.json
:
{
"mcpServers": {
"slack": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-slack"
],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T01234567"
}
}
}
}
{
"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"
}
}
}
}
If you encounter permission errors, verify that: 1. All required scopes are added to your Slack app 2. The app is properly installed to your workspace 3. The tokens and workspace ID are correctly copied to your configuration 4. The app has been added to the channels it needs to access
Docker build:
docker build -t mcp/slack -f src/slack/Dockerfile .
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.
[
{
"description": "List public channels in the workspace with pagination",
"inputSchema": {
"properties": {
"cursor": {
"description": "Pagination cursor for next page of results",
"type": "string"
},
"limit": {
"default": 100,
"description": "Maximum number of channels to return (default 100, max 200)",
"type": "number"
}
},
"type": "object"
},
"name": "slack_list_channels"
},
{
"description": "Post a new message to a Slack channel",
"inputSchema": {
"properties": {
"channel_id": {
"description": "The ID of the channel to post to",
"type": "string"
},
"text": {
"description": "The message text to post",
"type": "string"
}
},
"required": [
"channel_id",
"text"
],
"type": "object"
},
"name": "slack_post_message"
},
{
"description": "Reply to a specific message thread in Slack",
"inputSchema": {
"properties": {
"channel_id": {
"description": "The ID of the channel containing the thread",
"type": "string"
},
"text": {
"description": "The reply text",
"type": "string"
},
"thread_ts": {
"description": "The timestamp of the parent message in the format '1234567890.123456'. Timestamps in the format without the period can be converted by adding the period such that 6 numbers come after it.",
"type": "string"
}
},
"required": [
"channel_id",
"thread_ts",
"text"
],
"type": "object"
},
"name": "slack_reply_to_thread"
},
{
"description": "Add a reaction emoji to a message",
"inputSchema": {
"properties": {
"channel_id": {
"description": "The ID of the channel containing the message",
"type": "string"
},
"reaction": {
"description": "The name of the emoji reaction (without ::)",
"type": "string"
},
"timestamp": {
"description": "The timestamp of the message to react to",
"type": "string"
}
},
"required": [
"channel_id",
"timestamp",
"reaction"
],
"type": "object"
},
"name": "slack_add_reaction"
},
{
"description": "Get recent messages from a channel",
"inputSchema": {
"properties": {
"channel_id": {
"description": "The ID of the channel",
"type": "string"
},
"limit": {
"default": 10,
"description": "Number of messages to retrieve (default 10)",
"type": "number"
}
},
"required": [
"channel_id"
],
"type": "object"
},
"name": "slack_get_channel_history"
},
{
"description": "Get all replies in a message thread",
"inputSchema": {
"properties": {
"channel_id": {
"description": "The ID of the channel containing the thread",
"type": "string"
},
"thread_ts": {
"description": "The timestamp of the parent message in the format '1234567890.123456'. Timestamps in the format without the period can be converted by adding the period such that 6 numbers come after it.",
"type": "string"
}
},
"required": [
"channel_id",
"thread_ts"
],
"type": "object"
},
"name": "slack_get_thread_replies"
},
{
"description": "Get a list of all users in the workspace with their basic profile information",
"inputSchema": {
"properties": {
"cursor": {
"description": "Pagination cursor for next page of results",
"type": "string"
},
"limit": {
"default": 100,
"description": "Maximum number of users to return (default 100, max 200)",
"type": "number"
}
},
"type": "object"
},
"name": "slack_get_users"
},
{
"description": "Get detailed profile information for a specific user",
"inputSchema": {
"properties": {
"user_id": {
"description": "The ID of the user",
"type": "string"
}
},
"required": [
"user_id"
],
"type": "object"
},
"name": "slack_get_user_profile"
}
]