# Slack MCP

> Slack MCP Server lets your AI client interact with your entire Slack workspace. You can programmatically list channels, check who's online (`get_user_presence`), send messages, and search deep into message history—all without leaving your agent interface. It gives your AI the ability to read team discussions and manage basic user data.

## Overview
- **Category:** industry-titans
- **Price:** Free
- **Tags:** instant-messaging, channels, workspace, notifications, file-sharing, team-collaboration

## Description

Your AI client connects directly to your Slack workspace using this MCP Server. It gives your agent the ability to read team discussions, track user status, and send updates—all without you leaving your own interface. You'll never have to copy-paste data from a chat window again.

### Reading Channel Data

You can make your AI client see everything that happens in any channel. First, it retrieves the full list of all public channels using `list_channels`. Once it knows the channel ID, you can pull specific metadata for that room—things like its official description or topic—with `get_channel_details`. To track conversations over time, your agent uses `get_channel_history`, pulling back a chronological list of recent messages sent within that specific channel.

When you need to know what was important in a thread, the AI client can get all pinned messages for any channel using `list_pins`. It also reads every emoji and reaction left on any given message via `list_reactions`.

If you want context from old threads, your agent doesn't just look at recent posts; it runs targeted searches across multiple channels using `search_messages`, letting you filter messages by keywords or specific timeframes. Finally, if you need to send a quick update or announcement, the server allows your client to post new messages directly into any designated channel or private direct message (DM) using `send_message`.

### Managing Users and Presence

Your agent can keep tabs on who's in the office and what they're working on. It starts by pulling a complete roster of every single member in the workspace via `list_users`. From that list, you can fetch deep details about any individual—like their job title or department—by calling `get_user_profile`. To know if someone's actually available for a quick chat, your client checks the current status (online, away, etc.) using `get_user_presence` against a user ID. Before anything else, you can run `check_connection` to make sure your AI client has all the proper API credentials needed to talk to Slack.

### Putting It All Together

Your agent combines these tools: it checks if a specific employee is online (`get_user_presence`), finds their professional role using `get_user_profile`, and then sends them a follow-up message in a private chat (`send_message`). Alternatively, your client pulls the entire history of a project channel (`get_channel_history`), looks at who reacted to key posts (`list_reactions`), and summarizes everything for you. It's designed so that no matter what piece of team communication data you need—a name, a date stamp, or an emoji reaction—your agent can pull it directly from the source.

## Tools

### list_pins
Gets a list of any messages that were pinned to the top of a specific channel.

### list_reactions
Reads all emojis and reactions placed on a single, specified message.

### check_connection
Verifies that your AI client has proper API access credentials for the Slack workspace.

### get_channel_details
Retrieves specific metadata, like channel description or topic, for a given channel ID.

### get_channel_history
Lists recent messages that were sent in a specified channel over time.

### get_user_presence
Checks and returns the current status (online, away, etc.) for a user ID.

### get_user_profile
Fetches comprehensive details about a workspace member, like their job title or department.

### list_channels
Retrieves a list of all public channels available in the entire workspace.

### list_users
Retrieves the full roster of every member within the Slack workspace.

### send_message
Posts a new message directly to a designated channel or direct conversation (DM).

### search_messages
Searches for messages matching specific keywords or timeframes across multiple channels.

## Prompt Examples

**Prompt:** 
```
Post an update to the #general channel: 'The new feature is live!'.
```

**Response:** 
```
Message posted successfully! I've sent the update to the #general channel in your Slack workspace.
```

**Prompt:** 
```
Show me the activity summary for all channels with message volumes and active participants this week.
```

**Response:** 
```
Activity across 24 channels this week. Most active: #engineering (456 messages, 18 participants), #general (345, 42 participants), #product (234, 12 participants), #support (189, 8 participants), #sales (156, 14 participants). Quietest: #announcements (3 messages), #random (23). Total messages: 2,340. Active users: 67 of 85 (78.8%). Peak hours: 10-11 AM and 2-3 PM. Threads: 234 created, avg 4.2 replies. Reactions: 1,890 total, most used: 👍 (456), 🎉 (234), ❤️ (189). Files shared: 89.
```

**Prompt:** 
```
Post a message to the #engineering channel announcing the deployment freeze for next week.
```

