Back to Directory/Communication

MCP Slack

Secure read-only MCP server for Slack workspaces

CommunicationPythonv0.1.2

mcp-slack-crunchtools

Secure read-only MCP server for Slack workspaces. Provides Claude Code (and other MCP clients) with access to your Slack channels, messages, users, and files without any write permissions.

Features

  • Read-only: 15 tools, all read-only. Never posts, edits, or deletes anything.
  • Secure: 6-layer security model (input validation, token handling, client hardening, output sanitization, runtime protection, supply chain security).
  • User OAuth Token: Uses xoxp- tokens for user-scoped access to your workspace.
  • No SDK dependency: Uses httpx directly for minimal, auditable HTTP calls.

Quick Start

Using uvx (Recommended)

claude mcp add mcp-slack-crunchtools \
    --env SLACK_USER_TOKEN=xoxp-your-token \
    -- uvx mcp-slack-crunchtools

Using Container

claude mcp add mcp-slack-crunchtools \
    --env SLACK_USER_TOKEN=xoxp-your-token \
    -- podman run -i --rm -e SLACK_USER_TOKEN quay.io/crunchtools/mcp-slack

Local Development

claude mcp add mcp-slack-crunchtools \
    --env SLACK_USER_TOKEN=xoxp-your-token \
    -- uv run mcp-slack-crunchtools

Setup

See CLAUDE.md for detailed instructions on creating a Slack app and obtaining a User OAuth Token.

Configuration

Authentication uses one of two mutually exclusive modes. The server picks cookie mode when both cookie variables are set, and token mode otherwise.

VariableRequiredDefaultDescription
SLACK_USER_TOKENtoken mode—User OAuth token (xoxp-...) from a Slack app installed in the workspace.
SLACK_COOKIE_TOKENcookie mode—Browser session token (xoxc-...). Must be paired with SLACK_COOKIE_D.
SLACK_COOKIE_Dcookie mode—Value of the d cookie (xoxd-...) from the same browser session. Sent as a Cookie: header alongside SLACK_COOKIE_TOKEN.
SLACK_ADD_MESSAGE_DELAYno3mHow far ahead outgoing messages are scheduled, giving you a window to cancel one. Duration string: 30s, 5m, 2h, or a bare integer for seconds. Set to 0, 0s, none, or false to disable scheduling and post immediately.

Which auth mode to use

Cookie mode is the working path for this deployment. Token mode requires a Slack app to be created and approved in the workspace; where that approval is not available, cookie mode is the only way to authenticate at all.

Cookie mode borrows an existing browser session rather than holding a credential issued to an application. That has consequences worth stating plainly:

  • Both values are live session credentials. Anything holding them can act as you in Slack, with your full access. Treat them exactly as you would your password.
  • They expire when the browser session does, so cookie mode needs periodic re-extraction. A sudden wave of auth failures usually means the session rotated, not that the server broke.
  • Slack does not issue these for programmatic use and can invalidate them at any time. Cookie mode is a workaround for the absence of an approved app, not a supported integration path.

Prefer SLACK_USER_TOKEN whenever a Slack app can actually be installed.

Tools

ToolDescription
slack_auth_testTest connection and get token owner info
slack_list_channelsList workspace channels
slack_get_channel_infoGet channel details
slack_get_channel_historyRead channel messages
slack_get_thread_repliesRead thread replies
slack_list_channel_membersList channel members
slack_search_messagesSearch messages
slack_get_reactionsGet message reactions
slack_list_reactionsList user's reactions
slack_list_starsList starred items
slack_get_user_infoGet user details
slack_list_usersList workspace members
slack_get_user_profileGet user profile
slack_list_filesList files (metadata only)
slack_get_file_infoGet file metadata

Security

See SECURITY.md for the full security design document.

License

AGPL-3.0-or-later

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
uvx mcp-slack-crunchtools

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-crunchtools-slack": {
      "command": "uvx",
      "args": [
        "mcp-slack-crunchtools"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

mcp-slack-crunchtoolspypi

Compatible MCP Clients

MCP Slack works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More