Slack
Team chat and channel automation.
Verdict
Common use cases
- Summarize unread messages across channels
- Draft replies to customer threads
- Search conversation history for decisions
- Star important messages for follow-up
- Archive inactive project channels
Integration
- Vendor
- Slack
- Category
- communication
- Auth
- OAUTH2
- Tools
- 50
- Composio slug
slack
Tools
- Add a custom emoji to a Slack team
Deprecated: adds a custom emoji to a slack workspace given a unique name and an image url. use `add emoji` instead.
- Add an emoji alias
Adds an alias for an existing custom emoji in a slack enterprise grid organization.
- Add a remote file
Adds a reference to an external file (e.g., google drive, dropbox) to slack for discovery and sharing, requiring a unique `external id` and an `external url` accessible by slack.
- Add a star to an item
Stars a channel, file, file comment, or a specific message in slack.
- Add call participants
Registers new participants added to a slack call.
- Add emoji
Adds a custom emoji to a slack workspace given a unique name and an image url; subject to workspace emoji limits.
- Add reaction to message
Adds a specified emoji reaction to an existing message in a slack channel, identified by its timestamp; does not remove or retrieve reactions.
- Archive a public or private channel
Archives a slack public or private channel, making it read-only; the primary 'general' channel cannot be archived.
- Archive a Slack conversation
Archives a slack conversation by its id, rendering it read-only and hidden while retaining history, ideal for cleaning up inactive channels; be aware that some channels (like #general or certain dms) cannot be archived and this may impact c
- Close conversation channel
Closes a slack direct message (dm) or multi-person direct message (mpdm) channel, removing it from the user's sidebar without deleting history; this action affects only the calling user's view.
- Create a channel-based conversation
Creates a new public or private slack channel with a unique name; the channel can be org-wide, or team-specific if `team id` is given (required if `org wide` is false or not provided).
- Create a reminder
Creates a slack reminder with specified text and time; time accepts unix timestamps, seconds from now, or natural language (e.g., 'in 15 minutes', 'every thursday at 2pm').
- Create a Slack user group
Creates a new user group (often referred to as a subteam) in a slack workspace.
- Create channel
Initiates a public or private channel-based conversation
- Create conversation
Deprecated: initiates a public or private channel-based conversation. use `create channel` instead.
- Customize URL unfurl
Customizes url previews (unfurling) in a specific slack message using a url-encoded json in `unfurls` to define custom content or remove existing previews.
- Customize URL unfurling in messages
Deprecated: customizes url previews (unfurling) in a specific slack message. use `customize url unfurl` instead.
- Delete a file by IDdestructive
Permanently deletes an existing file from a slack workspace using its unique file id; this action is irreversible and also removes any associated comments or shares.
- Delete a message from a chatdestructive
Deletes a message, identified by its channel id and timestamp, from a slack channel, private group, or direct message conversation; the authenticated user or bot must be the original poster.
- Delete a public or private channeldestructive
Permanently and irreversibly deletes a specified public or private channel, including all its messages and files, within a slack enterprise grid organization.
- Delete a Slack reminderdestructive
Deletes an existing slack reminder, typically when it is no longer relevant or a task is completed; this operation is irreversible.
- Delete file commentdestructive
Deletes a specific comment from a file in slack; this action is irreversible.
- Delete scheduled chat messagedestructive
Deletes a pending, unsent scheduled message from the specified slack channel, identified by its `scheduled message id`.
- Delete user profile photodestructive
Deletes the slack profile photo for the user identified by the token, reverting them to the default avatar; this action is irreversible and succeeds even if no custom photo was set.
- Disable a Slack user group
Disables a specified, currently enabled slack user group by its unique id, effectively archiving it by setting its 'date delete' timestamp; the group is not permanently deleted and can be re-enabled.
- Enable a user group
Enables a disabled user group in slack using its id, reactivating it for mentions and permissions; this action only changes the enabled status and cannot create new groups or modify other properties.
- End a call
Ends an ongoing slack call, identified by its id (obtained from `calls.add`), optionally specifying the call's duration.
- End DND session
Ends the authenticated user's current do not disturb (dnd) session in slack, affecting only dnd status and making them available; if dnd is not active, slack acknowledges the request without changing status.
- End snooze
Ends the current user's snooze mode immediately.
- End snooze mode immediately
Deprecated: ends the current user's snooze mode immediately. use `end snooze` instead.
- Fetch bot user information
Fetches information for a specified, existing slack bot user; will not work for regular user accounts or other integration types.
- Fetch conversation history
Fetches a chronological list of messages and events from a specified slack conversation, accessible by the authenticated user/bot, with options for pagination and time range filtering.
- Fetch item reactions
Fetches reactions for a slack message, file, or file comment, requiring one of: channel and timestamp; file id; or file comment id.
- Fetch team info
Fetches comprehensive metadata about the current slack team, or a specified team if the provided id is accessible.
- Fetch team information
Deprecated: fetches comprehensive metadata about the current slack team. use `fetch team info` instead.
- Fetch workspace settings information
Retrieves detailed settings for a specific slack workspace, primarily for administrators in an enterprise grid organization to view or audit workspace configurations.
- Find channels
Find channels in a slack workspace by any criteria - name, topic, purpose, or description.
- Find users
Find users in a slack workspace by any criteria - email, name, display name, or other text. includes optimized email lookup for exact email matches.
- Get channel conversation preferences
Retrieves conversation preferences (e.g., who can post, who can thread) for a specified channel, primarily for use within slack enterprise grid environments.
- Get Do Not Disturb status for users
Deprecated: retrieves a user's current do not disturb status. use `get team dnd status` instead.
- Get reminder information
Retrieves detailed information for an existing slack reminder specified by its id; this is a read-only operation.
- Get remote file
Retrieve information about a remote file added to slack.
- Get team DND status
Retrieves a user's current do not disturb status.
- Invite users to a Slack channel
Invites users to an existing slack channel using their valid slack user ids.
- Lookup users by email
Retrieves the slack user object for an active user by their registered email address; fails with 'users not found' if the email is unregistered or the user is inactive.
- Post message to channel
Deprecated: posts a message to a slack channel, direct message, or private channel. use `send message` instead.
- Retrieve conversation replies
Retrieves replies to a specific parent message in a slack conversation, using the channel id and the parent message's timestamp (`ts`).
- Retrieve user presence
Retrieves a slack user's current real-time presence (e.g., 'active', 'away') to determine their availability, noting this action does not provide historical data or status reasons.
- Set snooze duration
Deprecated: turns on do not disturb mode for the current user, or changes its duration. use `set dnd duration` instead.
- Share file public url
Enables public sharing for an existing slack file by generating a publicly accessible url; this action does not create new files.
Setup
Setup guide
- 11. In Switchy, open the Space where you want Slack available and click 'Add Integration' in the sidebar. 2. Search for 'Slack' and select it from the MCP directory. 3. Click 'Connect' to start OAuth — you'll authorize Switchy to access your Slack workspace. 4. Grant the requested scopes: `channels:read`, `channels:history`, `chat:write`, `reactions:write`, `stars:write`, and `emoji:read` are typical; admin tools like archiving channels or adding emoji require `admin` scope. 5. After authorizing, Slack returns you to Switchy with a confirmation banner. 6. Test the connection by typing '@Slack list channels' in your Space — the AI should return a list of public channels. 7. To invoke a tool, @mention Slack in any message and describe what you need: 'add a star to this message', 'post a reply in #engineering', or 'search messages in #support from last week'.
What teammates see: by default, memories from Slack are scoped to the Space (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.
Works well with
Top models
How Switchy teams use it
Starter prompts
Summarize Channel Activity
@Slack pull the last 50 messages from #general and summarize the main topics discussed today.Open in a Space →
Search for Decisions
@Slack search messages in #product from the last two weeks for any decisions about the new pricing model.Open in a Space →
Draft a Thread Reply
@Slack read the thread in #support starting at timestamp 1704067200.123456 and draft a reply explaining the workaround we discussed.Open in a Space →
Star Key Messages
@Slack add a star to the message in #engineering at timestamp 1704070800.654321 so I can follow up on it tomorrow.Open in a Space →
Archive Old Channels
@Slack archive the channel #q4-launch since the project wrapped last month.Open in a Space →
Example outputs
Illustrative - representative of the model's voice and quality, not literal recordings.
@slack list all unread messages in #engineering and #product channels from the last 24 hours
Found 47 unread messages across both channels. In #engineering: 23 messages spanning 4 threads, including a discussion on API rate-limiting (12 replies), deployment notifications (6 messages), and code review requests (5 messages). In #product: 24 messages covering feature prioritization (8 replies), user feedback summary (10 messages), and sprint planning updates (6 messages). Most active thread: 'Q1 roadmap alignment' in #product with 8 participants.
This example shows the MCP's ability to aggregate conversation data across channels. Requires channels:history OAuth scope. Message counts and thread detection work well, but the MCP cannot access private channels unless explicitly invited, and DMs require additional user-specific permissions.
@slack post a message to #releases announcing version 2.4.0 is live, include a :rocket: reaction and pin it
Message posted to #releases: 'Version 2.4.0 is now live in production. Release notes: [link]'. Added :rocket: reaction to the message. Message pinned to channel. The post is now visible to all 127 channel members and appears in the pinned items list accessible via the channel details pane.
Demonstrates the MCP's write capabilities: posting messages, adding reactions, and pinning content. Requires chat:write, reactions:write, and pins:write OAuth scopes. Be aware that pinning is a privileged action—some workspaces restrict it to admins or channel creators. The MCP cannot unpin other users' pins without appropriate permissions.
@slack summarize the last week of #customer-feedback, group by feature request vs bug report, and draft a response for the top 3 requests
Analyzed 89 messages in #customer-feedback from the past 7 days. Feature requests (62 messages): 1) Dark mode for mobile app (18 mentions), 2) Bulk export to CSV (14 mentions), 3) Custom notification sounds (11 mentions). Bug reports (27 messages): mostly login timeouts and search indexing delays. Draft responses prepared for top 3 requests, acknowledging user feedback and noting these items are under consideration for Q2 roadmap review. Each draft includes a thank-you and an invitation to upvote in the feature tracker.
This synthesis example pairs Slack's message retrieval with AI reasoning to categorize and prioritize feedback. The MCP fetches raw conversation data; the AI performs the grouping and drafting. Useful for turning noisy channels into actionable insights, but accuracy depends on message clarity—ambiguous posts may be miscategorized. Requires channels:history scope and works best with well-structured feedback channels.
Use-case deep-dives
When Slack MCP replaces manual status updates in support channels
A 6-person support team runs ticket triage in a shared Slack channel, tagging messages with emoji reactions to show status (👀 = claimed, ✅ = resolved). The Slack MCP lets an AI assistant read those reactions and auto-update your ticketing system without anyone copy-pasting ticket IDs. The assistant calls `add reaction to message` when a ticket moves to "in progress" and stars urgent threads so they surface in the team lead's starred-items view. This works cleanly if your team already lives in Slack and you're under 200 tickets a day. Past that volume, reaction-based workflows get noisy and you're better off with a dedicated ticketing MCP that writes directly to Zendesk or Intercom. If your handoff ritual is already emoji-driven and under that threshold, this MCP closes the loop without changing how your team works.
Using Slack as a lightweight knowledge hub for distributed teams
A 12-person product team stores design specs in Figma, PRDs in Notion, and research decks in Google Drive. They want one place to search across all three without forcing everyone to remember which tool holds what. The Slack MCP's `add a remote file` tool lets an AI assistant index external links into a single Slack channel, so a search in that channel returns references to all three sources. The assistant can also star high-priority files for new hires during onboarding. This setup wins if your team already treats Slack as the source of truth and you're indexing fewer than 500 external files—Slack's search isn't built for massive document libraries. If you're over that count or need versioning and permissions inheritance, a dedicated knowledge-base MCP (Notion, Confluence) is the right call. For small teams centralizing 50-200 key resources, this keeps everything in one search bar.
When Slack MCP automates retro sentiment collection at standup scale
A 4-person engineering team runs async retros by posting a summary message in Slack and asking everyone to react with 👍 (went well), 👎 (needs work), or 🤔 (discuss next time). The Slack MCP lets an AI assistant tally those reactions, pull the top-voted items, and draft a retro doc in your project tracker without anyone manually counting emoji. The assistant calls `add reaction to message` to mark items as "processed" and can archive the retro channel at sprint-end to keep the workspace tidy. This works if your retros are lightweight (under 20 discussion points per sprint) and your team is comfortable with public emoji votes. If you need anonymous feedback or you're running retros across 15+ people, a dedicated retro tool (Retrium, Parabol) gives you better aggregation and privacy controls. For small teams who already vote with emoji, this MCP turns reactions into action items in two API calls.
Frequently asked
What can the Slack MCP do in Switchy?
It lets AI agents read and write in your Slack workspace — post messages, add reactions, star items, archive channels, manage custom emoji, and register call participants. The MCP exposes 50 tools covering most Slack API operations except admin-level workspace settings. Agents can respond to threads, share files from external sources, and interact with channels your OAuth token has access to.
Which OAuth scopes does the Slack MCP request?
The exact scopes depend on which tools you enable, but expect requests for channels:read, channels:write, chat:write, reactions:write, stars:write, emoji:read, and files:write at minimum. If you want agents to archive channels or manage emoji, you'll need admin-level scopes like channels:manage and emoji:write. Review the scope list during OAuth setup before granting access.
Can the Slack MCP send direct messages to users?
Yes, if your OAuth token includes the im:write scope and the agent has the user's Slack ID. The MCP treats DMs as channels under the hood, so posting to a DM channel works the same as posting to a public channel. You'll need to look up the user's ID first or have the agent retrieve it from another tool.
How does this compare to using Slack's API directly?
The MCP wraps Slack's REST API in a standardised tool interface, so you get the same capabilities without writing HTTP clients or managing rate limits yourself. The trade-off is less control over retry logic and no access to the Events API for real-time listening. If you need webhooks or socket-mode events, use Slack's API directly alongside this MCP.
Who on the team should connect the Slack MCP?
Whoever owns the Slack app installation in your workspace. That person's OAuth token determines which channels and workspaces the MCP can access. If you want agents to post in private channels, the connector must be a member of those channels. For emoji or archive operations, you'll need someone with workspace admin privileges.