mcp-slack
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SLACK_MCP_ALLOW_WRITE | No | Set to 1 to enable the slack_post_message tool. Off by default. | 0 |
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 |
|---|---|
| slack_searchA | Search Slack messages using native Slack search syntax. Supports operators like Args: query: Slack search query, e.g. 'from:@alice in:#project-x deadline'. count: Maximum matches to return (default 50). sort: 'timestamp' for newest-first, or 'score' for relevance. include_broadcasts: When False, drop @here/@channel/@everyone messages. |
| slack_channel_historyA | Read messages from one channel over a time window. Accepts a channel name ('project-x' or '#project-x') or a channel ID. Name lookups are cached. Returns top-level messages only — use slack_thread to expand any message whose reply_count is non-zero. Args: channel: Channel name or ID. oldest: Start bound as 'YYYY-MM-DD', 'YYYY-MM-DD HH:MM:SS', an epoch, or a relative offset like '-7d'. latest: End bound, same formats. A bare date means end-of-day. limit: Maximum messages (default 100). resolve_names: Resolve user IDs to display names (costs one call per user). include_broadcasts: When False, drop @here/@channel/@everyone messages. |
| slack_threadA | Fetch every reply in a thread, including the parent message. Args:
channel: Channel name or ID containing the thread.
thread_ts: Timestamp of the thread parent (the |
| slack_dm_historyA | Read direct-message history with one person. Args: user: Username, @username, or user ID. limit: Maximum messages (default 50). oldest: Optional start bound as 'YYYY-MM-DD' or epoch. resolve_names: Resolve user IDs to display names. |
| slack_list_channelsA | Discover channels by glob pattern and minimum member count. EXPENSIVE: this enumerates conversations.list, which Enterprise Grid throttles hard, so it may return a rate_limited error on large workspaces. If you already know the channel name, skip this and pass the name straight to slack_channel_history — that resolves via one fast search call. For a glob over channels you have joined, slack_channels_history is far cheaper. Args: pattern: fnmatch glob against the channel name, e.g. 'team-*'. min_members: Only return channels with at least this many members. include_private: Include private channels you have joined. limit: Maximum channels to return (default 200). |
| slack_userA | Resolve a username or user ID to a profile. Use this to turn a raw user ID from another result (e.g. 'U01234ABCDE') into a name, or to look up someone's title, timezone, and custom fields. Args: name_or_id: Username, @username, display name, or user ID. include_custom_fields: Resolve workspace custom profile fields to labels (costs one extra API call). |
| slack_user_activityA | Everything one person said or received in a time range, grouped by channel. Searches messages from and to the user, optionally pulls surrounding channel
history so replies have antecedents, and optionally expands every thread
touched. Returns messages grouped by channel with replies nested under their
parents, plus a Prefer this over assembling the same result from slack_search plus slack_channel_history plus slack_thread: it deduplicates across all three passes, which a sequence of separate calls cannot do without replaying every message. Cost scales with the number of channels the user was active in. Args:
user: Slack handle or user ID. Defaults to the authenticated user.
oldest: Window start — 'YYYY-MM-DD', an epoch, or a relative offset such
as '-7d'. Defaults to one day before |
| slack_channels_historyA | History for several channels over one time range, threads nested inline. Give either an explicit Discovery by Args:
channels: Channel names or IDs. Mutually exclusive with |
| slack_profilesA | Look up full profiles for several people at once. Richer than slack_user: resolves workspace custom fields to their labels and
rewrites user-typed fields (for example Manager or Direct Reports) from raw
IDs to display names. Returns Args: handles: Usernames, @usernames, or user IDs. Unresolvable entries come back as {'handle': ..., 'error': ...} rather than failing the batch. |
| slack_post_messageA | Post a message to Slack as yourself. DISABLED by default. Requires SLACK_MCP_ALLOW_WRITE=1 in the server environment. Without it this tool refuses and returns an error, so no agent action can post by accident. Args: channel: Channel name or ID to post into. text: Message body (Slack mrkdwn). thread_ts: Optional thread parent timestamp, to reply in-thread. |
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 10 tools
Most tools have clearly distinct purposes: search, channel history, thread expansion, DM history, user lookup, and posting. Minor overlap exists between slack_user_activity and the composition of search/history/threads, and between slack_user vs slack_profiles, but descriptions clarify their intended uses.
All tools share the slack_ prefix and use lowercase snake_case, which is consistent. Some names are verbs (search, list, post) while others are nouns (thread, user, profiles), and history variants differ (channel_history vs channels_history), but the pattern is readable and predictable overall.
Ten tools is well within the ideal range for a Slack-focused server. The count covers search, messaging history, threads, DMs, channels, users, profiles, and posting without being bloated or sparse.
The tool set provides solid coverage of read operations: search, channel/thread/DM history, multi-channel history, user activity, and profile lookups. Minor gaps exist such as channel metadata, reactions, or message send (disabled by default), but core agent workflows are well supported.