# Slack MCP

> Slack MCP Server lets your AI agent interact directly with your workspace. You send messages, search historical chats across channels, list users, and add reactions—all without ever leaving your current workflow. It's a direct API connection for automation.

## Overview
- **Category:** talk-to-me
- **Price:** Free
- **Tags:** messaging, team-chat, workflow-automation, channel-management, notification-management

## Description

Man, this thing is clutch. Your AI client gets to act like it’s logged into your Slack workspace—it ain't just reading stuff, it’s actually doing things for you. You don't wanna switch tabs or copy and paste anything anymore; you just tell your agent what needs doing, and it handles the whole mess right inside the chat.

**Discovering Your Workspace Layout**

You can use `channels_list` to pull a full roster of every channel in the workspace—public ones, private groups, the works. It lists them all up so you know what's talkin' and where things live. When you need to know who’s on the team, `users_list` pulls that directory for ya. You get every user listed out with their IDs, email addresses, names, and even their current status. That gives you a complete rundown of everyone working in the space.

**Finding Specific Chats and Messages**

Need to track down some old conversation? Forget scrolling forever. The `messages_search` tool lets your agent scan all the messages across the entire workspace. You can search by specific keywords, by the name of a user who said it, or even narrow it down by channel name. It finds that message anywhere in your history—and it sorts the results for you, most recent first so you ain't siftin' through crap.

If you need to focus on just one thread, `channels_history` retrieves a stream of recent messages from a single specified Slack channel. This pulls back activity in reverse chronological order, giving you a clean log of what was said lately for auditing or if you just wanna catch up quick.

**Sending New Content and Replies**

You don't gotta type out the updates yourself. You can use `messages_send` to post new content to any channel. It sends messages whether it’s a general update for the whole team or a private direct message (DM) with one specific person. Plus, you can have it reply directly within an existing thread, keeping all that context right where it belongs.

When someone says something important and you wanna acknowledge it without typing a full reply, `reactions_add` handles it. You just tell your agent which message you're talking about—you gotta give it the channel ID and the unique timestamp for that specific post—and it drops an emoji reaction right on top of it. It’s instant acknowledgment.

It’s a direct API connection for automation, period. Your AI client is now part of your team’s workflow. You tell it to search, send, list users, or check history; it just does it.

## Tools

### channels_history
Retrieves recent messages from a specific Slack channel in reverse chronological order.

### channels_list
Lists all available public and private channels that the bot has access to within your workspace.

### messages_search
Searches message content, usernames, and channels across the entire Slack workspace for keywords.

### messages_send
Sends a new message to a specified Slack channel or sends a private direct message (DM).

### reactions_add
Adds an emoji reaction to a specific message after referencing the required channel ID and unique message timestamp.

### users_list
Lists all users in your Slack workspace, including their IDs, emails, names, and current status.

## Prompt Examples

**Prompt:** 
```
List all channels in my Slack workspace.
```

**Response:** 
```
I found 12 channels in your workspace. The most active ones are #general (45 members), #engineering (28 members), and #product (19 members). Would you like to read recent messages from any of them?
```

**Prompt:** 
```
Post a message in #engineering: 'Deploy v2.4.1 is live on production 🚀'
```

**Response:** 
```
Message posted successfully to #engineering: 'Deploy v2.4.1 is live on production 🚀'. Would you like me to also react with a ✅ emoji?
```

**Prompt:** 
```
Search for messages about 'API outage' from last week.
```

**Response:** 
```
I found 8 messages mentioning 'API outage'. The first report came from @alex in #incidents at 2:34 PM on Monday. The root cause was identified as a database connection pool exhaustion. Would you like to see the full thread?
```

## Capabilities

### Discover workspace channels and users
Lists all available public and private channels, and retrieves a directory of every user with their roles and status.

### Search chat history across the workspace
Finds specific messages by keyword, sender, or channel name anywhere in your entire Slack history. Results are sorted by most recent first.

### Retrieve message logs from a channel
Pulls back recent message threads and activity from any given channel ID for auditing or context gathering.

### Send messages to channels or DMs
Posts new content to a specified channel, including sending private direct messages (DMs), optionally replying in an existing thread.

