How to connect Slack to Claude Code

Add 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.

Updated

Short answer

There are two ways. If your Slack admin approves it, Slack's official plugin (/plugin install slack@claude-plugins-official) gives Claude Code Slack's own MCP server, with full search. To use several workspaces, or one Slack connection shared with your other assistants, connect Slack in Upsy and run claude mcp add --transport http --scope user upsy https://upsy.ai/connect. Either takes a few minutes, and neither has you create a Slack app or paste a token.

The built-in way: Slack's MCP server

Slack hosts an MCP server at https://mcp.slack.com/mcp (Slack's docs). Its tools search messages, files, people and channels, read channels and threads, send, schedule and draft messages, and work with canvases, lists and reactions.

Slack recommends its plugin for Claude Code (Slack's setup guide). Run this inside a Claude Code session, and sign in to your workspace when asked:

/plugin install slack@claude-plugins-official

What to know before you rely on it:

  • Only listed apps. Slack lets only Marketplace apps and a company's own internal apps use the server, and it doesn't support dynamic client registration. Each client signs in through a Slack app's client ID; Slack's plugin has one built in.
  • Admin approval. A workspace admin has to approve the MCP integration before it works.
  • Claude's Slack connector. On a Claude Team or Enterprise plan, Claude's own Slack connector carries over to Claude Code when you log in with that account. It needs the Claude app installed in Slack first (Claude's docs).
  • Community servers such as slack-mcp-server run on your machine with a user token or browser session tokens you copy out yourself. Posting is off until you turn it on.

Slack's server is the better fit when your admin approves it and you need full-text search, canvases, lists or scheduled messages. Upsy can't do those today.

How Upsy's Slack is different

Upsy connects through its own Slack app and Slack's Web API, with a user token. It acts as you, and no bot joins your channels. Upsy's app isn't in the Slack Marketplace yet, and Slack treats unlisted apps differently:

  • No search yet. Slack's search API is only for Marketplace apps, so Upsy offers slack_search_messages once it's listed. Until then Claude Code finds messages by reading channels and threads.
  • Reading is rate-limited. Slack lets unlisted apps read a channel's or a thread's history about once a minute, 15 messages at a time (Slack's changelog).

What Upsy adds: up to five Slack workspaces in one server, Read-only or hand-picked tools for each assistant, enforced by Upsy, a history of every message sent, alerts, and the same Slack in Cursor, Codex, Claude and ChatGPT, next to Gmail and your other apps. The Claude Code hub covers what else it holds.

What you need

  • Claude Code, logged in any way.
  • A free Upsy account.
  • A Slack workspace where you can install apps. If your workspace requires approval for apps, an admin approves Upsy too.

Connect Slack to Claude Code

  1. Go to upsy.ai and click Set up Upsy to create a free account.

  2. Open Apps and choose Slack. Slack shows its permission page: pick the workspace and allow Upsy to act as you. For another workspace, connect Slack again, up to five.

  3. Optional: on the Assistants page, click Add assistant and pick Claude Code under Which assistant? to see these steps with the command to copy.

  4. In your terminal, run:

    claude mcp add --transport http --scope user upsy https://upsy.ai/connect
    
  5. Start claude, type /mcp, choose upsy and authenticate. Your browser opens an Upsy page.

  6. Sign in, tick Slack, keep full access or switch it to Read-only, and click Allow.

Already use Upsy in Claude Code for Gmail? Skip steps 4 and 5. Open Claude Code on Upsy's Assistants page, turn Slack on, then reconnect upsy from /mcp so Claude Code loads the change.

Check that it works

Ask Claude Code:

Use upsy to show the last 10 messages in #general.

Claude Code asks to run mcp__upsy__slack_read_channel, then prints the messages with their authors, timestamps and reply counts. The tools take a channel name like #general, a channel ID, or a person's user ID for your DM with them.

What Claude Code can do with Slack

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 with oldest and latest Yes
slack_read_thread A thread, from its first message Yes
slack_search_messages Full search across Slack, offered once Upsy is in the Marketplace Yes
slack_send_message Posts as you to a channel, a DM or a thread; reply_broadcast also shows a reply in the channel No

The names match Slack's own MCP server where both have the tool, such as slack_read_channel and slack_send_message. Messages use Slack's mrkdwn: *bold*, and <@U123> to mention someone.

On the Assistants page, each assistant gets Full access, Read-only (everything except sending), Pick actions (the tools you choose) or No access to Slack. With more than one workspace, each tool takes an account argument.

To stop Claude Code asking before each read, allow the reading tools in ~/.claude/settings.json and leave sending out:

{
  "permissions": {
    "allow": ["mcp__upsy__slack_read_*", "mcp__upsy__slack_search_*", "mcp__upsy__slack_list_channels"]
  }
}

Claude Code accepts a wildcard after a literal mcp__upsy__ prefix (permission rules).

Prompts to try

  • "Post a three-line summary of this branch's changes to #releases. Show me the text before you send it."
  • "Read the last hour of #incidents and tell me if anyone mentioned the payments service."
  • "Find Ada in Slack and DM her that the staging deploy is done."
  • "Read the thread at this link and turn its action items into TODO comments in the code."
  • "Reply in that thread that the fix is in PR #482, and broadcast it to the channel."

Troubleshooting

Claude Code can't search Slack

Expected for now: Upsy offers search once it's in the Slack Marketplace. Name the channel ("in #backend") so Claude Code reads it instead, or install Slack's plugin for search.

"Slack is limiting how often Upsy can read messages"

The message ends with how many seconds to wait. It's Slack's limit for unlisted apps. Wait, and point Claude Code at one channel or thread at a time.

"Channel not found, or the user can't see it"

The name is wrong, or it's a private channel you're not in. Ask Claude Code to find it with slack_search_channels first. "The user isn't in that channel" means you have to join it in Slack.

"Slack access was revoked"

Someone removed the app or revoked its access, for example a workspace admin. Reconnect Slack under Apps in Upsy.

Slack asks you to request approval

Your workspace restricts which apps people can install. Send the request; once an admin approves Upsy, connect again.

Both Slack's plugin and Upsy are installed

Claude Code keeps their tools apart (mcp__upsy__… and mcp__plugin_slack_slack__…). Say "use upsy" or "use the Slack plugin" in your prompt to choose one.

Security and privacy

  • Upsy holds a Slack user token. Messages come from you, and Claude Code sees only what you can see in Slack. Claude Code never receives the token.
  • With Read-only, slack_send_message isn't listed and can't be called.
  • Every message Claude Code reads or sends is in Upsy's History under Claude Code. The mass-send alert emails you if one assistant sends 20 or more messages within 10 minutes, and you get an email when a new assistant or app connects.
  • Upsy has no approval step of its own. The confirmation before posting is Claude Code's permission prompt.
  • One click on the Assistants page turns Claude Code off. Disconnecting Slack in Upsy revokes the token with Slack.

FAQ

Is there an official Slack MCP server for Claude Code?

Yes. Install Slack's plugin with /plugin install slack@claude-plugins-official. Your workspace admin has to approve the MCP integration.

Can Claude Code post to Slack as me?

Yes. Upsy's slack_send_message posts as you, not as a bot, to channels, DMs and threads. Slack's own server also sends as you.

Can Claude Code search Slack with Upsy?

Not yet. Slack allows its search API only for Marketplace apps, so until Upsy is listed, Claude Code reads the channels and threads you name.

Can I connect two Slack workspaces to Claude Code?

Yes. Connect up to five in Upsy and allow each for Claude Code. The tools then take an account argument to pick the workspace.

Do I need to create a Slack app?

No. Upsy uses its own Slack app, and Slack's plugin uses a listed one.

Related guides