/ Directory / Playground / slack-mcp-server
● Community korotovsky ⚡ Instant

slack-mcp-server

by korotovsky · korotovsky/slack-mcp-server

The most powerful Slack MCP server — stealth mode, DMs, group DMs, unread messages, search, and Enterprise/GovSlack support.

slack-mcp-server is a Go-based MCP server providing 15 tools for Slack workspace interaction. Supports three auth modes: stealth (no permissions needed, uses xoxc/xoxd tokens), OAuth (xoxp), and bot (xoxb). Features include channel history with smart pagination, unread message fetching with @mention filtering, message search, DM/group DM support, reactions, user group management, and Enterprise/GovSlack compatibility.

Why use it

Key features

Live Demo

What it looks like in practice

slack-mcp-server-2.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "slack-mcp-server-2": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/korotovsky/slack-mcp-server"
      ]
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "slack-mcp-server-2": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/korotovsky/slack-mcp-server"
      ]
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "slack-mcp-server-2": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/korotovsky/slack-mcp-server"
      ]
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "slack-mcp-server-2": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/korotovsky/slack-mcp-server"
      ]
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "slack-mcp-server-2",
      "command": "TODO",
      "args": [
        "See README: https://github.com/korotovsky/slack-mcp-server"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "slack-mcp-server-2": {
      "command": {
        "path": "TODO",
        "args": [
          "See README: https://github.com/korotovsky/slack-mcp-server"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add slack-mcp-server-2 -- TODO 'See README: https://github.com/korotovsky/slack-mcp-server'

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use slack-mcp-server

How to catch up on unread Slack messages with AI assistance

👤 Busy professionals drowning in Slack notifications ⏱ ~10 min beginner

When to use: Monday morning or after PTO — you have hundreds of unread messages across channels.

Prerequisites
  • Slack token (xoxc/xoxd for stealth, xoxp for OAuth) — Extract from browser cookies or create via Slack app settings
Flow
  1. Get unread summary
    Show me all my unread Slack messages, prioritized by @mentions first, then channels with most activity.✓ Copied
    → Prioritized list of unread channels with message counts and highlights
  2. Read key threads
    Show me the full thread for the @mention in #engineering. Summarize what they need from me.✓ Copied
    → Thread content with action items extracted
  3. Mark as read
    Mark #random and #general as read — I'll skip those.✓ Copied
    → Channels marked as read

Outcome: Inbox zero on Slack in 10 minutes instead of 30.

Pitfalls
  • Stealth mode tokens expire periodically — Re-extract xoxc/xoxd tokens from your browser when they expire

Search Slack history for decisions and context

👤 Anyone who needs to find a specific conversation or decision from the past ⏱ ~5 min beginner

When to use: You need to find that one Slack message where a decision was made weeks ago.

Prerequisites
  • Slack token configured — Set SLACK_TOKEN environment variable
Flow
  1. Search messages
    Search Slack for messages about 'API redesign' from the last month in engineering channels.✓ Copied
    → Matching messages with timestamps, authors, and context
  2. Get the full thread
    Show me the full thread where the final decision was made.✓ Copied
    → Complete thread with all replies

Outcome: Found the specific conversation with the context you needed.

Pitfalls
  • Search only works within channels you have access to — If a message was in a private channel, you need to be a member

Combinations

Pair with other MCPs for X10 leverage

slack-mcp-server-2 + github

Cross-reference Slack discussions with GitHub PRs and issues

Search Slack for mentions of PR #142, then get the PR details from GitHub and summarize the full context.✓ Copied
slack-mcp-server-2 + filesystem

Export Slack conversations to files for documentation

Export the full #architecture-decisions channel history to ~/docs/architecture-decisions.md.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
conversations_history channel: str, limit?: int Fetch messages from a channel or DM 1 Slack API call
conversations_unreads none Get all unread messages across channels Multiple Slack API calls
conversations_search_messages query: str, filters? Search messages across workspace 1 Slack API call
conversations_replies channel: str, ts: str Get thread replies 1 Slack API call
channels_list none List workspace channels 1 Slack API call
users_search query: str Find users by name or email 1 Slack API call
conversations_mark channel: str, ts: str Mark a channel as read (disabled by default) 1 Slack API call

Cost & Limits

What this costs to run

API quota
Slack API rate limits: varies by method, typically 50+ req/min for most endpoints
Tokens per call
300–2000 tokens per tool call
Monetary
Free — Slack API is free. Enterprise features require Slack Enterprise Grid.
Tip
Use conversations_unreads for efficient catch-up instead of reading every channel individually.

Security

Permissions, secrets, blast radius

Credential storage: Slack tokens in SLACK_TOKEN environment variable. For stealth mode, extract xoxc + xoxd from browser.
Data egress: All calls to Slack API (api.slack.com). Supports proxy configuration.

Troubleshooting

Common errors and fixes

401 Invalid auth

Your Slack token expired or is invalid. Re-extract browser tokens (stealth) or regenerate the OAuth/bot token.

Verify: curl -H 'Authorization: Bearer $SLACK_TOKEN' https://slack.com/api/auth.test
Channel not found

Use the channel name with # (e.g., #general) or the channel ID. Run channels_list to find the correct identifier.

Verify: channels_list
Rate limited

Slack has per-method rate limits. The server handles backoff automatically, but reduce concurrent requests.

Verify: Check server logs for retry messages

Alternatives

slack-mcp-server vs others

AlternativeWhen to use it insteadTradeoff
Discord MCPYour team uses Discord instead of SlackDifferent platform, similar coverage

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills