Slack MCP server: the official server, setup and alternatives
Slack's official MCP server at mcp.slack.com: its tools, which clients work, admin approval, and setup in Claude, Cursor and Codex. Plus self-hosted and Upsy.
Updated
Short answer
Slack runs an official MCP server (a connector that lets an AI agent use your Slack) at https://mcp.slack.com/mcp. Through it, an agent searches messages and files, reads channels and threads, and sends messages as you. It's generally available since February 17, 2026.
- The easy way in is a client Slack has partnered with: Claude, Claude Code, Cursor or Perplexity, plus ChatGPT's and Codex's Slack plugin. Install it, sign in to Slack, and a workspace admin approves it. A few minutes.
- Any other client needs a Slack app of your own, because Slack doesn't let clients register themselves.
- Self-hosted servers such as korotovsky's run on your machine with a token you copy out of Slack.
- Upsy is a hosted Slack MCP server that works in any client with OAuth, Grok and Muse included, with up to five workspaces and limits you set per agent. It can't search Slack yet.
Slack's MCP server
| Address | https://mcp.slack.com/mcp |
| Transport | Streamable HTTP. No SSE (Slack's docs) |
| Sign-in | OAuth with a Slack user token, so the agent acts as you |
| Client registration | None: "Only directory-published apps or internal apps may use MCP." No dynamic client registration |
| Admin | A workspace admin approves the MCP integration, through Slack's usual app requests |
| Rate limits | The same as Slack's Web API for each tool |
Slack's developer docs name four clients that work with no code: Claude, Claude Code, Perplexity and Cursor. Slack's help center lists more partners, including ChatGPT, Notion, Devin and Dropbox. Grok, Muse and Gemini aren't on either list.
Its tools
Slack's docs describe what the server does rather than listing tool names. These are the names a connected client sees today:
| Group | Tools |
|---|---|
| Search | slack_search_public, slack_search_public_and_private, slack_search_channels, slack_search_users, slack_search_emojis |
| Read | slack_read_channel, slack_read_thread, slack_read_canvas, slack_read_file, slack_read_list, slack_read_user_profile, slack_list_channel_members, slack_list_user_channels, slack_get_reactions |
| Messages | slack_send_message, slack_send_message_draft, slack_schedule_message, slack_add_reaction, slack_create_conversation |
| Canvases, files and lists | slack_create_canvas, slack_update_canvas, slack_get_file_upload_url, slack_complete_file_upload, slack_create_list, slack_update_list, slack_add_list_record, slack_update_list_record |
- Search runs on Slack's Real-Time Search API. Private channels, DMs and group DMs need the private-search tool. Searches by meaning need Slack AI Search, on Business+ or Enterprise+; other plans get keyword search.
- Canvases can't be created on free Slack plans, and which tools a client gets depends on the scopes its Slack app asks for. Claude Code's plugin, for example, has no upload tools (issue #183).
- Messages carry a footer. Users report "Sent using Claude" or "Sent using @ChatGPT" under messages an agent sends (issue #25).
Connect it to your client
Claude Code. Install Slack's plugin inside a session and sign in when asked (Slack's guide):
/plugin install slack@claude-plugins-official
More in connect Slack to Claude Code.
Claude. Open Customize › Connectors, find Slack and click Connect. Anthropic's docs list it for Team and Enterprise, with the Claude app installed in Slack first, and a January 2026 update added Pro and Max. See Claude in Slack.
Cursor. Type /add-plugin slack in Agent chat, or install Slack from the Marketplace under Customize (Slack's guide). Adding mcp.slack.com to mcp.json by hand works only with a Slack client ID. More in connect Slack to Cursor.
Codex and ChatGPT. Install the Slack plugin from Plugins in ChatGPT or /plugins in the Codex CLI. Slack's harness page gives codex mcp add --transport http slack https://mcp.slack.com/mcp, but Codex has no --transport flag, and its sign-in fails with "Dynamic client registration not supported" (issue #13200). See connect Slack to Codex.
Anything else. Use a Slack app of your own, below.
Use your own Slack app
A company can point any client, or an agent it builds, at Slack's server through its own internal Slack app (Slack's guide):
- Create an app at api.slack.com/apps. Keep it internal: Slack says "unlisted apps are prohibited from using MCP".
- Under Agents, turn on Slack Model Context Protocol (MCP) Server.
- Add the user scopes for the tools you want, and the redirect URL your client uses.
- Install it in your workspace.
- Give your client the URL, your app's client ID, and its secret or PKCE.
For an agent you build, Slack's sample signs the user in and passes their token to the model's MCP tool as a bearer token.
Where Slack's server stops
- Approved clients only. Without a partner plugin, you need a Slack app and the right redirect URL, and some clients still fail to sign in.
- Admin approval. Slack says "App approval is always required in Enterprise organizations".
- One workspace per connection, and the limits on what the agent may do live in each client's settings, if it has any.
- Your data stays under Slack's terms. For the search API, Slack's API terms forbid "persistent copies, archives, indexes, or long-term data stores of other organizations' API Data".
If your client is on Slack's list and your admin approves it, use Slack's server. It's the only one with full search, canvases, lists and scheduled messages.
Slack MCP servers compared
| Slack's server | Upsy | korotovsky/slack-mcp-server | |
|---|---|---|---|
| Who runs it | Slack | Upsy | You, on your machine or server |
| Sign-in | OAuth, through a listed or internal Slack app | OAuth, no Slack app or token to set up | A user token, a bot token, or browser session tokens you copy out |
| Clients | Partner clients, or any with your own app | Any client with remote MCP and OAuth | Any client that runs a local server |
| Search | Yes | Not yet | Yes, with a user or browser token |
| Canvases, lists, scheduling | Yes | No | No |
| Workspaces | One per connection | Up to 5 in one server | One per running server |
| Limits per agent | In each client's settings | Read-only or picked tools, held by Upsy | Posting off until you turn it on |
| Record of actions | Slack's audit logs, on Enterprise | History and alerts | Your own logs |
Self-hosted servers
- korotovsky/slack-mcp-server is the popular one: about 1,900 stars, with search, DMs, unread messages and saved items. It runs with
npx -y slack-mcp-server@latest --transport stdioor in Docker. Posting stays off until you setSLACK_MCP_ADD_MESSAGE_TOOL. Its "stealth mode" uses thexoxcandxoxdtokens from a signed-in browser, which Slack doesn't document for other apps. - The original reference server,
@modelcontextprotocol/server-slack, is archived and its npm package deprecated. Zencoder's fork continues it with a bot token, but has had one release. - "Slack MCP client" usually means the other direction: a Slack bot that uses MCP servers, such as tuannvm/slack-mcp-client, now archived.
Slackbot as an MCP client
Since June 2026, Slackbot can use other apps' MCP servers (Slack's docs). A Slack app declares its servers, and once it's installed, people ask Slackbot to use them. You can't paste a server address into Slackbot; it comes from an installed app, a Marketplace one or your own internal app. Each person can have up to 5 active servers.
Upsy's Slack MCP server
Upsy connects through its own Slack app with a user token, so the agent acts as you, and no bot joins your channels. It's the same address as Upsy's other apps, https://upsy.ai/connect, so one server can hold your Slack, Gmail, Calendar, Drive and more.
What it adds:
- Any client: Claude, Claude Code, Cursor, Codex, ChatGPT, Grok, Muse, or anything with remote MCP and OAuth. No Slack app or client ID of your own.
- Up to five Slack workspaces, each with its own access.
- Limits Upsy enforces: Full access, Read-only, picked tools or No access, per agent. They hold whatever the client does.
- History and alerts: every read and send, under the agent that made it.
Where it falls short: Upsy's Slack app isn't in the Slack Marketplace yet, so Slack doesn't let it search, and it reads a channel or thread about once a minute, 15 messages at a time (Slack's limits). If your workspace requires approval for apps, an admin approves Upsy too.
Connect Slack to Upsy
- Go to upsy.ai and click Set up Upsy.
- Open Apps, click Connect an app and pick Slack. Pick the workspace on Slack's page and allow Upsy to act as you. Repeat for each workspace, up to five.
- On the Assistants page, click Add assistant and choose your client under Which assistant? for its exact steps.
Add the server to your client
Signing in opens an Upsy page: tick Slack, keep full access or pick Read-only, and click Allow.
- Claude Code:
claude mcp add --transport http --scope user upsy https://upsy.ai/connect, then/mcpto sign in. - Cursor: add
{"mcpServers":{"upsy":{"url":"https://upsy.ai/connect"}}}to~/.cursor/mcp.json, then click Connect next to upsy. - Codex:
codex mcp add upsy --url https://upsy.ai/connect, thencodex mcp login upsy. - Claude and ChatGPT: add
https://upsy.ai/connectas a custom connector (Claude, ChatGPT). - Grok and Muse: paste the setup prompt Upsy shows into a chat and approve the sign-in.
Server details, such as OAuth endpoints and token lifetimes, are in the Gmail MCP server guide; they're the same for Slack.
Check that it works
Using Upsy, show the last 10 messages in #general.
The agent should call slack_read_channel and list the messages with authors and times. The call shows in Upsy's History.
Upsy's Slack tools
| Tool | What it does | In Read-only |
|---|---|---|
slack_list_channels |
The channels, group DMs and DMs you're in | Yes |
slack_search_channels |
Finds channels by name, with topic and member count | Yes |
slack_search_users |
Finds people by name, display name or email | Yes |
slack_read_user_profile |
Someone's name, title, email, time zone and status | Yes |
slack_read_channel |
A channel's or DM's messages, newest first, filtered by time | Yes |
slack_read_thread |
A thread, from its first message | Yes |
slack_send_message |
Posts as you to a channel, a DM or a thread | No |
slack_search_messages is offered once Upsy is in the Marketplace. Names match Slack's server where both have the tool. With more than one workspace, each tool takes account.
Troubleshooting
"Incompatible auth server: does not support dynamic client registration"
The client tried to register itself with Slack's server, which Slack refuses. Use the client's Slack plugin (in Claude Code, claude mcp remove slack, then /plugin install slack@claude-plugins-official), or give the client your own Slack app's client ID. Codex shows the same problem as "Dynamic client registration not supported".
"Invalid client_id parameter" or "redirect_uri did not match any configured URIs"
The client ID isn't a Slack app with MCP turned on, or the app doesn't list the client's callback address. Claude Code's is http://localhost:3118/callback, and some users can't get Slack to accept it with their own app (issue #29934). Slack's plugin avoids this.
{"code":-32001,"message":"missing_token"}
The client reached Slack's server without signing in. Start the sign-in again: /mcp in Claude Code, or reconnect the plugin.
Slack asks you to request approval
Your workspace requires approval for apps. Send the request; once a workspace admin approves it, sign in again. This applies to Slack's partner apps and to Upsy alike.
An old /sse address stopped working
Slack's server has no SSE endpoint. Use https://mcp.slack.com/mcp.
Upsy can't search Slack
Expected until Upsy is in the Slack Marketplace. Name the channel, such as "in #backend", so the agent reads it instead.
"Slack is limiting how often Upsy can read messages"
Slack's limit for unlisted apps. Wait the seconds the message gives, and point the agent at one channel or thread at a time.
Security and privacy
- Every option acts as you. Slack's server and Upsy use a user token, so the agent sees only what you can see, and messages come from you.
- Slack's server keeps limits in each client: Claude, for one, lets you set each tool to Always allow, Needs approval or Blocked. On Enterprise plans, Slack's audit logs record each MCP tool call.
- Self-hosted servers hold your token on your machine. Browser session tokens act with your full account, so keep posting off unless you need it.
- Through Upsy, agents never get the Slack token: they call Upsy, and Upsy calls Slack. With Read-only,
slack_send_messageisn't listed and can't be called. Every call is in History, and Upsy emails you when one agent sends 20 or more messages in 10 minutes. Disconnecting Slack in Upsy revokes the token with Slack. - Prompt injection. A message in a channel can carry instructions aimed at your agent. Keep sends confirmed, or give agents that read busy channels Read-only.
FAQ
What is the Slack MCP server URL?
Slack's official server is https://mcp.slack.com/mcp, over Streamable HTTP with OAuth. Upsy's is https://upsy.ai/connect.
Is there an official Slack MCP server?
Yes. Slack runs it at mcp.slack.com, generally available since February 2026. It works through Slack's partner clients, or through a Slack app of your own, and a workspace admin approves it.
Which clients work with Slack's MCP server?
Slack's developer docs name Claude, Claude Code, Cursor and Perplexity. Its help center adds ChatGPT and others. Any other client needs your own internal Slack app.
Does Slack's MCP server work with Codex?
Through the Slack plugin in the ChatGPT desktop app or Codex CLI, yes. Adding the address by hand fails sign-in, because Codex expects dynamic client registration. Upsy works with codex mcp add.
Can a Slack MCP server send messages as me?
Yes. Slack's server, Upsy and korotovsky's server with a user token all post as you. korotovsky's keeps posting off until you turn it on, and Upsy's Read-only removes it.
Is the Slack MCP server free?
Slack doesn't charge for it, but your client may need a paid plan: Claude's Slack connector isn't on Claude's Free plan, for example. Upsy is free for personal use.
What tools does the Slack MCP server have?
27 today: search across public and private conversations, reading channels, threads, canvases, files and lists, sending, scheduling and drafting messages, reactions, and creating canvases and lists. The full list is in its tools.
Playbooks for these apps
Related guides
- How to connect Slack to Codex: Slack MCP setupLet Codex read Slack channels and threads, find people and post as you, from the CLI, IDE extension or desktop app, with no Slack app to build.
- How to connect Slack to Cursor: Slack MCP setupGive Cursor's agent your Slack: read channels and threads, find people and post updates as you, with Slack's plugin or Upsy, and no Slack app to build.
- How to connect Slack to Claude CodeAdd Slack to Claude Code so it can read channels and threads, find people and post updates as you, without creating a Slack app or pasting tokens.
- Claude routines: Claude Code's scheduled tasks, setup and limitsClaude Code routines, now called scheduled tasks: run a prompt on your repos on a schedule, a GitHub event or an API call, with connectors, limits and /loop.
- How to connect Slack to Meta MuseLet Muse read your Slack channels and threads, find people, and post messages as you, with every message it sends logged in your history.
- How to connect Slack to GrokConnect Slack to Grok and Grok Bot: read channels, threads and DMs, send messages as you, or keep it read-only. What works natively and what doesn't.