### Add emoji reactions to specific posts
Adds an acknowledgment reaction to a message when you know the exact timestamp and location of that message.

## Use Cases

### Incident Review and Root Cause Analysis
A developer is investigating a production outage. They ask their agent to run `messages_search` for 'database connection' from the last 7 days across all #dev channels. The agent returns eight relevant messages, pinpointing when the issue first appeared and who was involved.

### Onboarding New Team Members
The manager needs a list of everyone on the new marketing team. They prompt the agent to run `users_list`. The agent returns names, email addresses, roles, and current statuses, allowing the manager to build welcome emails immediately.

### Project Status Update Broadcast
The project lead finishes a milestone. Instead of manually posting in three different channels, they prompt the agent to run `messages_send` with the update message, hitting #general and #product-roadmap simultaneously.

### Catching Up After Vacation
You've been out for a week. You ask your agent to review `#sales-leads` history using `channels_history`. The agent pulls the last 100 messages, letting you understand key decisions and context without reading hundreds of individual threads.

## Benefits

- Stop digging through threads for old info. Use `messages_search` to find any keyword, user, or channel across years of chat history instantly.
- Need a status report? Run `users_list` to pull names, roles, and emails, letting you build out documentation without logging into the directory manually.
- Running low on context? Use `channels_history` to grab the last 50 messages from an #incidents channel. You get immediate situational awareness.
- Finished a project task? Use `messages_send` to broadcast a final 'done' status update to your core team channel, keeping everyone in the loop.
- Missed an important chat decision? Run `channels_list` first to map out all channels, then use `channels_history` on the right one. It’s faster than asking a colleague.
- Acknowledging messages becomes part of the workflow. Use `reactions_add` for quick confirmation without needing to type anything.

## How It Works

The bottom line is, you manage your entire team's communication flow directly from your chat window using only prompts.

1. Subscribe to this server and provide your Slack Bot Token.
2. Your AI client authenticates with the token, giving it access rights to your workspace data.
3. You give a natural language prompt (e.g., 'Search for API outage mentions last week'), and the agent runs the necessary tools against the live Slack environment.

## Frequently Asked Questions

**How do I get started with Slack MCP?**
Subscribe, then create a Slack App at **api.slack.com/apps → Create New App**. Go to **OAuth & Permissions**, add the required bot scopes (channels:read, chat:write, search:read, users:read), install the app to your workspace, and paste the **Bot User OAuth Token** (starts with xoxb-) here. No code, no webhooks — just connect and go.

**Can my AI agent send messages and reply in threads?**
Yes. Your agent can post to any channel the bot has been invited to — including threaded replies. Just say 'post in #engineering that the deploy is complete' or 'reply in the thread about the bug fix'. It supports Slack's full mrkdwn formatting including bold, links, code blocks, and mentions.

**How can I find a specific conversation from last week?**
Tell your agent to search for it — 'find messages about the Q3 budget review' or 'search for messages from @sarah about the client proposal'. The agent uses Slack's search API with support for modifiers like from:user, in:channel, and date ranges. No more scrolling through channels — your agent retrieves the exact messages you need.

**Can I manage multiple channels and monitor team activity?**
Absolutely. List all channels to get an overview of your workspace structure, read history from specific channels to audit conversations, and check team member profiles, statuses, and timezones. Perfect for distributed teams, engineering organizations, and operations managers who need a bird's-eye view of communication across dozens of channels.

**How does using the `channels_list` tool help me understand my workspace structure in Slack?**
It returns a comprehensive list of all public and private channels your bot can see. This process gives you the necessary Channel IDs, which are required to send messages or read history later.

**Using `users_list`, how do I retrieve information about team members in Slack?**
The tool provides user IDs, names, emails, and current statuses. This lets your agent accurately identify message authors or send targeted direct messages without manual searching.

**If I need to audit activity, how does the `channels_history` tool retrieve past messages from Slack?**
It fetches recent messages in reverse chronological order. You must provide a Channel ID first; this mechanism is key for auditing or reviewing threads within specific channels.

**How do I use the `reactions_add` tool to quickly acknowledge a message in Slack?**
You can add an emoji reaction to any specific message. Be sure you have both the Channel ID and the exact message timestamp (`ts`)—the history tool helps get that time.