Suggest a server AI tools directory →

Slack MCP server

Last verified: 2026-09

Read channels and post messages.

Official reference Chat, mail & docs Needs a secret Claude Desktop, Cursor, Windsurf, Claude Code, VS Code

What it does

A Slack bot the model can use to list channels, read history, and post. It speaks as the bot user. Scope the bot to the channels you intend.

It sits in Chat, mail & docs: These servers act as the bot or the integration you install.

Good for

  • Read two channels you invited the bot to, not the whole workspace.
  • Search recent messages for a decision you know was posted.
  • Post as the bot only after a week of read-only.
  • Do not also give Gmail write in the same chat.

Tools

  • slack_list_channels / slack_get_users / slack_get_user_profile — Directory.
  • slack_get_channel_history / slack_get_thread_replies — Read.
  • slack_post_message / slack_reply_to_thread / slack_add_reaction — Write.

Config (Claude Desktop / Cursor / Windsurf)

Paste the JSON below. Same mcpServers shape. Replace placeholder paths and secrets. Windows paths look like C:\\Users\\you\\project, not /path/to. Host-side steps →

Claude Desktop

OSConfig file
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json (usually C:\Users\<you>\AppData\Roaming\Claude\)
Linux~/.config/Claude/claude_desktop_config.json

Cursor

ScopemacOS / LinuxWindows
This project.cursor/mcp.json in the repo root
This user~/.cursor/mcp.json %USERPROFILE%\.cursor\mcp.json

Windsurf

OSConfig file
macOS / Linux~/.codeium/windsurf/mcp_config.json
Windows%USERPROFILE%\.codeium\windsurf\mcp_config.json
{
  "mcpServers": {
    "slack": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-slack"
      ],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-...",
        "SLACK_TEAM_ID": "T..."
      }
    }
  }
}

Windsurf remote MCP: use serverUrl instead of url if the block below is HTTP.

One-liner: npx -y @modelcontextprotocol/server-slack

Secrets it wants: SLACK_BOT_TOKEN, SLACK_TEAM_ID

Source repo →

How to get started

  1. Create a Slack app with channels:history, chat:write, users:read. Install it to the workspace.
  2. Invite the bot to specific channels only.
  3. Set SLACK_BOT_TOKEN and SLACK_TEAM_ID. Restart. Ask it to list channels it can see.

Access risk

chat:write posts as the bot in every channel it joined. History can include customer data. Do not add it to #all-company.

When to skip it

Skip it for Discord/Telegram. Skip write scopes if you only want the model to search logs.

Instead: Discord, Telegram.

Vs alternatives

ServerOfficial?Needs a secret?Best for
SlackYesYesRead channels and post messages.
DiscordNoYesRead and send Discord messages.
TelegramNoYesSend and read Telegram via a bot.

More in Chat, mail & docs

All 18 in this category →

FAQ

Which scopes?

channels:history / groups:history on specific channels. chat:write is optional and public.

User token or bot?

The official server uses a bot token. Invite the bot to the rooms it should see.

Slack or Discord?

Whichever the team already lives in. Do not install both write tokens.

Can it read DMs?

Only if you grant those scopes and the bot is in those conversations. Don't.