50+ launch partners including Anthropic, OpenAI, Google, Perplexity, Cursor, Vercel, Notion, Dropbox. 25x growth in MCP tool calls since Oct limited release. Strongest partner ecosystem of any MCP server.
Slack MCP Server
activeCommunity MCP server for Slack alongside official Slack MCP (GA Feb 2026). Enables agent access to channel search, messaging, and coordination.
Where it wins
Official Slack MCP launched Feb 2026 with GA support
Strongest partner ecosystem: 50+ AI companies (OpenAI, Anthropic, Google, Cursor, Vercel, Notion, Dropbox)
Granular OAuth scopes, admin oversight, audit logging
LLM-native design: tools return natural language, not raw JSON
Real-time Search API launched alongside MCP
Where to be skeptical
Communication is complementary — needs operating surface first
Gaps: no reactions, no scheduling support
Marketplace gating could limit custom agent adoption
Editorial verdict
#10 in product-business-development. Communication lane — real but early. korotovsky community server at 1,461 stars shows genuine developer adoption. Official GA with 50+ partners (Anthropic, Google, OpenAI, Perplexity). PulseMCP 1.6K/wk (#602 weekly), 23.7K all-time. Multiple independent publications covered GA launch (KMWorld, SmallBizTrends, Salesforce Ben). 25x growth claim is selfReported with no disclosed baseline.
Videos
Reviews, tutorials, and comparisons from the community.
Summarize any Slack channel instantly with MCP + ToolHive. #mcp #ai #slack
Connect Slack to Claude with MCP
How To Connect To Slack MCP Server #mcp #tutorial #ai #llm #slack #modelcontextprotocol
Related
Exa MCP Server
87Official Exa MCP for fast web search and crawling when the workflow is search-first rather than page-ops-first.
Notion MCP Server
86Official Notion MCP server with hosted OAuth, token-optimized Markdown responses, and 22 tools for page/database/search operations.
MCP Atlassian
85Community-built MCP server for Jira and Confluence with 72 tools. Dual implementation alongside official Atlassian Rovo MCP (now GA).
PostHog MCP
84Official PostHog MCP — product analytics, feature flags, experiments, error tracking, and usage insights via MCP. Integrated into PostHog monorepo Jan 2026. #5 all-time globally on PulseMCP (5.7M visits).
Public evidence
PulseMCP shows 1.6K/wk and #859 globally as of 2026-03-19. Previous catalog claims of 35.9K npm/week and 25x usage spike cannot be confirmed from npm API (@slack/mcp-server returns N/A) or PulseMCP. Do not republish the 35.9K figure without re-verification. What is confirmed: Slack official MCP exists at mcp.slack.com/mcp, uses OAuth, classified as 'Top Pick' on PulseMCP.
Independent comparison ranking official Slack MCP above community for production use. Also flagged: 43% of MCP servers have command injection vulnerabilities — strengthens case for official servers.
Four independent publications covered the GA launch: KMWorld (knowledge management), SmallBizTrends, Salesforce Ben (ecosystem media), Flagship.cc. Confirms the release is real and industry-noted.
By far the highest-traction Slack MCP repo. Active development, substantial fork count indicates real usage. GovSlack support suggests enterprise adoption. 'Most powerful MCP Slack Server with no permission requirements.'
Raw GitHub source
GitHub README peek
Constrained peek so you can sanity-check the source material without leaving the site.
Slack MCP Server
Model Context Protocol (MCP) server for Slack Workspaces. The most powerful MCP Slack server — supports Stdio, SSE and HTTP 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:
- Stealth and OAuth Modes: Run the server without requiring additional permissions or bot installations (stealth mode), or use secure OAuth tokens for access without needing to refresh or extract tokens from the browser (OAuth mode).
- Enterprise Workspaces Support: Possibility to integrate with Enterprise Slack setups.
- Channel and Thread Support with
#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. - Smart History: Fetch messages with pagination by date (d1, 7d, 1m) or message count.
- Unread Messages: Get all unread messages across channels efficiently with priority sorting (DMs > partner channels > internal), @mention filtering, and mark-as-read support.
- Search Messages: Search messages in channels, threads, and DMs using various filters like date, user, and content.
- Safe Message Posting: The
conversations_add_messagetool is disabled by default for safety. Enable it via an environment variable, with optional channel restrictions. - DM and Group DM support: Retrieve direct messages and group direct messages.
- Embedded user information: Embed user information in messages, for better context.
- Cache support: Cache users and channels for faster access.
- Stdio/SSE/HTTP Transports & Proxy Support: Use the server with any MCP client that supports Stdio, SSE or HTTP transports, and configure it to route outgoing requests through a proxy if needed.
Analytics Demo

