---
name: "Slack MCP"
description: "Connect Slack to your AI agent using your own Slack account — read, send, and search messages directly from Claude or any other MCP-compatible agent."
type: mcp
roles: ["Engineering", "Product", "Design", "Operations", "Customer Success"]
activities: ["Communication", "Collaboration"]
tags: ["Slack", "MCP", "Integration", "Setup", "Communication"]
owner: "Integration Team"
compatibility: "All MCP-compatible AI agents"
---

# Slack MCP

> Connect Slack to your AI agent using your own Slack account — read, send, and search messages directly from Claude or any other MCP-compatible agent.

## Overview

Slack MCP lets an AI agent read, send, and search Slack messages on your behalf — using your own Slack account (a `xoxp-` user token), not a bot. With it, you can ask Claude to summarize a channel, message your team, or reply to a thread straight from the Claude chat without opening Slack.

Compatible with every AI agent that supports the Model Context Protocol (MCP), including Claude Desktop, Cursor, and Windsurf.

## Capabilities

| Capability | Description |
| --- | --- |
| Read Messages | Read messages from a specific channel, DM, or thread |
| Send Message | Send a message to a channel or DM on your behalf |
| Reply to Thread | Reply to an existing Slack thread |
| Search Messages | Search messages by keyword across the workspace |
| List Channels | See the list of channels you're a member of |
| Get User Info | Fetch a Slack user's profile by username or ID |

## Install Steps

### 1. What You Need

- Claude Desktop (Pro/Max/Team/Enterprise account) — [download](https://claude.ai/download)
- Node.js LTS — [download](https://nodejs.org)
- A Slack account with access to the workspace you want to connect

### 2. Authorize with Slack

Open the following link in your browser, log in to Slack → pick the workspace → click **Allow**:

👉 [Authorize Slack for Claude MCP](https://mcp.qiscus.com/slack/authorize)

### 3. Copy the config snippet

After authorizing, you'll land on a page showing a config snippet. Click **Copy Token** to copy the whole snippet:

```json
{
  "mcpServers": {
    "slack": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-slack"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxp-598...",
        "SLACK_TEAM_ID": "THLPKPYKD..."
      }
    }
  }
}
```

> **Warning:** This token grants full access to your Slack account. Don't share it, don't commit it to Git, and don't paste it into public chats.

### 4. Open the Claude Desktop config file

Claude Desktop → **Settings** → **Developers** → **Edit Config**

### 5. Paste the configuration

If the file is still empty, paste the copied snippet as is. If other servers already exist, merge it into the same `mcpServers` block:

```json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/budi/Documents"]
    },
    "slack": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-slack"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxp-598...",
        "SLACK_TEAM_ID": "THLPKPYKD..."
      }
    }
  }
}
```

> **Windows:** change `"command": "npx"` to `"command": "npx.cmd"`.

### 6. Save & Restart

- Save the file (`Cmd+S` / `Ctrl+S`)
- Quit Claude Desktop completely:
  - Mac: `Cmd+Q`
  - Windows: right-click the system tray icon → Quit
- Open Claude Desktop again

### 7. Verify

1. Open the **Cowork** tab
2. Click **+** in the chat → **Connectors**
3. `slack` appears in the list ✅
4. Test prompt: *"Check the latest messages in #general"*

## Example Prompts

```
Summarize everything posted in #engineering today
```

```
Send a message to #team-marketing: 'weekly meeting at 3pm on Zoom'
```

```
Find messages that mention me this week and summarize the important ones
```

```
List all the channels that were active this week
```

```
Reply to the last message in my DM with Andi: 'got it, let me check first'
```

## Troubleshooting

| Problem | Solution |
| --- | --- |
| OAuth link error / redirect fails | Make sure you log in to Slack with the right workspace, not a personal one |
| Config page doesn't appear after authorizing | Check your pop-up blocker, try another browser (Chrome/Firefox) |
| `slack` doesn't show up in Connectors | Validate the JSON at [jsonlint.com](https://jsonlint.com) |
| JSON is valid but it still doesn't show up | Quit Claude Desktop completely (not just close the window), then reopen |
| Mac: `command not found` | Run `which npx` in Terminal and use the full path: `"command": "/usr/local/bin/npx"` |
| Windows: `command not found` | Change `"npx"` to `"npx.cmd"` |
| Error 401 / invalid token | The token expired or was revoked. Repeat step 2 to re-authorize |
| Bot can't post to a specific channel | The user token (`xoxp-`) requires you to have joined that channel in Slack |
| Still failing | Check the logs: Mac `~/Library/Logs/Claude/mcp-server-slack.log`, Windows `%APPDATA%\Claude\logs\mcp-server-slack.log` |

## Update & Revoke Token

**Re-authorize** (token expired or switching workspaces):

1. Repeat step 2 of this tutorial
2. Replace `SLACK_BOT_TOKEN` and `SLACK_TEAM_ID` in the config
3. Restart Claude Desktop

**Revoke** (token leaked or no longer needed):

1. Open Slack **Account Settings** → **Connected Apps**
2. Find "Claude MCP" → click **Revoke**
3. Remove the `slack` section from `claude_desktop_config.json`

## Important Notes

- The token is a user token (`xoxp-`) — Claude acts as you in Slack, not as a bot.
- The granted scopes include canvas read/write, sending messages, reading DMs, and search — review every Claude action before approving.
- The token is stored in plain text in `claude_desktop_config.json`. Don't share this file.
- Stdio MCP doesn't run on mobile/Dispatch — Claude Desktop only.

## Config File Locations

| Platform | Path |
| --- | --- |
| Mac | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
| Windows MSIX/Store | `%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json` |
