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 |
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
} |
| 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