Skip to main content
Plugin ID: slack | Auth: OAuth2 (provider id slack) | Scopes: channels:read, chat:write, groups:read Handlers call Slack’s Web API at https://slack.com/api/<method>. List uses conversations.list with types=public_channel,private_channel and exclude_archived=true; post uses chat.postMessage and respects thread_ts when supplied. The destructive messages.post tool elicits user approval before sending — denied approvals throw before any API call is made.

Tools

slack.channels.list

Name: List Channels List Slack channels accessible to the bot.
ParameterTypeRequiredDefaultDescription
limitintegerNo50Max channels to return
Output:
{
  "channels": [
    {
      "id": "C01ABC23DEF",
      "name": "engineering",
      "topic": "Engineering discussions",
      "memberCount": 42
    }
  ]
}

slack.messages.post

Name: Post Message | Destructive: No Post a new message to a Slack channel via chat.postMessage. Additive write — creates new content; does not delete or overwrite existing data. The MCP host presents the tool call to the user for approval before invoking.
ParameterTypeRequiredDescription
channelstringYesChannel ID (e.g. C0123456789, preferred) or channel name with leading # (e.g. #general). Bare names without # are rejected by Slack with channel_not_found.
textstringYesMessage body. Must be non-empty (Slack returns no_text otherwise).
threadTsstringNoParent message ts to reply in-thread.
Output:
{
  "ts": "1705312800.000100",
  "channel": "C01ABC23DEF"
}