Connect Your AI Agent with Slack for Slack

Integrate Slack MCP server into your Slack workspace for instant access to your AI agent.

Back to MCP Servers
Slack
Slack
Slack is the AI-powered platform for work bringing all of your conversations, apps, and customers together in one place. Around the world, Slack is helping businesses of all sizes grow and send productivity through the roof.

Categories

Communication

Available Tools

Tools that your AI agent can use through this MCP server to interact with Slack

Verify Slack Signature

Verifying requests from Slack, slack signs its requests using a secret that's unique to your app. Request Body must be the raw request body as a string (not a parsed object) — Slack computes its signature over the exact raw bytes it sent, so re-serializing a parsed object will not match. See the documentation

Upload File

Upload a file. See the documentation

Update Profile

Update basic profile field such as name or title. See the documentation

Update Message

Update a message. See the documentation

Update Group Members

Update the list of users for a User Group. See the documentation

Set Status

Set the current status for a user. See the documentation

Set Channel Topic

Set the topic on a channel, specified by ID or by name — names are resolved automatically. See the documentation

Set Channel Description

Change the description or purpose of a channel. See the documentation

Send Message

Send a message to a user, group, private channel or public channel. See the documentation

Send Message to User or Group

Send a message to a user or group. See the documentation

Send Message to Channel

Send a message to a public or private channel. Legacy, channel-only variant — prefer Post Message for new integrations: it covers channels, users, and groups from a single tool, and also supports threaded replies and unfurl settings. Use this tool only if a workflow specifically needs to target a channel exclusively, without the user/group support Post Message offers. See the documentation

Send Message (Advanced)

Customize advanced settings and send a message to a channel, group or user. See postMessage or scheduleMessage docs here

Send a Large Message (3000+ characters)

Send a large message (more than 3000 characters) to a channel, group or user. See postMessage or scheduleMessage docs here

Build and Send a Block Kit Message

Configure custom blocks and send to a channel, group, or user. See the documentation.

Search

Search Slack messages and files using the Real-Time Search API. Supports keyword and semantic search across public and private channels. Use Get User Details first to find your user ID for filtering by 'my' messages. Returns matching messages with channel context, timestamps, and permalinks. User mentions come back in the canonical <@U123> form; echo it verbatim to post a real mention. Display names are returned separately as mentions, an array of { id, name } objects, omitted when no mention carried a name. Do NOT splice a name back inline: Slack renders <@U123|Name> as literal text, not a mention. See the documentation

Reply to a Message Thread

Send a message as a threaded reply to an existing message. Use this when the reply should be nested under a specific message rather than posted as a new top-level message — for example, responding to a triggering event or continuing a discussion. Requires thread_ts, the parent message's timestamp (e.g. 1403051575.000407); get it from Get Channel History or an incoming event's ts field. For a plain, non-threaded message use Post Message instead. See the documentation

Post Message

