What Is the Slack MCP Server?
The slack mcp server mcp server setup guide you need starts here. This server implements the Model Context Protocol (MCP) to connect AI agents directly to Slack’s API. It gives LLM clients — Claude, Cursor, and others — read and write access to Slack workspaces. Agents can read channel history, post messages, list users, and search across messages without leaving the AI interface. Setup takes under 5 minutes. The server runs locally via npx and authenticates through a Slack Bot Token and App-level token. For teams already using MCP to connect tools like the Discord MCP Server or Twilio MCP Server, adding Slack follows the same pattern.
Quick Facts
| Field | Value |
|---|---|
| Package | @modelcontextprotocol/server-slack |
| Install | npx -y @modelcontextprotocol/server-slack |
| Compatible with | Claude Desktop, Cursor, Cline, any MCP-compatible client |
| Auth required | SLACK_BOT_TOKEN + SLACK_TEAM_ID |
| Status | Active (Anthropic-maintained) |
| GitHub | github.com/modelcontextprotocol/servers |

What You Can Do With It
The Slack MCP Server exposes 6 core tools to connected AI agents:
slack_list_channels— Retrieve all public channels in the workspace, with member counts and topic metadataslack_post_message— Post a message to any channel the bot has access toslack_reply_to_thread— Reply directly inside an existing thread bythread_tsslack_add_reaction— Add emoji reactions to specific messagesslack_get_channel_history— Pull up to 100 messages from a channel in a single callslack_get_thread_replies— Fetch all replies in a threadslack_get_users— List workspace members with display names and IDsslack_get_user_profile— Retrieve profile details for a specific user
Practical applications include: automated standup summaries, AI-drafted incident notifications, and routing outputs from other MCP tools — such as a Jira MCP Server ticket update — directly into a Slack channel.
How to Set It Up (slack mcp server mcp server setup guide)
Step 1 — Create a Slack App
Go to api.slack.com/apps → “Create New App” → “From scratch”. Name it anything. Select your workspace.
Step 2 — Set OAuth Scopes
Under “OAuth & Permissions”, add these Bot Token Scopes:
– channels:history, channels:read
– chat:write
– reactions:write
– users:read, users:read.email
– groups:read (for private channels, if needed)
Step 3 — Install to Workspace
Click “Install to Workspace”. Copy the Bot User OAuth Token (starts with xoxb-). Also copy your Team ID from workspace settings (starts with T).
Step 4 — Configure Your MCP Client
Add this block to your claude_desktop_config.json (or equivalent):
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-token-here",
"SLACK_TEAM_ID": "T0XXXXXXXXX"
}
}
}
}
Step 5 — Restart and Test
Restart Claude Desktop. Ask: “List the channels in my Slack workspace.” The agent calls slack_list_channels and returns results within 2–3 seconds on a standard connection.

Works Best With
| Client | Integration Quality |
|---|---|
| Claude Desktop | Full support — tested by Anthropic |
| Cursor | Works via MCP config file |
| Cline (VS Code) | Compatible, community-confirmed |
| Windsurf | Compatible with standard MCP config |
Pair this server with the Notion MCP Server to push AI-generated summaries from Notion pages into Slack channels automatically. Combine with the Linear MCP Server to post Linear issue updates to engineering channels without manual copy-paste.
If you use AI tools to draft the content that gets posted — for example, SEO briefs or content outlines — → Try Frase integrates with your content workflow and pairs well with automated Slack distribution pipelines.
Known Limitations
- No file uploads. The server cannot attach files or images to messages. Post text only.
- Public channels only by default. Private channel access requires additional OAuth scopes and explicit bot invitations.
- 100-message cap per history call. Pagination is not built in. Fetching more than 100 messages requires multiple calls.
- No DM support. Direct messages to individual users are not exposed as a tool.
- Rate limits apply. Slack’s Tier 3 API rate limit is 50 requests per minute. High-frequency agents hit this ceiling fast.
- Read-only search is absent. There is no
slack_search_messagestool in the current release. Search requires a separate Slack API call outside MCP.

Community Resources
- GitHub Issues: github.com/modelcontextprotocol/servers/issues — active bug reports and feature requests
- MCP Discord: discord.gg/anthropic — community support channel for MCP integrations
- Slack API Docs: api.slack.com/methods — reference for all underlying API methods the server wraps
- npm Package: npmjs.com/package/@modelcontextprotocol/server-slack — version history and download stats
For teams building video content around their Slack-connected AI workflows, → Try Pictory converts scripts and summaries into short videos — useful for async communication across distributed teams.
FAQ
Does the Slack MCP Server support private channels?
Yes, but only if the bot is explicitly invited to the private channel and the groups:read and groups:history scopes are added during app setup.
Is this server free to use?
The MCP server itself is free and open source under the MIT license. Slack API usage is free up to standard workspace limits. Paid Slack plans ($7.25–$12.50/user/month in 2026) unlock higher API rate limits and longer message history.
Can I post to multiple workspaces?
Not with a single server instance. Each instance uses one SLACK_BOT_TOKEN tied to one workspace. Run separate instances with separate tokens for multiple workspaces.
How does this compare to the Discord MCP Server?
The Discord MCP Server covers similar messaging primitives. Slack’s version adds user profile lookups and reaction tools that Discord’s implementation does not currently expose.
What happens if my bot token expires?
Slack Bot Tokens do not expire unless manually revoked. If you rotate the token in the Slack app settings, update the SLACK_BOT_TOKEN value in your MCP config and restart the client.



