CommunicationFreeactiveReviewed by MCPIndex

Slack MCP

Connect Claude or Cursor to Slack channels, threads, and messages with bidirectional read/write through a scoped bot token.

Looking for more MCP servers? Browse the full MCP tools directory or explore more tools in Communication.

Quick overview

Slack is not a chat application — it is an event bus with a human-readable serialization layer, and the Slack MCP server turns your agent into a first-class consumer and producer on that bus. The architectural shift most engineers underestimate: webhook automation (Zapier, IFTTT, incoming webhooks) is unidirectional and stateless — it fires payloads into the void with zero access to conversational state. The MCP transport is bidirectional and stateful: the agent reads channel history, thread context, and reactions BEFORE deciding what to post, which collapses the entire category of notification-spam automation into contextual intervention. With tools like conversations_history, chat_postMessage, and users_list, Claude gains full workspace situational awareness — standup summaries drafted from actual thread sentiment, incident channels triaged by reading the last 50 messages instead of paging a human at 3 AM. The catch nobody documents: Slack rate limits are per-method per-workspace, and an agent in an enthusiastic reasoning loop can burn the Tier 2 posting budget in minutes. Scope the bot correctly or your first production run will be your last.

What this MCP server is best for

  • Slack MCP is useful when you want to extend an AI assistant with real tools and live system access.
  • It helps move from chat-only answers to real actions such as reading data, managing systems, or retrieving current information.
  • It is best for developer and technical workflows where AI needs controlled access to external tools or services.

When to choose it

Choose Slack MCP when you want an MCP server focused on Communication and need tighter integration with your existing tools.

Good fit

slackmessagingnotificationsteam-communicationchatopsautomation

Slack MCP Configuration

Use the following configuration as a starting point for Claude Desktop or any compatible MCP client, then replace placeholder credentials with your own values.

claude_desktop_config.json
{
  "mcpServers": {
    "slack": {
      "command": "npx",
      "args": ["-y", "slack-mcp-server"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-bot-token",
        "SLACK_TEAM_ID": "T01234567"
      }
    }
  }
}

How to set up Slack MCP

These setup steps cover the typical installation flow for this MCP server.

  1. 1

    Create a Slack app at api.slack.com/apps from a manifest — minimum bot scopes: channels:read, channels:history, chat:write, users:read. Add the groups: variants only if private channels are genuinely in scope.

  2. 2

    Install the app to your workspace and copy the Bot User OAuth Token (xoxb-...) — never the xoxp user token, for reasons explained below.

  3. 3

    Pro-Tip: 90% of broken Slack MCP installs trace back to one fatal flaw — a bot token cannot see a channel it is not a member of, and the API returns soft failures that some servers swallow into empty responses. Run /invite @YourBotName in EVERY target channel before testing, or every history read silently returns nothing and the agent concludes the channel is dead.

  4. 4

    Add the server config with SLACK_BOT_TOKEN and SLACK_TEAM_ID environment variables, then restart your client so the stdio process inherits the environment.

  5. 5

    If your Slack app has token rotation enabled, disable it for this bot or wire a refresh daemon — rotated tokens expire after 12 hours and the MCP server will not renew them mid-session.

  6. 6

    Smoke test: Summarize the last 20 messages in #engineering into three bullet points. If the agent asks which channel you mean, your channels_list and users_list tools are working.

Frequently asked questions

Common questions for Slack MCP.

Why does the agent claim a message was posted but nothing appears in the channel?

The silent failure of Slack automation, with two root causes. First: the bot was never invited — chat.postMessage returns not_in_channel, and several community servers map non-ok responses into a generic success object, so the agent reports victory into the void. Second: a blocks payload exceeding Slack limits (50 blocks, 3000 characters per text field) is rejected with invalid_blocks logged only to the server stderr, invisible to the agent. The engineering fix: invite the bot to every target channel, always populate the plain text field (Slack requires it as notification fallback anyway), and tail the MCP server logs during your first week of operation.

Bot token (xoxb) vs user token (xoxp) — does it matter?

Critically. A bot token acts as a distinct bot identity with a clean audit trail. A user token acts AS YOU — every agent message appears under your name, your account absorbs the rate-limit hits, and your compliance team loses the ability to distinguish human from machine action. Never hand an agent an xoxp token.

Can it read direct messages?

Only with im:history scope and only in DMs where the bot is a participant. Workspace-wide DM access is architecturally off-limits — this is a Slack platform constraint, not a server limitation.

How do rate limits affect agent loops?

chat.postMessage has a special limit of roughly one message per second per channel, plus workspace-wide Tier 2 caps. Bursts receive HTTP 429 with a Retry-After header. Instruct the agent to batch updates into single messages instead of streaming sentence-by-sentence.

Slack MCP vs Competitors

FeatureSlack MCPCompetitor
Trigger latency Realtime — the agent reads and reacts inside the session 1 to 15 minute polling intervals on standard Zapier tiers
Complex branching logic Lives in the model reasoning loop — unlimited conditional branches Hard-coded paths; every branch is billable configuration
Conversational context before acting Reads full thread history and reactions natively Stateless payload forwarding with no memory
Bidirectional interaction Reads and writes in a single session One-way by design
Non-technical setup Requires app creation, scopes, and token management GUI-first, zero code, five minutes

Related Guides