mcp-slack-crunchtools
Secure MCP server for Slack workspaces. Provides Claude Code (and other MCP clients) with read access to your Slack channels, messages, users, and files, and can send a message on your behalf.
Features
- Mostly read: 15 of the 17 tools only read and publish
readOnlyHint: true. The other two send a message and cancel a scheduled one; nothing edits or deletes existing content. - 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
httpxdirectly 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.
| Variable | Required | Default | Description |
|---|---|---|---|
SLACK_USER_TOKEN |
token mode | — | User OAuth token (xoxp-...) from a Slack app installed in the workspace. |
SLACK_COOKIE_TOKEN |
cookie mode | — | Browser session token (xoxc-...). Must be paired with SLACK_COOKIE_D. |
SLACK_COOKIE_D |
cookie mode | — | Value of the d cookie (xoxd-...) from the same browser session. Sent as a Cookie: header alongside SLACK_COOKIE_TOKEN. |
SLACK_ADD_MESSAGE_DELAY |
no | 3m |
How 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
| Tool | Description |
|---|---|
slack_auth_test |
Test connection and get token owner info |
slack_list_channels |
List workspace channels |
slack_get_channel_info |
Get channel details |
slack_get_channel_history |
Read channel messages |
slack_get_thread_replies |
Read thread replies |
slack_list_channel_members |
List channel members |
slack_search_messages |
Search messages |
slack_get_reactions |
Get message reactions |
slack_list_reactions |
List user's reactions |
slack_list_stars |
List starred items |
slack_get_user_info |
Get user details |
slack_list_users |
List workspace members |
slack_get_user_profile |
Get user profile |
slack_list_files |
List files (metadata only) |
slack_get_file_info |
Get file metadata |
slack_send_message |
Schedule a message SLACK_ADD_MESSAGE_DELAY ahead, or post it immediately when the delay is 0 (write) |
slack_cancel_scheduled_message |
Cancel a scheduled message before it sends (write) |
The two write tools need the chat:write scope in token mode.
Security
See SECURITY.md for the full security design document.
License
AGPL-3.0-or-later
Metadata
Release files for mcp-slack-crunchtools 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mcp_slack_crunchtools-0.3.0.tar.gz | 165.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_slack_crunchtools-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 194.8 kB
Release files / mcp_slack_crunchtools-0.3.0.tar.gz
| Download URL | mcp_slack_crunchtools-0.3.0.tar.gz |
|---|---|
| Size | 165.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d589359bc343b9d3ba1f7ee6e55e5354f5e68504160477a3a7b2e52ee1595c36
|
|
BLAKE2b-256 checksum How to use checksums |
8e1a6c604da3f9eb08f7f3513140e30cecade189dcc5f9ec52912b7967305dad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / mcp_slack_crunchtools-0.3.0-py3-none-any.whl
| Download URL | mcp_slack_crunchtools-0.3.0-py3-none-any.whl |
|---|---|
| Size | 29.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e4e9074f58505ec99c63f54439350e9ce293a4bcf1080492fd823a08328c7b05
|
|
BLAKE2b-256 checksum How to use checksums |
6ed9cf923d12f16d5a88b995583fa93be2cc38afae1913254027ede71fccc54d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency log