Slack MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 |
|---|---|
| search_messagesA | Search Slack messages in PUBLIC channels only. Use this to find discussions about a Jira ticket or PR by passing the ticket key (e.g. "DSE-1234"), a PR URL, or free-text keywords as the query. Results from DMs and private channels are never returned. Args: query: Search text — a ticket key, PR URL, or keywords. count: Max results (1-100, default 20). |
| read_threadA | Read a full thread (root message + all replies) from a PUBLIC channel. Args:
channel: Channel id (e.g. "C0123") or "#name". Must be a public channel.
thread_ts: The thread's root timestamp (the |
| read_channel_historyA | Read recent messages from a PUBLIC channel, or messages around a timestamp. Args: channel: Channel id or "#name". Must be a public channel. limit: Number of messages (1-100, default 30). around_ts: Optional message timestamp; returns messages up to and including it, for context around a specific point. |
| list_channelsA | List PUBLIC channels, optionally filtered by a name substring. Args: name_filter: Optional case-insensitive substring to match channel names. |
| resolve_usersA | Resolve Slack user ids (e.g. "U0123") to display names. Args: user_ids: List of Slack user ids to resolve. |
| draft_messageA | Prepare a message for sending and return a preview + confirmation token. THIS DOES NOT SEND ANYTHING. It validates the target is a public channel,
renders exactly what would be posted, and returns a one-time
Args: channel: Channel id or "#name". Must be a public channel. text: The exact message text to post. thread_ts: Optional thread root timestamp to reply in a thread. |
| send_messageA | Send a previously drafted message. Requires a valid confirmation_token from draft_message. This is the ONLY tool that posts to Slack. Only call this after the user has reviewed the draft_message preview and explicitly approved sending. Args: confirmation_token: The one-time token returned by draft_message. |
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 7 tools
Each tool has a clearly distinct purpose: searching, reading threads, reading channel history, listing channels, resolving users, drafting, and sending. The only potential overlap between read_thread and read_channel_history is clarified by their specific scopes (thread vs channel).
All tool names follow the verb_noun pattern with snake_case (search_messages, read_thread, read_channel_history, list_channels, resolve_users, draft_message, send_message). No mixed conventions or vague verbs.
7 tools is well-scoped for a Slack server covering search, read, list, resolve, and send operations. Each tool earns its place without redundancy or bloat.
The toolset covers the core lifecycle for public channel messaging: searching, reading history, reading threads, listing channels, resolving users, and sending with a safe draft/approve flow. No obvious dead ends for common use cases.