**Response:** 
```
Message posted to #engineering. Content: "🚨 *Deployment Freeze Notice* 🚨\n\nTeam, we have a deployment freeze from Monday May 19 through Friday May 23 for the quarterly release preparation. All PRs must be merged by Friday EOD. Emergency hotfixes only during the freeze window. Please coordinate with @release-team for any exceptions.\n\n📋 Freeze checklist: https://wiki.internal/release-prep\n🗓 Release date: May 26". Message ID: msg_1716234567. Reactions received within 5 minutes: 12 (👍 8, 👀 4). Thread reply from @sarah: "Got it, finishing my PR today."
```

## Capabilities

### Read Channel Data
Fetch channel details, list pinned messages, and retrieve message history for a specific channel.

### Manage Users & Presence
List all workspace members, view detailed user profiles, and check if any given user is currently online.

### Search Conversations
Search for messages across the workspace or send new updates to specific channels.

## Use Cases

### Onboarding a New Team Member
A new PM needs context on the #engineering channel. Instead of asking 5 people, they prompt their agent: 'Give me the top 3 discussion points about feature X.' The agent runs `search_messages` and compiles a summary from recent chat history, solving the knowledge gap in seconds.

### Pre-Meeting Status Check
An Ops Manager is organizing an ad-hoc meeting. They tell their agent: 'Who's free for a call right now?' The agent calls `get_user_presence` against the list of users, instantly giving back only those who are online and available.

### Investigating Project Delays
A support lead needs to know why a ticket stalled. They ask their agent: 'What was discussed about Ticket 123 last week?' The agent uses `get_channel_history` and filters the results, providing the exact conversation threads they need.

### Mass Communication Coordination
An Ops team needs to announce a system outage. They prompt: 'Send an urgent notice about the database downtime to #alerts.' The agent uses `send_message`, ensuring the critical information gets posted directly and immediately.

## Benefits

- Need to know who's available? Use `get_user_presence` to check a user’s real-time status without asking them directly. It gives you instant availability data.
- Stop reading through pages of chat logs. `search_messages` lets your agent query keywords or dates across the whole workspace, giving you immediate context on old discussions.
- Running into missing info? Use `get_user_profile` to pull a person's full details (title, department) instantly. This is better than manually checking their profile page every time.
- Announcing something needs precision. The `send_message` tool lets your agent post announcements directly to the right channel, ensuring no one misses critical updates.
- Can't find that important document? Use `list_pins` to retrieve all messages pinned in a key channel. It saves you from scrolling through months of chat history just for one link.

## How It Works

The bottom line is, your AI client uses one central connection to run several specific commands against Slack's API, giving you a single point of automation for comms data.

1. Subscribe to this server and provide your Slack Bot User OAuth Token (xoxb-...) in the app settings.
2. Your AI client uses the token to authenticate against the MCP Server endpoint.
3. You issue a command (e.g., 'Search for PR reviews from last week') and the agent calls multiple tools (`get_channel_history`, `search_messages`) sequentially to build an answer.

## Frequently Asked Questions

**How do I use the send_message tool to post an announcement?**
You tell your agent, 'Send a message to #general: Our deadline moved.' The agent executes `send_message` using the channel ID and posting the content. You just need to specify the target and text.

**What is the difference between list_channels and get_channel_details?**
`list_channels` gives you a roster of all public channels available in the workspace (the names). `get_channel_details` requires a specific channel ID and returns metadata about that single channel, like its topic or description.

**Can I find messages from a user using search_messages?**
Yes. You can instruct your agent to use `search_messages`, specifying the keywords *and* the target user's ID or name. This narrows down the search dramatically.

**Does get_user_profile give me enough info for a support ticket?**
It gives you comprehensive details like job title, department, and member metadata that should cover most support needs. It's better than just guessing who they are.

**How many tools does the Slack MCP Server have?**
The server exposes 11 distinct tools for managing communication in Slack, covering everything from checking connections to reading reactions on specific messages.

**If I use the check_connection tool, what does a successful run confirm about my API access?**
It confirms that your bot token has current permissions to communicate with Slack. A green status means you can send messages and read channel data without authentication errors.

**How does list_reactions help me track message engagement, beyond just the message content?**
It gives a count of specific interactions like 👍 or 🎉 attached to an individual post. This lets you measure how much the team is reacting to content, which is key for sentiment analysis.

**When I call get_user_presence, am I getting real-time status updates, or is there a latency?**
It provides near real-time availability data. While it’s fast, remember that network conditions can cause slight delays; the information reflects the user's last reported status.

**How do I find my Slack Bot User OAuth Token?**
Log in to [**Slack API**](https://api.slack.com/apps), select your app, and navigate to **OAuth & Permissions**. You will find the token starting with `xoxb-` under the **OAuth Tokens for Your Workspace** section.