slack-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MYCELIUM_NO_PING | No | Set to '1' to opt out of telemetry ping | |
| SLACK_WORKSPACES | Yes | Comma-separated list of workspace aliases (e.g., 'onde,mycelium'). For each alias, you must set SLACK_WORKSPACE_<ALIAS>_TYPE and corresponding token (and cookie for xoxc). | |
| SLACK_MCP_VAULT_PATH | No | Vault root for auto-export mirror | ~/Documents/Vault |
| SLACK_MCP_VAULT_EXPORT | No | Enable/disable vault auto-export | true |
| SLACK_PRIMARY_WORKSPACE | No | Default workspace alias when tool calls omit workspace | |
| SLACK_MCP_AUDIT_LOG_PATH | No | Path to JSONL audit log | |
| SLACK_MCP_DRAFT_TTL_SECONDS | No | Draft expiration in seconds | 3600 |
| SLACK_MCP_SCRUB_PROMPT_INJECTION | No | Enable/disable prompt injection scrubber | true |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_workspacesA | List configured Slack workspaces with auth type and primary status. Returns a dict with |
| healthcheckA | Verify token validity per workspace + report draft store + audit log path. For each workspace, calls auth.test. Returns user_id and team domain on success, or error code on failure. Does not retry. A failed auth.test means the token has been invalidated (logout, password change, app revoke) and needs re-extraction per SETUP.md. |
| list_channelsA | List channels in the workspace. types: comma-separated subset of public_channel, private_channel, mpim, im. Default omits DMs to keep responses short. limit caps results at the API page size. |
| search_channelsB | Substring match against channel names + topics. Case-insensitive. |
| read_channelA | Read recent messages from a channel. channel accepts ID (C12345) or name (#general). Newest first. Auto-exports the result to the vault at š¤ AI Chats/Slack//.md (best-effort). |
| read_threadA | Read a thread's parent message and replies. ts is the parent message timestamp (Slack message ID). channel accepts ID or name. The returned messages list includes the parent as element 0. |
| list_usersC | List users in the workspace. Excludes deleted by default. |
| search_usersA | Substring match against user real_name/display_name/email/name. |
| get_user_profileC | Get full profile for a user_id (U... or W...). |
| search_messagesA | Search messages with Slack's full-text search. Slack search modifiers work in Requires xoxc or xoxp auth (xoxb cannot search). Errors loudly with the workspace's actual auth_type if search isn't available. |
| send_messageA | Stage a message send. Does NOT post until confirm_send is called. Returns a draft_id, the resolved workspace + channel, the text preview, and an expires_at unix timestamp. Drafts expire after 1 hour and can only be confirmed once. For thread replies, set thread_ts to the parent message's ts. For replies that quote (reply with quote-block in Slack UI), use send_reply_quote instead. |
| send_reply_quoteA | Stage a reply that threads under target_ts. Same draft+confirm semantics as send_message. The recipient sees the reply nested under the target message in their Slack UI. |
| confirm_sendA | Commit a previously-drafted send. Dispatches by draft.kind:
|
| cancel_draftB | Cancel an unconfirmed draft. Idempotent. |
| add_reactionA | Add an emoji reaction to a message. emoji is the colon-stripped name (e.g. "thumbsup", "fire", "white_check_mark"). Low-consequence write ā no draft+confirm. Idempotent (Slack returns already_reacted as a soft success). |
| mark_readA | Mark a channel read up to a given message ts. Affects unread state across all your linked devices. Use the ts of the most recent message you've read. |
| delete_own_messageA | Delete one of your own messages. Calls chat.delete with (channel, ts). xoxc user tokens can delete their OWN messages without special scopes. Returns ok=True on success. message_not_found is treated as a soft success (already-deleted or wrong ts). Low-consequence (only your own messages, no destructive cascade) so no draft+confirm. The audit log records every call. |
| update_own_messageA | Stage an edit to one of your own messages. Does NOT update until confirm_send is called. Fetches the current message text up front so the draft preview shows BOTH the BEFORE and AFTER strings ā a visual diff in plain Python. After confirm_send, the message is edited in place via chat.update. Returns a draft_id, the resolved workspace + channel + target_ts,
and a preview dict with |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/adelaidasofia/slack-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server