Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SLACK_MCP_CONFIGNoOverrides the default config path for the workspaces TOML file (default: ~/.config/slack-mcp/workspaces.toml).

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_workspacesA

List the Slack workspaces configured in workspaces.toml (names + descriptions).

Call this first to discover the workspace values accepted by every other tool. Tokens are never returned.

check_accessA

Report the OAuth scopes a workspace's token has, and which tools it can use.

Call this to confirm the Slack app was installed with the scopes a feature needs — e.g. files:write (and im:write for DM attachments) before using send_message with a file_path. Scope data comes from Slack's x-oauth-scopes header; nothing is sent to the workspace.

Args: workspace: configured workspace name.

search_messagesA

Search messages across a workspace (Slack search operators supported).

Args: workspace: configured workspace name. query: Slack search query, e.g. 'in:#general from:@alice variant calling'. count: max matches to return (1-100). sort: 'score' (relevance) or 'timestamp' (newest first).

read_channelA

Read recent message history from a channel (by ID or #name).

Args: workspace: configured workspace name. channel: channel ID (C…/G…/D…) or a name like '#general'. limit: max messages, newest first (1-200). oldest: optional lower-bound Slack ts (inclusive). latest: optional upper-bound Slack ts.

read_threadB

Read all replies in a thread.

Args: workspace: configured workspace name. channel: channel ID (C…/G…/D…) or a name like '#general'. thread_ts: the ts of the thread's parent message. limit: max messages (1-1000).

list_channelsA

List channels in a workspace, optionally filtered by a name substring.

Args: workspace: configured workspace name. name_filter: case-insensitive substring to match channel names (empty = all). types: comma-separated: public_channel, private_channel, mpim, im. limit: max channels to return after filtering (1-1000).

get_userA

Look up a user by Slack ID (U…) or email address.

Args: workspace: configured workspace name. user: a user ID (U…/W…) or an email address.

download_fileA

Download a Slack file by its file ID.

Resolves the file via files.info, then fetches url_private_download with the workspace's Bearer token. Images are returned inline (downscaled to fit size limits) AND a full-resolution copy is saved to disk. Other files are saved to ~/slack-downloads/// and the path is returned.

Args: workspace: configured workspace name. file_id: the Slack file ID (e.g. 'F0123ABCD'), as found in message file metadata.

draft_messageA

Preview a message WITHOUT sending it. Resolves the channel and echoes the target.

Use this to review exactly where a message would go before calling send_message.

Args: workspace: configured workspace name. channel: channel ID (C…/G…/D…) or a name like '#general'. text: the message body (Slack mrkdwn).

send_messageA

Send a message to a channel — ONLY when confirm=True.

With confirm=False (the default) nothing is sent: the tool echoes back the workspace, resolved channel, text, and any attachment so they can be verified first. Call again with confirm=True to actually post.

Pass file_path to upload a local file as an attachment. When both text and file_path are given, the text becomes the file's comment so one call posts both together. Uploading requires the files:write scope (and im:write to attach to a DM via a user ID); check_access reports whether the token has them.

Args: workspace: configured workspace name. channel: channel ID (C…/G…/D…) or a name like '#general', or a user ID (U…/W…) to DM that person. text: the message body (Slack mrkdwn). May be empty when file_path is set. confirm: must be True to actually send; False returns a preview only. thread_ts: optional parent ts to reply in a thread. file_path: optional path to a local file to upload as an attachment. file_title: optional display title for the attachment (defaults to the filename).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.8/5.0

Scored across 10 tools

Disambiguation4/5

Most tools target clearly distinct operations (search vs read vs list vs get vs download), and the workspace/channel argument patterns make intent clear. The one real ambiguity is draft_message versus send_message with confirm=False, which both produce a non-sending preview of the same message — an agent could reasonably pick either. read_channel and read_thread are close but adequately differentiated by thread_ts.

Naming Consistency5/5

Every tool follows a clean verb_noun snake_case pattern: list_workspaces, search_messages, read_channel, read_thread, list_channels, get_user, download_file, draft_message, send_message. The single-word-ish check_access still fits the verb_noun shape. No camelCase or stylistic mixing.

Tool Count5/5

Ten tools is well within the sweet spot and each maps to a concrete Slack workflow: discovery, access check, search, read, user lookup, file download, drafting, and sending. Nothing feels redundant or padded.

Completeness3/5

Read/search/send workflows are solid, but the surface is read-plus-post only: there is no update/edit message, delete message, or reaction tool, so an agent cannot correct or acknowledge messages. User discovery is also a gap — get_user requires an ID or email but there is no list_users, forcing agents to infer users from message metadata.

Maintenance

ActivityMaintained
ResponsivenessNo issues