Reading is the whole surface by default: history, threads, search, unreads. Writing has to be switched on with an environment variable, and it accepts a channel whitelist rather than an all-or-nothing flag, so an agent can be allowed into one channel and nowhere else. The other thing to decide up front is which credential to use: browser session tokens need no app install and unlock the Save for Later tools, while OAuth tokens are the ones that survive a browser logout.
A Slack server that works against a workspace either through OAuth tokens or through a browser session, with channels, group DMs and direct messages all reachable, and message posting off unless you turn it on.
- Channel and DM history with smart pagination — by count, or by a window like 1d, 7d or 1m — conversations_history
- A thread read in full from its parent message — conversations_replies
- Message search across channels, threads and DMs, filtered by date, user or content — conversations_search_messages
- The channel directory, including public and private channels, DMs and group DMs, addressable by #name as well as by id — channels_list
- Unread messages across the workspace with priority sorting and @mention filtering, and a mark-as-read that stays off unless enabled — conversations_unreads, conversations_mark
- Messages posted, off by default and enabled per workspace or per whitelisted channel — conversations_add_message
- Reactions added and removed — reactions_add, reactions_remove
- People and groups: user lookup, user groups listed, created, updated, their membership changed, and your own groups — users_search, usergroups_list, usergroups_create, usergroups_update, usergroups_users_update, usergroups_me
- The Save for Later panel read and managed — items listed, marked complete or given a due date, and completed ones cleared — saved_list, saved_update, saved_clear_completed
- Attachment contents fetched when that tool is switched on — attachment_get_data
- Two directory resources over the workspace metadata, so channels can be read as a CSV listing rather than a tool call
One of three credentials, in priority order: a user OAuth token in SLACK_MCP_XOXP_TOKEN, a bot token in SLACK_MCP_XOXB_TOKEN, or the browser session pair SLACK_MCP_XOXC_TOKEN and SLACK_MCP_XOXD_TOKEN. The OAuth route needs a Slack app with the history, read, write and search scopes for the conversation types you want. Writing is gated separately: SLACK_MCP_ADD_MESSAGE_TOOL enables posting for all channels or a whitelist of ids, SLACK_MCP_MARK_TOOL enables marking as read, SLACK_MCP_ATTACHMENT_TOOL enables attachment fetching, and SLACK_MCP_ENABLED_TOOLS names exactly which tools to register. The Save for Later tools work only with browser session tokens. Stdio, SSE and HTTP transports are all supported, with proxy settings if outgoing requests need one.
One command plus a key — npx -y slack-mcp-server@latest --transport stdio, then supply credentials
