What Does the Slack MCP Server Do and How Do You Set It Up?
The Slack MCP server connects AI assistants to Slack workspaces through the Model Context Protocol (MCP), the open standard Anthropic created in November 2024. Slack runs the official server as a hosted remote endpoint at https://mcp.slack.com/mcp, announced May 29, 2025, and it lets third-party AI assistants like Claude and Perplexity search channels, read threads, send messages, and work with canvases under your existing Slack permissions (Slack help center).
One sentence from Slack’s own integration repository frames everything below: the official server is remote-only, and “no local installation is required or supported” (slackapi/slack-mcp-plugin). The npm package a 2025 tutorial installs is the archived reference server, and the most-searched community alternative is a third implementation entirely. Knowing which of the three you are configuring is half the setup.
This page covers what the official server exposes, the three Slack server implementations and which one each tutorial generation describes, the OAuth and admin-approval model that is the real install gate, the exact configuration per client, the failures and fixes, and the governance tradeoff between the official path and the no-app community path.
All communication MCP servers · What MCP is and how it works
What Does the Slack MCP Server Expose?
The Slack MCP server exposes tools for searching through Slack, retrieving and sending messages, managing canvases, and managing users (Slack Developer Docs). The model searches a workspace’s conversations, reads channel and thread history, posts replies, and edits canvas content through tool calls.
| Tool family | What the model does with it |
|---|---|
| Search | Searches messages, files, users, and channels across the workspace |
| Messages | Retrieves channel and thread history; sends messages and replies |
| Canvases | Reads, creates, and edits Slack canvases |
| Users | Looks up and manages user information |
The coverage is deliberate, not exhaustive: the official server exposes a curated subset of the Slack Web API, not the full set of 200+ methods (Truto, March 2026). The subset tracks the agent use cases Slack designed for, which it names as data grounding, contextual output into conversations, and canvas interaction (slack.dev, May 29, 2025). The server launched alongside Slack’s Real-Time Search API, and the pairing shows the intent: WRITER’s production integration searches messages, files, users, and channels and reads full thread conversations through it (Slack).
Four workflows show what the tool set produces in practice:
- Incident response. “Summarize the outage thread and post the action items to #engineering” chains search, thread retrieval, and a send: the model reads the real conversation and delivers the summary where the team works.
- Search-grounded answers. “What did we decide about the pricing change?” runs workspace search and answers from the actual messages instead of the model’s guess.
- Thread to canvas. “Turn this thread into a canvas with decisions and owners” reads the thread and writes the structured canvas through the canvas tools.
- Draft-for-review replies. The model reads a thread and drafts your reply without sending it, the read-first pattern that covers most daily use with no send authority at all.
Conversational reads are heavy reads. A full channel history pulled into context costs what any large read costs, so targeted searches beat history dumps, the same token discipline every communication server rewards.
Which Slack MCP Server Is Which?
Three implementations answer to the name “Slack MCP server”: the archived Anthropic reference, the official Slack remote server, and the korotovsky community server. Every tutorial describes one of the three, and the configs are incompatible.
| Implementation | Status | Transport and auth | How tutorials show it |
|---|---|---|---|
@modelcontextprotocol/server-slack | Archived 2025; no longer updated | Local stdio; xoxb bot token in env | The npx config with SLACK_BOT_TOKEN, standard in early-2025 guides |
| Official Slack server | Current; Slack-operated | Remote streamable HTTP at mcp.slack.com/mcp; OAuth, no key | The hosted URL with an OAuth block |
korotovsky/slack-mcp-server | Current; community-maintained | Local stdio; runs without an installed Slack app | Its own README pitch: “no permission requirements,” DMs, Group DMs, GovSlack |
The archived reference is the maintenance-recency failure this site’s server directory screens for: it predates the official server and misses every protocol change since 2025. The official server is the governed path: workspace admins approve it, and access follows your existing permissions. The korotovsky server is the ungoverned path: it connects without a Slack app installation, which is precisely the property an admin cannot see or approve, and the governance section below prices that tradeoff.
A fourth pattern circulates and corresponds to nothing: guides from as late as March 2026 walk through installing an official-sounding local npm package for the current server. The slackapi repository’s remote-only statement rules it out. The official server has a URL, not a package.
How Does the Slack MCP Server Authenticate?
The official server authenticates through Slack OAuth, and a workspace admin must approve MCP integration before any user connects. No API key sits in a config file: the client initiates an OAuth flow, the user consents, and access mirrors what that user already sees in Slack.
Three rules define the model:
- Admin approval is the gate. “Your Slack workspace administrator must approve MCP integration before you can use this feature” (slackapi/slack-mcp-plugin). A perfect client config does nothing in an unapproved workspace, which makes the approval request step one of the install, not an afterthought.
- Only marketplace and internal apps qualify. “Only apps published in the Slack Marketplace and internal apps can use MCP at this time; unlisted apps are prohibited from using MCP” (Slack Developer Docs). App builders connect through a published or internal app’s
client_idandclient_secretunder confidential OAuth. - Discovery is standard. Clients supporting OAuth 2.0 Authorization Server Metadata (RFC 8414) resolve the flow from
mcp.slack.com/.well-known/oauth-protected-resourceautomatically, which is why end users in Cursor or Claude Code see a browser consent window and nothing else.
The permission inheritance is the design’s point: the server respects existing permissions, so the model reads what you can read and nothing more (slack.dev, May 29, 2025).
How Do You Set Up the Slack MCP Server?
Set up the official Slack MCP server by adding the hosted URL https://mcp.slack.com/mcp to your client and completing the OAuth consent in the browser. Confirm admin approval first; every step after it is mechanical.
Cursor
Slack publishes the exact Cursor entry in its integration repository:
{
"mcpServers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"clientId": "1601185624273.8899143856786",
"callbackPort": 3118
}
}
}
}
The oauth block carries Slack’s published client ID and the local callback port the consent flow returns to (slackapi/slack-mcp-plugin). Cursor opens the browser consent on first connection.
The faster path as of 2026 is the plugin: the same slackapi repository ships an Add to Cursor button and a Cursor plugin that configures the server automatically when it loads, then prompts the OAuth login. The JSON above is what the plugin writes for you, and editing it by hand stays the fallback. Client-side steps are at add MCP servers to Cursor.
Claude Code
Add the server with one command, then approve the OAuth grant when the browser opens:
claude mcp add --transport http slack https://mcp.slack.com/mcp
The full client walkthrough is at set up MCP in Claude Code.
Claude Desktop
Claude Desktop connects remote servers through Settings, then Connectors: add the https://mcp.slack.com/mcp URL, and the OAuth consent opens in the browser. The chat pairing fits the search-grounded and draft-for-review workflows above; the config-file path is unnecessary for a hosted OAuth server. The walkthrough is at set up MCP in Claude Desktop.
VS Code and GitHub Copilot
VS Code takes the hosted URL under its "servers" root key, not "mcpServers", with "type": "http". Clients supporting RFC 8414 discovery, VS Code included, resolve the OAuth flow from the well-known endpoints without a manual oauth block.
OpenCode, Kiro, and other clients
OpenCode and Kiro take the same hosted URL where each accepts a remote MCP server, and both appear in live autocomplete as Slack pairings, a signal of where setups are happening.
Verify the connection
A working connection shows the Slack tools in the client’s MCP panel, and the prompt “search our Slack for messages about the launch” returns real results from channels you can access. The OAuth consent completing in the browser is the midpoint check; the failures below are what interrupt it.
Why Isn’t the Slack MCP Server Working?
The four most common failures are a workspace without admin approval, an unlisted app blocked by policy, an archived-reference config from a 2025 tutorial, and a missing scope on an app integration.
- The OAuth flow completes but the connection is refused, or the consent never appears. The workspace has not approved MCP integration. This is the gate, not a bug: request approval from a workspace admin, and retry after it is granted.
- An app-based integration fails despite correct credentials. Unlisted apps are prohibited from using MCP. Publish the app to the Slack Marketplace or register it as an internal app; the
client_idof an unlisted app does not qualify (Slack Developer Docs). - The config runs
npx @modelcontextprotocol/server-slackwith aSLACK_BOT_TOKEN. That is the archived 2025 reference server. It still launches, and it misses every protocol and API change since archival. Replace the block with the hosted URL config above. The same applies to guides installing an official-sounding local npm package for the current server: the official path is remote-only, and the package those guides name is not it. - An app integration connects but specific calls fail on permissions. The app’s OAuth scopes do not cover the tool’s action. Add the missing scope in the app’s OAuth & Permissions settings and reinstall the app to mint a token carrying it.
A connected, approved server now reads your workspace the way you do. Who controls that access, and what the ungoverned alternative trades away, is the supplementary half of this page.
Who Controls What the Slack MCP Server Can Read?
Workspace admins control the official server’s access, and the OAuth model scopes every connection to what the consenting user already sees. Admins approve and manage all MCP client integrations, and enterprise controls keep visibility over how integrations touch data (Slack Developer Docs; slack.dev, May 29, 2025). The design turns the communication category’s safety rule into infrastructure: access is granted per user, visible to admins, and revocable centrally.
The community alternative trades exactly this away. The korotovsky server’s pitch, “no permission requirements” with DM and Group DM access, means it connects without an installed Slack app, so nothing appears in the admin’s integration view to approve, audit, or revoke. For a personal workspace, that is convenience. In an employer’s workspace, it is shadow IT carrying your session’s full reach, including conversations an approved integration would never have been granted. The capability difference is real and so is the accountability difference; choose with both in view.
Two practices apply on either path. Read-first scoping, the category rule from the communication hub, holds here: a model that reads and drafts for your review covers most Slack workflows without send authority. And per-call approval in the client is the last control: it works exactly as long as you read what you approve.
Should You Use the Slack MCP Server or the Discord MCP Server?
The platform decides, not the servers: Slack workspaces take the Slack server, Discord communities take a Discord server. The meaningful difference is maintenance class. Slack operates an official OAuth remote server with admin governance; Discord’s coverage comes from community-maintained servers with bot-token auth and maintenance the commit history must verify per implementation. Teams running both platforms run both servers side by side.
Slack MCP Server Questions
Does Slack Have an Official MCP Server?
Yes. Slack operates an official remote MCP server at https://mcp.slack.com/mcp, announced May 29, 2025, with OAuth authentication and admin-managed access. It is documented in the Slack Developer Docs, and it is the maintained path; the Anthropic reference server that preceded it was archived in 2025.
Is the Slack MCP Server Remote or Local?
Remote only. Slack hosts the official server, clients connect to it over streamable HTTP, and no local installation is required or supported (slackapi/slack-mcp-plugin). Local Slack MCP servers exist, and they are different implementations: the archived reference and community servers such as korotovsky’s, each with its own auth model and governance profile.
Can Slack Act as an MCP Client?
No. Slack is the data side of the protocol: its server exposes workspace content to MCP clients, and Slack itself does not ship a general MCP client. The pattern behind the question is real but inverted: third-party integrations use Slack as a chat front-end to AI agents, listening for requests in channels and relaying them onward. In protocol terms those integrations are the client; Slack stays the surface and the source.
Is the Slack API Free?
Yes. Building against the Slack API and connecting the MCP server carry no separate API fee; the costs are Slack plan costs. Workspace plan tier governs admin controls and feature availability, and the marketplace-or-internal app rule governs who can build MCP integrations, not who pays.
Every connection on this page starts where this answer ends: an admin approves, a user consents, and the server reads exactly what that user could already read. Get the approval first, paste one URL, and the workspace is in the conversation.