Slack MCP Server
Slack workspace interactions via Stdio, SSE, and HTTP for message history and search.
Data last scanned today · Reviewed today
Overview
This implementation provides a bridge between MCP-compliant clients and Slack workspaces, allowing users to search, list, and read messages across channels, threads, and direct messages. It features smart history retrieval with date or count-based pagination and priority sorting for unread messages. Developers can access workspace data using channel names or IDs, while benefiting from built-in caching for users and channels to ensure performance. The server supports both OAuth-based authentication and a stealth mode that avoids traditional bot permission flows. It offers flexible deployment through Stdio, SSE, or HTTP, and includes optional proxy support. While the server includes functionality for posting messages, this capability is disabled by default to prioritize user control over write operations.
Our verdict
This project currently holds a security score of 50/100, which designates it as a high-risk tool. This assessment is driven by the fact that it is a community-maintained repository without an official vendor security review, and several critical aspects, such as authentication methods and read-only mode behavior, remain unverified by external auditors. Due to the sensitive nature of workspace access, potential users should proceed with caution and verify the codebase manually before deployment in corporate environments.
- Supports Stdio, SSE, and HTTP transport layers
- Zero direct dependencies minimize supply-chain surface area
- Smart history pagination supports date-based filtering
- Message posting is disabled by default for safety
- High-risk security score due to lack of official audit
- Authentication methods have not been independently verified
- Not maintained by the official Slack organization
Tools
| Tool | Description | Risk |
|---|---|---|
| conversations_history | Get messages from the channel (or DM) by channel_id, the last row/column in the response is used as 'cursor' parameter for pagination if not empty | low |
| conversations_replies | Get a thread of messages posted to a conversation by channelID and thread_ts, the last row/column in the response is used as cursor parameter for pagination if not empty. | low |
| conversations_add_message | Add a message to a public channel, private channel, or direct message (DM, or IM) conversation by channel_id and thread_ts. | medium |
| conversations_search_messages | Search messages in a public channel, private channel, or direct message (DM, or IM) conversation using filters. | low |
| channels_list | Get list of channels | low |
| reactions_add | Add an emoji reaction to a message in a public channel, private channel, or direct message (DM, or IM) conversation. | medium |
| reactions_remove | Remove an emoji reaction from a message in a public channel, private channel, or direct message (DM, or IM) conversation. | medium |
| users_search | Search for users by name, email, or display name. | low |
| usergroups_list | List all user groups (subteams) in the workspace. | low |
| usergroups_create | Create a new user group in the workspace. | medium |
Compatibility
| Client | Local | Docker | Remote | Read-only |
|---|---|---|---|---|
| Claude Desktop | ||||
| Cursor | ||||
| VS Code | ||||
| Windsurf | ||||
| ChatGPT |
Frequently asked questions
›Can I use this server without installing a Slack bot?
Yes, you can operate the server in stealth mode, which does not require additional permissions or specific bot installations in your Slack workspace.
›Is sending messages enabled by default?
No, the message posting tool is disabled by default for safety. You must set the SLACK_MCP_ADD_MESSAGE_TOOL environment variable to enable it.
›Can I restrict message posting to specific channels?
Yes, you can configure the SLACK_MCP_ADD_MESSAGE_TOOL environment variable with a comma-separated list of specific channel IDs to limit where the server is allowed to post messages.
›Does this server support different connection types?
Yes, it supports Stdio, SSE, and HTTP transports, and includes configuration options for routing outgoing requests through a proxy.
›How does message history pagination work?
You can fetch history using either a time-based range, such as 1d or 1m, or a specific message count. For multi-page results, use the next_cursor value returned from the previous request.
›Does this work with Enterprise Slack setups?
Yes, the server is designed to be compatible with Enterprise Slack workspace integrations.
Alternatives
Changelog
Badge
Maintain this server? Add the live badge to your README.