communicationoauth2

Slack

Team chat and channel automation.

Verdict

Slack via MCP is the integration that lets the model see and act on the messages your team has already sent. Search threads, summarise channels, post replies, draft DMs — all from the same chat session where the model lives. What we notice: Slack-as-context is one of the highest-leverage MCPs because so much of a team's actual work decisions live there. "Summarise yesterday's #incident channel" or "find the thread where we discussed X" hits the model's strengths. Posting from the model is more sensitive — give it the right scopes, write to a private channel first, validate the tone before sending broadly. Best for: catching up on a busy channel (the model's "summarise the last 50 messages, what decisions were made" output is genuinely useful); finding the thread or quote you half-remember; drafting standup updates or weekly summaries from your own activity; bridging Slack discussions into other systems (file an issue from this thread, log this decision). Avoid for: posting in customer-facing or executive channels without a human review step (the model occasionally misreads social register); workflows where Slack's history retention is short (the model can only summarise what's still there); orgs strict about AI access to private DMs. Practical frame: free with a Slack workspace; install requires admin OAuth approval. The model spend per "summarise this channel" run is small ($0.01-0.05). The risk-budget item is reviewing what scopes the model has and whether to give it write access.

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 ID
    destructive

    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 chat
    destructive

    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 channel
    destructive

    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 reminder
    destructive

    Deletes an existing slack reminder, typically when it is no longer relevant or a task is completed; this operation is irreversible.

  • Delete file comment
    destructive

    Deletes a specific comment from a file in slack; this action is irreversible.

  • Delete scheduled chat message
    destructive

    Deletes a pending, unsent scheduled message from the specified slack channel, identified by its `scheduled message id`.

  • Delete user profile photo
    destructive

    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

  1. 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

Not enough Spaces yet to publish anonymised usage stats (we require ≥ 50 Spaces per week).

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.

Prompt

@slack list all unread messages in #engineering and #product channels from the last 24 hours

Output

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.

Notes

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.

Prompt

@slack post a message to #releases announcing version 2.4.0 is live, include a :rocket: reaction and pin it

Output

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.

Notes

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.

Prompt

@slack summarize the last week of #customer-feedback, group by feature request vs bug report, and draft a response for the top 3 requests

Output

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.

Notes

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

Customer support ticket handoffs

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.

Remote file reference library

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.

Sprint retrospective emoji voting

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.

Compare with

Compare with anything else →
Data last verified 9 hours ago.Sources aggregated hourly to weekly. See docs/architecture/model-directory.md.