by korotovsky
The most powerful MCP Slack Server with no permission requirements, Apps support, multiple transports Stdio and SSE, DMs, Group DMs and smart history fetch logic.
Slack MCP Server is a powerful Model Context Protocol (MCP) server designed for Slack Workspaces. It enables seamless interaction with Slack, offering advanced features for fetching messages, managing conversations, and accessing channel information without requiring extensive permissions or bot installations.
To use Slack MCP Server, you typically integrate it with an MCP client. The server supports both Stdio and SSE transports, allowing for flexible integration. You can configure it to operate in stealth mode (no permissions needed) or OAuth mode (using secure tokens). The project provides detailed documentation for authentication setup, installation, and configuration.
Q: Does Slack MCP Server require Slack app permissions? A: No, it can operate in a "stealth mode" without requiring additional permissions or bot installations. It also supports an OAuth mode for secure token-based access.
Q: What kind of data can I fetch with Slack MCP Server? A: You can fetch messages from channels, threads, direct messages, and group direct messages. It also supports fetching user information and channel lists.
Q: How does the "Smart History" feature work? A: Smart History allows you to fetch messages with pagination, either by specifying a date range (e.g., last 7 days) or a specific message count.
Q: Can I use Slack MCP Server with Enterprise Slack? A: Yes, it supports integration with Enterprise Slack setups.
Q: What transports does Slack MCP Server support? A: It supports both Stdio and SSE transports, making it compatible with various MCP clients.
Model Context Protocol (MCP) server for Slack Workspaces. The most powerful MCP Slack server — supports Stdio and SSE transports, proxy settings, DMs, Group DMs, Smart History fetch (by date or count), may work via OAuth or in complete stealth mode with no permissions and scopes in Workspace 😏.
[!IMPORTANT]
We need your support! Each month, over 30,000 engineers visit this repository, and more than 9,000 are already using it.If you appreciate the work our contributors have put into this project, please consider giving the repository a star.
This feature-rich Slack MCP Server has:
#Name
@Lookup
: Fetch messages from channels and threads, including activity messages, and retrieve channels using their names (e.g., #general) as well as their IDs.conversations_history
channel_id
(string): ID of the channel in format Cxxxxxxxxxx or its name starting with #... or @... aka #general or @username_dm.include_activity_messages
(bool, default: false): If true, the response will include activity messages such as 'channel_join' or 'channel_leave'. Default is boolean false.cursor
(string, default: ""): Cursor for pagination. Use the value of the last row and column in the response as next_cursor field returned from the previous request.limit
(string, default: 28): Limit of messages to fetch.conversations_replies
channel_id
(string): ID of the channel in format Cxxxxxxxxxx or its name starting with #... or @... aka #general or @username_dm.thread_ts
(string): Unique identifier of either a thread’s parent message or a message in the thread. ts must be the timestamp in format 1234567890.123456 of an existing message with 0 or more replies.include_activity_messages
(bool, default: false): If true, the response will include activity messages such as 'channel_join' or 'channel_leave'. Default is boolean false.cursor
(string, default: ""): Cursor for pagination. Use the value of the last row and column in the response as next_cursor field returned from the previous request.limit
(string, default: 28): Limit of messages to fetch.channels_list
channel_types
(string): Comma-separated channel types. Allowed values: 'mpim', 'im', 'public_channel', 'private_channel'. Example: 'public_channel,private_channel,im'.sort
(string): Type of sorting. Allowed values: 'popularity' - sort by number of members/participants in each channel.limit
(number, default: 100): Limit of channels to fetch.cursor
(string): Cursor for pagination. Use the value of the last row and column in the response as next_cursor field returned from the previous request.# Run the inspector with stdio transport
npx @modelcontextprotocol/inspector go run mcp/mcp-server.go --transport stdio
# View logs
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
Licensed under MIT - see LICENSE file. This is not an official Slack product.
Reviews feature coming soon
Stay tuned for community discussions and feedback