Send a message to a channel, user, or group. Accepts a channel ID (e.g. C1234567890) or channel name (e.g. #general or general) — names are resolved automatically. To post a note to yourself (save a personal note or reminder), pass your own user ID (e.g. U1234567890) as the Channel — use Get Current User to find your user ID first. To reply to a thread, provide threadTs (Slack calls this thread_ts) from Get Channel History. Supports plain text with Slack mrkdwn formatting and Block Kit blocks. See the documentation

List Users

Return a list of all users in a workspace. See the documentation

List User Group Options

Retrieves available options for the User Group field. See the documentation

List Teams

Return the full list of teams (workspaces) accessible to the connected account, with pagination (has_more/next_cursor) so you know whether there could be more than what came back. Use this — not Get User Details or Get Current User, which only ever describe the caller's single current team — whenever the task asks to enumerate, count, or check for multiple teams/workspaces, especially on an Enterprise Grid org-wide token. Use the returned id (e.g. T1234567890) wherever a Team ID is required. Returns has_more: true and next_cursor when more teams exist than were fetched — raise numPages (or pass cursor) to see the rest. See the documentation

List Replies

Retrieve a thread of messages posted to a conversation. See the documentation

List Reminder Options

Retrieves available options for the Reminder field. See the documentation

List Messages (Deprecated)

DEPRECATED — do NOT use for reading a channel's or DM's messages. Use Get Channel History instead: it resolves channel names, channel IDs, and direct messages (by user ID), supports fields selection to keep responses small, and returns the same message data. This legacy tool remains only for existing workflows: it accepts a raw conversation ID and returns full, untrimmed message objects. See the documentation

List Members in Channel

Retrieve members of a channel. Accepts a channel ID or NAME (e.g. general or #general) — names are resolved automatically. See the documentation

List Icon (emoji) Options

Retrieves available options for the Icon (emoji) field. See the documentation

List Group Members

List all users in a User Group. See the documentation

List Group Conversations

Return a list of multi-person direct message (group DM) conversations the connected account is a member of. Use the returned id (e.g. G1234567890) wherever a Group conversation ID is required. Returns has_more: true and next_cursor when more conversations exist than were fetched — raise numPages (or pass cursor) to see the rest. See the documentation

List Files

Return a list of files within a team. See the documentation

List Emojis

List all available emojis in the Slack workspace. Optionally include emoji image URLs. See the documentation

List Channels

Return a list of channels in a workspace. Pass fields (e.g. ["id","name"]) to limit the returned properties — a full channel object is ~1KB, so a workspace of any real size can return a payload large enough to be truncated. Omit fields when you need the complete channel objects. Use namePrefix to filter results to channels whose names start with a given string (e.g. dev-) without a client-side filter loop. Returns has_more: true and next_cursor when more channels exist than were fetched — when you see that, raise numPages (or pass cursor) before answering any 'how many' or 'list every' question, otherwise your answer is silently incomplete. See the documentation

Kick User

Remove a user from a conversation. See the documentation

Invite User to Channel

Invite one or more users to an existing channel. Accepts a channel ID or NAME, and a user ID, EMAIL address or display name — all resolved automatically. Pass several users as a comma-separated list. See the documentation

Get User Details

Use when the user asks who am I, what's my user ID, what's my username, which workspace am I in, or what's my email — this is the default identity lookup and the one to call first in any session. Returns user ID, name, email, timezone, profile, and workspace metadata. Other tools like Search and List Channels can then filter by your user ID, and Post Message can use it as the channel to DM yourself. Prefer this over Get Current User, which returns a much larger payload and is only needed for full profile detail (locale, status, admin flags). See the documentation

Get Thread Replies

Retrieve all replies in a message thread. Accepts a channel ID or channel name (resolved automatically). Use Get Channel History or Search to find the parent message's timestamp (thread_ts). Returns the parent message followed by all replies in chronological order. Pass fields (e.g. text,ts,user) unless you need full message objects — raw Slack messages carry blocks, attachments and edit metadata, so a long thread can run to tens of thousands of characters and be truncated before you see any of it. See the documentation

Get File

Return information about a file. See the documentation

Get Current User

Do NOT use for a plain "who am I" / "what's my user ID" question — call Get User Details for that; it answers the same question with a far smaller payload. Do NOT use to look up a DIFFERENT, specifically-identified user (by ID or email) — this only ever describes the authenticated caller; use Find User by ID / Find User by Email for someone else. Do NOT use to enumerate multiple teams/workspaces (e.g. Enterprise Grid) — use List Teams for that; this returns only the caller's own current team. Use this ONLY when you specifically need the full member profile: locale, timezone, presence/status, admin and owner flags, name variants, or workspace domain and enterprise metadata. Combines auth.test, users.info, users.profile.get and team.info. See Slack API docs.

Get Channel History

Read the recent message history from a specific channel or direct message (DM). Accepts a channel ID or channel name (resolved automatically). To read a DM, pass the other person's user ID (e.g. U1234567890) as the channel — pass your OWN user ID to read your conversation with yourself. Use this when you want to see a channel's or DM's latest messages — unlike Search which finds messages by keyword. Returns messages with text, timestamps (ts), reactions, and user IDs. Message timestamps can be used with Get Thread Replies, Edit Message, and Add Reaction. Pass fields (e.g. text,ts,user) unless you need full message objects — raw Slack messages carry blocks, attachments and edit metadata, so a busy channel can run to tens of thousands of characters and be truncated before you see any of it. See the documentation

Get Channel Details

Retrieve details for a Slack channel, specified by ID or by name — names are resolved automatically. See the documentation

Find User by ID

Find a user by their ID — including a specific user you already have the Slack ID for, whether or not it's your own. Returns user profile information including name, email (requires users:read.email scope), timezone, and status. If you only have an email address, use Find User by Email instead. See the documentation

Find User by Email

Find a user by matching against their email. See the documentation

Find Message

Find a Slack message by keyword or natural-language query across public and private channels. Returns matching messages with channel context, timestamps, and permalinks. Pass the returned message_ts to Reply to a Message to answer in thread, or to Get Thread Replies to read the rest of that conversation. Use Search instead when you need file results or want to restrict channelTypes; use this action when you want to order results with sort / sortDirection. User mentions come back in the canonical <@U123> form; echo it verbatim to post a real mention. Display names are returned separately as mentions, an array of { id, name } objects, omitted when no mention carried a name. Do NOT splice a name back inline: Slack renders <@U123|Name> as literal text, not a mention. See the documentation

Edit Message

Edit an existing message. Accepts a channel ID or channel name (resolved automatically). Requires the message timestamp (ts) from Get Channel History or Post Message. You can only edit messages posted by the same token/user. See the documentation

Delete Message

Permanently delete a message. This cannot be undone. To delete a specific message (including the most recent one), first call Get Channel History to retrieve messages — messages[0] is the most recent — then pass its ts here. Quote the message text back to the user to confirm before deleting. Accepts a channel ID or NAME for the conversation, resolved automatically. Slack only lets an identity delete its own messages, so this deletes as whichever identity posted: it retries automatically with the other identity if the first attempt returns cant_delete_message. See the documentation

Delete File

Delete a file. See the documentation

Create Reminder

Create a reminder. See the documentation

Create a Channel

Create a new channel. See the documentation

Browse Files

List files shared in a channel or across the workspace. Accepts a channel ID or channel name (resolved automatically). Filter by file type (e.g. images, pdfs, snippets). Returns file metadata including name, type, size, and download URL. See the documentation

Archive Channel

Archive a public or private channel. Direct messages and group DMs can't be archived — pass a channel ID (e.g. C1234567890), not a user or group ID. See the documentation

Add Reaction

Add an emoji reaction to a message. Accepts a channel ID or channel name (resolved automatically). Use Get Channel History or Search to find the message timestamp. Emoji name should be without colons (e.g. thumbsup, fire, heart). See the documentation

Add Emoji Reaction

Add an emoji reaction to a message. See the documentation