Slack MCP Server

Official

Your assistant inside the workspace — read channels, search history, post messages and tame the noise.

Local serverstdioTypeScriptMIT 63.0k

What is the Slack MCP server?

Slack is where decisions get made and then immediately buried. The Slack MCP server gives your assistant a line into the workspace — listing channels, reading history, posting messages, replying in threads and reacting — which turns "scroll back through three weeks of #engineering" into a question you can just ask.

Summarisation is the headline act. "What happened in #incidents this week?" produces a digest with the noise stripped out; "what did we decide about the pricing change?" pulls the relevant exchange from a channel you'd have skimmed past. For anyone returning from leave to four-digit unread counts, this alone justifies the setup. Posting works too — the assistant can draft an update in context and, with your approval, deliver it to the right channel or thread.

Setup goes through a Slack app: create one at api.slack.com, grant bot-token scopes (channels:read, channels:history, chat:write and friends), install it to the workspace and copy the xoxb- token into the server config. Ten minutes, mildly bureaucratic, entirely one-time. Note that the bot sees only channels it's been invited to — a natural scoping mechanism worth using deliberately rather than inviting it everywhere.

The original Anthropic reference implementation is archived but functional; community successors (korotovsky's slack-mcp-server notably) extend it with search modes, DM support and Enterprise workarounds. For most teams the reference server's read-summarise-post loop covers the daily value: fewer tabs, fewer scrollbacks, decisions surfaced instead of excavated.

Scoping the bot properly

  • channels:history only covers public channels. Private channels need groups:history plus an explicit invite, and DMs need im:history — miss a scope and the tool returns an empty result rather than a permissions error, which looks identical to a quiet channel.
  • Use SLACK_CHANNEL_IDS as an allowlist even when the bot lives in only a handful of places. It keeps the channel listing small, which measurably reduces the assistant's tendency to wander.
  • History comes back with user IDs, not display names, so expect a follow-up lookup. Fetching the member list once per session beats resolving names message by message.
  • Slack rate-limits per method and per app tier, and newer non-Marketplace apps get a far tighter allowance on conversations history than the classic tiers. Page long backfills deliberately instead of hammering.

What you can do with it

Channel digests

Condense a week of a busy channel into the five things that mattered.

Decision retrieval

Find where something was agreed and quote the actual exchange.

Drafted updates

Compose status updates in context and post them after your approval.

Available tools

ToolWhat it does
slack_list_channelsList channels the bot can see
slack_get_channel_historyRead recent messages from a channel
slack_post_messagePost a message to a channel
slack_reply_to_threadReply within a thread
slack_add_reactionReact to a message with an emoji
slack_get_thread_repliesRead a full thread
slack_get_users / slack_get_user_profileLook up workspace members

How to install the Slack MCP server

{
  "mcpServers": {
    "slack": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-slack"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-bot-token",
        "SLACK_TEAM_ID": "T01234567"
      }
    }
  }
}

Create a Slack app with bot scopes (channels:read, channels:history, chat:write, reactions:write, users:read), install to workspace, copy the bot token.

Configuration

A Slack app with bot-token scopes installed to your workspace. The bot only sees channels it's invited to.

VariableDescriptionRequired
SLACK_BOT_TOKENBot user OAuth token from your Slack appe.g. xoxb-...Yes
SLACK_TEAM_IDWorkspace/team IDe.g. T01234567Yes
SLACK_CHANNEL_IDSOptional comma-separated channel allowlistOptional

Example prompts to try

  • Summarise the last week of #incidents — what broke, what's resolved, what's still open?
  • Find the thread where we discussed the API rate-limit change and summarise the conclusion.
  • Draft a release announcement for #general based on this changelog, then post it.

Frequently asked questions

The reference server works through a bot token, which sees public channels it's been added to — not your personal DMs. Some community servers support user-token modes with broader visibility; treat those scopes as the sensitive credentials they are.