# 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 2026-10-10 · https://upsy.ai/guides/claude-code/slack

## 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](https://docs.slack.dev/ai/slack-mcp-server/)). 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](https://docs.slack.dev/ai/slack-mcp-server/connect-to-harnesses)). 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](https://github.com/slackapi/slack-mcp-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](https://claude.com/docs/connectors/slack)).
- **Community servers** such as [slack-mcp-server](https://github.com/korotovsky/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](https://docs.slack.dev/changelog/2025/05/29/rate-limit-changes-for-non-marketplace-apps)).

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](/guides/claude-code) 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](https://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:

```json
{
  "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](https://code.claude.com/docs/en/permissions)).

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

---

Upsy connects personal AI assistants (Muse, Grok, ChatGPT, Claude, Cursor, Claude Code, Codex, Devin) to your Gmail, Google Calendar, Google Drive, Slack, Notion and other apps through one MCP server, with a shared memory, files and a cloud browser signed in to your sites. You choose what each assistant may do in each app, see everything it did, and turn it off in one click. Upsy is free. To add Upsy to an assistant, add a remote MCP server (Streamable HTTP) named Upsy at https://upsy.ai/connect. It signs in with OAuth; there is no API key.
