slack

Local 2025-08-31 23:24:08 0

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.

Tools

  1. slack_list_channels
  2. List public channels in the workspace
  3. Optional inputs:
    • limit (number, default: 100, max: 200): Maximum number of channels to return
    • cursor (string): Pagination cursor for next page
  4. Returns: List of channels with their IDs and information

  5. slack_post_message

  6. Post a new message to a Slack channel
  7. Required inputs:
    • channel_id (string): The ID of the channel to post to
    • text (string): The message text to post
  8. Returns: Message posting confirmation and timestamp

  9. slack_reply_to_thread

  10. Reply to a specific message thread
  11. Required inputs:
    • channel_id (string): The channel containing the thread
    • thread_ts (string): Timestamp of the parent message
    • text (string): The reply text
  12. Returns: Reply confirmation and timestamp

  13. slack_add_reaction

  14. Add an emoji reaction to a message
  15. Required inputs:
    • channel_id (string): The channel containing the message
    • timestamp (string): Message timestamp to react to
    • reaction (string): Emoji name without colons
  16. Returns: Reaction confirmation

  17. slack_get_channel_history

  18. Get recent messages from a channel
  19. Required inputs:
    • channel_id (string): The channel ID
  20. Optional inputs:
    • limit (number, default: 10): Number of messages to retrieve
  21. Returns: List of messages with their content and metadata

  22. slack_get_thread_replies

  23. Get all replies in a message thread
  24. Required inputs:
    • channel_id (string): The channel containing the thread
    • thread_ts (string): Timestamp of the parent message
  25. Returns: List of replies with their content and metadata

  26. slack_get_users

  27. Get list of workspace users with basic profile information
  28. Optional inputs:
    • cursor (string): Pagination cursor for next page
    • limit (number, default: 100, max: 200): Maximum users to return
  29. Returns: List of users with their basic profiles

  30. slack_get_user_profile

  31. Get detailed profile information for a specific user
  32. Required inputs:
    • user_id (string): The user's ID
  33. Returns: Detailed user profile information

Setup

  1. Create a Slack App:
  2. Visit the Slack Apps page
  3. Click "Create New App"
  4. Choose "From scratch"
  5. Name your app and select your workspace

  6. Configure Bot Token Scopes: Navigate to "OAuth & Permissions" and add these scopes:

  7. channels:history - View messages and other content in public channels
  8. channels:read - View basic channel information
  9. chat:write - Send messages as the app
  10. reactions:write - Add emoji reactions to messages
  11. users:read - View users and their basic information

  12. Install App to Workspace:

  13. Click "Install to Workspace" and authorize the app
  14. Save the "Bot User OAuth Token" that starts with xoxb-

  15. 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"
      }
    }
  }
}

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"
      }
    }
  }
}

Troubleshooting

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

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.

[
  {
    "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"
  }
]