SlackMCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SLACK_TOKEN | Yes | Your Slack User OAuth Token (starts with xoxp-). It is read from the .env file next to package.json or from the process environment, with the environment taking precedence. |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| slack_auth_testA | Check the configured token and identify the connected Slack workspace and account. |
| slack_list_conversationsB | List visible Slack channels and DMs. Follow response_metadata.next_cursor for more pages. |
| slack_read_channelA | Read a page of channel or DM history, newest first. Requires access to the conversation. Follow next_cursor for more pages. User mentions in text are shown as @name; user_names maps user IDs to names (use <@ID> to mention someone when sending). |
| slack_read_threadA | Read a parent message and its thread replies. A user token is needed for public/private channel threads. Follow next_cursor for more pages. User mentions in text are shown as @name; user_names maps user IDs to names (use <@ID> to mention someone when sending). |
| slack_list_usersB | List workspace users to resolve user IDs. Follow response_metadata.next_cursor for more pages. |
| slack_search_messagesA | Search messages visible to the token, including private conversations it can access. Requires a user token with search:read. Use Slack search operators to limit the query. Follow paging.pages using page. User mentions in text are shown as @name; user_names maps user IDs to names (use <@ID> to mention someone when sending). |
| slack_send_messageA | Send the exact supplied message body to an authorized Slack channel or DM, with no added signature, footer, blocks, or attribution metadata. Only send when the user authorized the content and destination. Do not retry blindly after an uncertain result. |
| slack_edit_messageA | Replace an editable message with the exact supplied body. No signature or attribution is added. Only edit when authorized. Sending blocks:[] clears existing structured message blocks; Slack may retain an edited indicator. |
| slack_open_dmA | Open or resume a direct message with explicitly authorized users. Returns a conversation ID for sending. Does not send a message. |
| slack_get_permalinkA | Get the Slack URL for a message using its channel and timestamp. |
| slack_add_reactionB | Add an authorized emoji reaction to a message. Use an emoji name without colons. |
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 11 tools
Tools mostly target distinct resources/actions (list vs read vs send vs search vs edit). The only mild overlaps are slack_read_channel vs slack_read_thread and slack_open_dm vs slack_send_message, but descriptions clearly differentiate them (history vs thread replies, and opening vs sending).
All tools use a consistent slack_ prefix and follow verb_noun ordering (list_conversations, read_channel, send_message). The only minor deviation is slack_auth_test, where the noun/verb order is inverted, but it remains readable.
Eleven tools is well within the 3-15 sweet spot for a Slack messaging surface. Each tool covers a distinct operation (auth, list, read, search, send, edit, react, permalink, open DM) without redundancy.
Core read/write workflows (list, read, search, send, edit, react, permalink, open DM) are covered. Minor gaps remain: no delete/remove message, no documented way to send a thread reply (thread_ts not exposed), and no file upload support.