Add Message Demo

Tools
1. 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
- Parameters:
channel_id(string, required): -channel_id(string): ID of the channel in format Cxxxxxxxxxx or its name starting with#...or@...aka#generalor@username_dm.include_activity_messages(boolean, default: false): If true, the response will include activity messages such aschannel_joinorchannel_leave. Default is boolean false.cursor(string, optional): 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: "1d"): Limit of messages to fetch in format of maximum ranges of time (e.g. 1d - 1 day, 1w - 1 week, 30d - 30 days, 90d - 90 days which is a default limit for free tier history) or number of messages (e.g. 50). Must be empty when 'cursor' is provided.
2. 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.
- Parameters:
channel_id(string, required): ID of the channel in formatCxxxxxxxxxxor its name starting with#...or@...aka#generalor@username_dm.thread_ts(string, required): Unique identifier of either a thread’s parent message or a message in the thread. ts must be the timestamp in format1234567890.123456of an existing message with 0 or more replies.include_activity_messages(boolean, default: false): If true, the response will include activity messages such as 'channel_join' or 'channel_leave'. Default is boolean false.cursor(string, optional): 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: "1d"): Limit of messages to fetch in format of maximum ranges of time (e.g. 1d - 1 day, 1w - 1 week, 30d - 30 days, 90d - 90 days which is a default limit for free tier history) or number of messages (e.g. 50). Must be empty when 'cursor' is provided.
3. 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.
Note: Posting messages is disabled by default for safety. To enable, set the
SLACK_MCP_ADD_MESSAGE_TOOLenvironment variable. If set to a comma-separated list of channel IDs, posting is enabled only for those specific channels. See the Environment Variables section below for details.
- Parameters:
channel_id(string, required): ID of the channel in formatCxxxxxxxxxxor its name starting with#...or@...aka#generalor@username_dm.thread_ts(string, optional): Unique identifier of either a thread’s parent message or a message in the thread_ts must be the timestamp in format1234567890.123456of an existing message with 0 or more replies. Optional, if not provided the message will be added to the channel itself, otherwise it will be added to the thread.payload(string, required): Message payload in specified content_type format. Example: 'Hello, world!' for text/plain or '# Hello, world!' for text/markdown.content_type(string, default: "text/markdown"): Content type of the message. Default is 'text/markdown'. Allowed values: 'text/markdown', 'text/plain'.
4. conversations_search_messages
Search messages in a public channel, private channel, or direct message (DM, or IM) conversation using filters. All filters are optional, if not provided then search_query is required.
Note: This tool is not available when using bot tokens (
xoxb-*). Bot tokens cannot use thesearch.messagesAPI.
- Parameters:
search_query(string, optional): Search query to filter messages. Example: 'marketing report' or full URL of Slack message e.g. 'https://slack.com/archives/C1234567890/p1234567890123456', then the tool will return a single message matching given URL, herewith all other parameters will be ignored.filter_in_channel(string, optional): Filter messages in a specific channel by its ID or name. Example:C1234567890or#general. If not provided, all channels will be searched.filter_in_im_or_mpim(string, optional): Filter messages in a direct message (DM) or multi-person direct message (MPIM) conversation by its ID or name. Example:D1234567890or@username_dm. If not provided, all DMs and MPIMs will be searched.filter_users_with(string, optional): Filter messages with a specific user by their ID or display name in threads and DMs. Example:U1234567890or@username. If not provided, all threads and DMs will be searched.filter_users_from(string, optional): Filter messages from a specific user by their ID or display name. Example:U1234567890or@username. If not provided, all users will be searched.filter_date_before(string, optional): Filter messages sent before a specific date in formatYYYY-MM-DD. Example:2023-10-01,July,YesterdayorToday. If not provided, all dates will be searched.filter_date_after(string, optional): Filter messages sent after a specific date in formatYYYY-MM-DD. Example:2023-10-01,July,YesterdayorToday. If not provided, all dates will be searched.filter_date_on(string, optional): Filter messages sent on a specific date in formatYYYY-MM-DD. Example:2023-10-01,July,YesterdayorToday. If not provided, all dates will be searched.filter_date_during(string, optional): Filter messages sent during a specific period in formatYYYY-MM-DD. Example:July,YesterdayorToday. If not provided, all dates will be searched.filter_threads_only(boolean, default: false): If true, the response will include only messages from threads. 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(number, default: 20): The maximum number of items to return. Must be an integer between 1 and 100.
5. channels_list:
Get list of channels
- Parameters:
channel_types(string, required): Comma-separated channel types. Allowed values:mpim,im,public_channel,private_channel. Example:public_channel,private_channel,imsort(string, optional): Type of sorting. Allowed values:popularity- sort by number of members/participants in each channel.limit(number, default: 100): The maximum number of items to return. Must be an integer between 1 and 1000 (maximum 999).cursor(string, optional): Cursor for pagination. Use the value of the last row and column in the response as next_cursor field returned from the previous request.
6. reactions_add:
Add an emoji reaction to a message in a public channel, private channel, or direct message (DM, or IM) conversation.
Note: Adding reactions is disabled by default for safety. To enable, set the
SLACK_MCP_ADD_MESSAGE_TOOLenvironment variable. If set to a comma-separated list of channel IDs, reactions are enabled only for those specific channels. See the Environment Variables section below for details.
- Parameters:
channel_id(string, required): ID of the channel in formatCxxxxxxxxxxor its name starting with#...or@...aka#generalor@username_dm.timestamp(string, required): Timestamp of the message to add reaction to, in format1234567890.123456.emoji(string, required): The name of the emoji to add as a reaction (without colons). Example:thumbsup,heart,rocket.
7. reactions_remove:
Remove an emoji reaction from a message in a public channel, private channel, or direct message (DM, or IM) conversation.
Note: Removing reactions follows the same permission model as
reactions_add. To enable, set theSLACK_MCP_ADD_MESSAGE_TOOLenvironment variable.
- Parameters:
channel_id(string, required): ID of the channel in formatCxxxxxxxxxxor its name starting with#...or@...aka#generalor@username_dm.timestamp(string, required): Timestamp of the message to remove reaction from, in format1234567890.123456.emoji(string, required): The name of the emoji to remove as a reaction (without colons). Example:thumbsup,heart,rocket.
8. users_search:
Search for users by name, email, or display name. Returns user details and DM channel ID if available.
Note: For OAuth tokens (
xoxp/xoxb), this tool searches the local users cache using pattern matching. For browser session tokens (xoxc/xoxd), it uses the Slack edge API for real-time search.
-
Parameters:
query(string, required): Search query - matches against real name, display name, username, or email.limit(number, default: 10): Maximum number of results to return (1-100).
-
Returns: CSV with fields:
UserID: User ID (e.g.,U1234567890)UserName: Slack usernameRealName: User's real nameDisplayName: User's display nameEmail: User's email addressTitle: User's job titleDMChannelID: DM channel ID if available in cache (for quick messaging)
9. usergroups_list:
List all user groups (subteams) in the workspace.
-
Parameters:
include_users(boolean, default: false): Include list of user IDs in each group.include_count(boolean, default: true): Include user count for each group.include_disabled(boolean, default: false): Include disabled/archived groups.
-
Returns: CSV with fields: id, name, handle, description, user_count, is_external
Required OAuth scopes:
usergroups:read
10. usergroups_create:
Create a new user group in the workspace.