slack-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOGS_CHANNEL_ID | No | Optional Slack channel ID for tool activity logs. | |
| SLACK_BOT_TOKEN | No | Slack bot token (xoxb-...) for bot token authentication. | |
| SLACK_XOXC_TOKEN | No | Slack session token (xoxc-...) required for browser-based authentication. | |
| SLACK_XOXD_TOKEN | No | Slack cookie token (xoxd-...) required for browser-based authentication. | |
| SLACK_MCP_READ_ONLY | No | Set to 'true', '1', 'yes', or 'on' to enable read-only mode. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_threadA | Get all messages in a thread given a channel ID and the parent message timestamp. Use this to read a full conversation thread before replying to it. The thread_ts is the timestamp of the parent message that started the thread. |
| get_channel_historyA | Get the history of a channel with pagination support. Limit parameter controls max messages to fetch (default 1000). Optional date filtering (accepts ISO 8601 dates or Unix timestamps):
Note: For date-only formats, 'oldest' defaults to start of day (00:00:00) and 'latest' to end of day (23:59:59). |
| get_channel_id_by_nameA | Get the channel ID by channel name. The channel name can be with or without the # prefix. |
| refresh_channel_cacheA | Refresh the channel cache. Use this when new channels are created or if channel lookups are failing. |
| refresh_user_cacheA | Clear the user cache. Use this when user handles are outdated or if user lookups are failing. Returns the number of cached entries cleared. |
| resolve_user_idA | Resolve a Slack user ID from a name, @handle, or email address. Searches the full workspace member list (cached for 24h). Returns up to 5 matches sorted by relevance: exact handle > exact email > case-insensitive name > partial substring match. Each result contains id, handle, real_name, display_name, and email. |
| post_messageA | Post a message to a channel. Optionally pass Block Kit blocks as a JSON string for rich formatting (e.g. nested lists via rich_text blocks). When blocks is provided, message is used as the plaintext fallback. |
| post_commandC | Post a command to a channel. |
| add_reactionB | Add a reaction to a message. |
| get_reactionsB | Get reactions to a message. |
| whoamiA | Checks authentication & identity. |
| join_channelC | Join a channel. |
| create_channelA | Create a new Slack channel. Args: name: Channel name (will be sanitized: lowercase, hyphens, no spaces) is_private: Create as private channel (default: False for public) Returns: Channel ID on success, None on failure |
| invite_users_to_channelA | Invite multiple users to a channel. Args: channel_id: Target channel ID (C...) user_ids: List of user IDs to invite (U...) Returns: True if all invitations succeeded, False otherwise |
| rename_channelA | Rename a Slack channel. Args: channel_id: Target channel ID (C...) new_name: New channel name (will be sanitized: lowercase, hyphens, no spaces) Returns: True if rename succeeded, False otherwise |
| list_joined_channelsA | List channels the authenticated user is a member of. Uses Slack's users.conversations API. By default returns public and private channels only. To include DMs and group DMs, set types to e.g. "public_channel,private_channel,im,mpim". |
| clear_usergroupA | Clear all users from a Slack usergroup. Since Slack API doesn't support empty usergroups, this uses a workaround by setting the usergroup to contain only a randomly selected deleted user. This effectively clears the usergroup. Args: usergroup_id: The usergroup ID (S...) to clear Returns: True if usergroup was cleared successfully, False otherwise |
| update_usergroup_membersA | Set the members of a Slack usergroup, replacing the current membership entirely. Args: usergroup_id: The usergroup ID (S...) to update user_ids: List of user IDs (U...) that should be the members. Must contain at least one user — use clear_usergroup to remove all members. Returns: True if the membership was updated successfully, False otherwise |
| send_dmA | Send a direct message to a user. Optionally pass Block Kit blocks as a JSON string for rich formatting (e.g. nested lists via rich_text blocks). When blocks is provided, message is used as the plaintext fallback. |
| send_group_dmB | Send a message to a group DM (multi-party direct message). Args: user_ids: List of 2+ user IDs to include in group DM message: Message text to send Returns: True if message sent successfully, False otherwise |
| search_messagesB | Search for messages in the workspace with pagination support. Limit parameter controls max results to fetch (default 1000). |
| search_channel_messagesA | Search for messages within a specific channel. Uses Slack's search API with an 'in:' filter. Args: channel_id: The channel ID to search within. query: The search query text. sort: Sort results by "timestamp" (newest first) or "score" (relevance). limit: Max number of results to return (default 100). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
Most tools target distinct resources and actions, but get_thread overlaps with get_channel_history's include_threads option, and clear_usergroup is essentially a special case of update_usergroup_members. Otherwise, the boundaries are clear.
Tool names mostly follow a consistent verb_noun snake_case pattern (post_message, create_channel, search_messages). Minor deviations like whoami and the somewhat vague post_command keep it from being perfectly uniform.
With 22 tools, the set is at the heavy end for an MCP server, though Slack's broad domain justifies many of them. The inclusion of cache-refresh utilities and several overlapping search/message tools makes the surface feel slightly larger than necessary.
The server covers core messaging, channel management, reactions, search, and some usergroup operations. However, there are notable gaps such as message edit/delete, channel archive/delete/leave, and usergroup create/list/get, leaving some lifecycle workflows incomplete.