Provides tools for interacting with the Slack API, enabling capabilities such as listing channels and users, managing messages (posting, updating, and deleting), retrieving channel history, adding emoji reactions, and searching workspace messages.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Slack MCP ServerSend a message to #general saying the quarterly report is now ready"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Slack MCP Server
MCP server for Slack API integration with HTTP transport.
Authentication Methods
Option 1: Bot/User Token (Recommended)
Standard Slack API tokens. Requires a Slack app with appropriate scopes.
export SLACK_TOKEN=xoxb-your-bot-token
# or
export SLACK_TOKEN=xoxp-your-user-tokenOption 2: Cookie-Based Auth (User Impersonation)
Uses browser session cookies to impersonate a logged-in user. Useful when:
You don't have admin approval for a Slack app
You need to act as a specific user
You want to access private channels the user is a member of
Extracting Tokens from Chrome
Open Chrome DevTools on your Slack workspace:
Navigate to
https://your-workspace.slack.comPress
F12or right-click → "Inspect"Go to the Application tab
Get the
In DevTools, go to Console tab
Paste and run:
JSON.parse(localStorage.localConfig_v2).teams[Object.keys(JSON.parse(localStorage.localConfig_v2).teams)[0]].tokenCopy the
xoxc-...token
Get the
In DevTools, go to Application → Cookies →
https://your-workspace.slack.comFind the cookie named
dCopy the Value (starts with
xoxd-...)⚠️ The value is URL-encoded — keep it as-is
Get workspace details:
Team ID: In Console, run:
JSON.parse(localStorage.localConfig_v2).teams[Object.keys(JSON.parse(localStorage.localConfig_v2).teams)[0]].idUser ID: Run:
JSON.parse(localStorage.localConfig_v2).teams[Object.keys(JSON.parse(localStorage.localConfig_v2).teams)[0]].user_idDomain: Your Slack URL (e.g.,
your-workspace.slack.com)
Create your env file:
cp cookie-tokens.env.example /path/to/secrets/cookie-tokens.env # Edit the file with your extracted values
Using the Cookie Client
A shell script is provided for quick API calls:
# Set up your tokens
source /path/to/secrets/cookie-tokens.env
# Test authentication
./scripts/slack-cookie-client.sh auth
# List channels
./scripts/slack-cookie-client.sh channels 20
# Get channel history
./scripts/slack-cookie-client.sh history C0123ABCDEF 10
# Send a message
./scripts/slack-cookie-client.sh send C0123ABCDEF "Hello from the script!"
# Search messages
./scripts/slack-cookie-client.sh search "keyword"
# List users
./scripts/slack-cookie-client.sh users 50Token Expiration
Cookie tokens expire when:
You log out of Slack in the browser
You change your password
Slack rotates session tokens (typically every few weeks)
When tokens expire, repeat the extraction process.
Setup (Standard Token)
Get a Slack token (Bot Token
xoxb-...or User Tokenxoxp-...)Configure environment:
export SLACK_TOKEN=xoxb-your-tokenRun:
npm install
npm run start:httpDocker
docker build -t slack-mcp .
docker run -d -p 3929:3929 -e SLACK_TOKEN=xoxb-... slack-mcpEndpoints
GET /health- Health checkGET /tools- List available toolsPOST /call- Call a tool
Available Tools
Tool | Description |
| List channels |
| Get channel messages |
| Send a message |
| Edit a message |
| Delete a message |
| Add emoji reaction |
| Get user details |
| List workspace users |
| Search messages |
Example
# List channels
curl -X POST http://localhost:3929/call \
-H "Content-Type: application/json" \
-d '{"name": "slack_list_channels", "arguments": {}}'
# Post message
curl -X POST http://localhost:3929/call \
-H "Content-Type: application/json" \
-d '{"name": "slack_post_message", "arguments": {"channel": "C123", "text": "Hello!"}}'Token Scopes Required
For Bot Token (xoxb-...):
channels:read,channels:historychat:writeusers:readreactions:writesearch:read(for search)
For User Token (xoxp-...):
Same as above, plus any additional scopes for your use case
For Cookie Auth:
No scopes needed — inherits all permissions of the logged-in user