# How to connect Slack to Cursor: Slack MCP setup

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

Updated 2026-11-01 · https://upsy.ai/guides/cursor/slack

## Short answer

Type `/add-plugin slack` in Cursor's Agent chat to install Slack's own plugin, then sign in to your workspace. It needs a Slack admin's approval and gives full search. To use several workspaces, have read-only enforced, or share one Slack connection with your other assistants, connect Slack in Upsy and add `https://upsy.ai/connect` to `~/.cursor/mcp.json`. Either takes a few minutes, and neither has you create a Slack app or paste a token.

Not to be confused with **@Cursor in Slack**, which works the other way: you mention Cursor in a Slack thread to start a Cloud Agent on your code.

## The built-in way: Slack's plugin

Slack publishes an official plugin in the [Cursor Marketplace](https://cursor.com/marketplace/slack). It connects Cursor to Slack's MCP server at `https://mcp.slack.com/mcp` and adds skills and commands such as channel digests, standups and announcement drafts ([Slack's docs](https://docs.slack.dev/ai/slack-skills-plugin)). Install it one of two ways:

- Type `/add-plugin slack` in Agent chat.
- Open **Customize**, find Slack in the Marketplace, click **Install** and pick your user or the project.

Cursor asks you to sign in to Slack the first time a Slack tool runs. The plugin's server works in the editor, the Agent Window and the CLI. Its tools search messages, files, people and channels, read channels and threads, send, schedule and draft messages, and work with canvases and lists ([Slack MCP server](https://docs.slack.dev/ai/slack-mcp-server/)).

What to know before you rely on it:

- **Admin approval.** Your workspace admin has to approve Slack's MCP integration. "Not authorized to install" in the sign-in means it's waiting for that ([Cursor forum](https://forum.cursor.com/t/cursor-slack-mcp-oauth-is-broken/159803)).
- **Only listed apps.** Slack lets only Marketplace apps and a company's internal apps use its server, without dynamic client registration. The plugin carries a Slack client ID for this, so adding `mcp.slack.com` to `mcp.json` by hand doesn't sign in.
- **Nightly builds.** Cursor Nightly can't complete Slack's sign-in, because of its callback address ([Cursor forum](https://forum.cursor.com/t/nightlycursor-slack-mcp-plugin-still-does-not-work/163261)).

Slack's plugin 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.

### @Cursor in Slack

Cursor's [Slack integration](https://cursor.com/docs/integrations/slack) lets your team mention `@Cursor` in a channel or thread. Cursor reads the thread, starts a Cloud Agent on your repo and posts back a plan and a pull request. It needs a Premium plan or higher, Teams, Enterprise or a legacy paid plan, and it's set up in Cursor's dashboard. It doesn't give the agent in your editor access to Slack. For that, you need one of the MCP servers on this page.

### Community servers

[slack-mcp-server](https://github.com/korotovsky/slack-mcp-server) runs on your machine with a Slack user token, a bot token, or session tokens copied out of your browser. Posting is off until you turn it on with `SLACK_MCP_ADD_MESSAGE_TOOL`. Slack's older reference server, `@modelcontextprotocol/server-slack`, is archived.

## How Upsy's Slack is different

Upsy connects through its own Slack app and Slack's Web API, with a user token, so it acts as you and no bot joins your channels. Its app isn't in the Slack Marketplace yet, which has two effects:

- **No search yet.** Slack's search API is only for Marketplace apps. Upsy offers `slack_search_messages` once it's listed; until then Cursor finds messages by reading the channels and threads you name.
- **Reading is rate-limited.** Slack lets unlisted apps read a channel's or 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 it adds: up to five Slack workspaces in one server, Read-only or hand-picked tools enforced by Upsy, a history of every message Cursor sent, alerts, and the same Slack in the Cursor CLI, Claude Code, Codex, Claude and ChatGPT, next to Gmail and your other apps. The [Cursor hub](/guides/cursor) covers what else it holds.

## What you need

- Cursor, on any plan.
- 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 Cursor

1. Go to [upsy.ai](https://upsy.ai) and click **Set up Upsy** to create a free account.
2. Open **Apps** and choose Slack. On Slack's permission page, pick the workspace and allow Upsy to act as you. Connect Slack again for each other workspace, up to five.
3. Optional: on the **Assistants** page, click **Add assistant** and pick Cursor under **Which assistant?** to see these steps with the snippet to copy.
4. Add Upsy to `~/.cursor/mcp.json` (create the file if it isn't there):

   ```json
   {"mcpServers":{"upsy":{"url":"https://upsy.ai/connect"}}}
   ```

5. In Cursor, open **Customize › MCPs** and click **Connect** next to upsy. 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 Cursor? Skip steps 4 and 5. Turn Slack on for Cursor on Upsy's Assistants page, then turn upsy off and on in Customize so Cursor loads the new tools.

## Check that it works

Ask Cursor's agent:

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

Cursor asks to run `slack_read_channel` from upsy, then shows the messages with authors, times 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 Cursor can do with Slack

| Tool | What it does | In Read-only |
|---|---|---|
| `slack_list_channels` | Channels, group DMs and DMs you're in | Yes |
| `slack_search_channels` | Channels by name, with topic and member count | Yes |
| `slack_search_users` | 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, between `oldest` and `latest` | Yes |
| `slack_read_thread` | A whole thread, from its first message | Yes |
| `slack_search_messages` | Full search, once Upsy is in the Slack Marketplace | Yes |
| `slack_send_message` | Posts as you to a channel, DM or thread; `reply_broadcast` also shows a reply in the channel | No |

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

On Upsy's Assistants page, Cursor gets **Full access**, **Read-only** (everything except sending), **Pick actions** or **No access** to Slack. With more than one workspace, each tool takes an `account` argument.

To let Cursor read without asking but still ask before it posts, allowlist the reading tools in `~/.cursor/permissions.json` ([permissions](https://cursor.com/docs/reference/permissions)):

```json
{ "mcpAllowlist": ["upsy:slack_read_*", "upsy:slack_search_*", "upsy:slack_list_channels"] }
```

## Prompts to try

- "Read the thread at this Slack link and fix the bug it describes. Then reply in the thread with the PR link."
- "Summarize what changed on this branch and post it to #releases. Show me the text first."
- "Read the last hour of #incidents and check whether anyone mentioned the payments service or the files I have open."
- "Find Ada in Slack and DM her that the staging deploy is done."
- "Turn the action items in my thread with Sam into TODO comments where they belong in the code."

## Troubleshooting

### Cursor can't search Slack

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

### "Slack is limiting how often Upsy can read messages"

The message says how many seconds to wait. It's Slack's limit for unlisted apps. Wait, and point Cursor 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 Cursor to find it with `slack_search_channels` first.

### Slack's plugin fails with "Must use PKCE"

An older Cursor bug. Update Cursor, run **Clear All MCP Tokens** from the command palette, and sign in again ([Cursor forum](https://forum.cursor.com/t/slack-mcp-auth-fails-with-must-use-pkce-to-redirect-to-a-non-web-uri/158746)).

### Both Slack's plugin and Upsy are installed

Cursor lists their tools under separate servers. Say "use upsy" or "use the Slack plugin" in your prompt, or turn one off in Customize.

## Security and privacy

- Upsy holds a Slack user token, so Cursor sees only what you can see in Slack. Cursor never receives the token.
- With Read-only, `slack_send_message` isn't listed and can't be called, whatever Cursor's run mode is.
- Every message Cursor reads or sends is in Upsy's History under Cursor. Upsy emails you if one assistant sends 20 or more messages within 10 minutes, and when a new assistant or app connects.
- One click on the Assistants page turns Cursor off. Disconnecting Slack in Upsy revokes the token with Slack.

## FAQ

### Is there an official Slack MCP server for Cursor?

Yes. Slack's plugin in the Cursor Marketplace connects Cursor to Slack's MCP server. Install it with `/add-plugin slack`; a workspace admin has to approve it.

### Is @Cursor in Slack the same as Slack MCP?

No. @Cursor in Slack starts a Cloud Agent from a Slack thread. Slack MCP gives Cursor's agent tools to read and post in Slack while you work in the editor.

### Can Cursor post to Slack as me?

Yes. Upsy's `slack_send_message` posts as you, not as a bot. Slack's own plugin also posts as you.

### Does Slack work in the Cursor CLI?

Yes. The CLI reads the same `mcp.json`. Run `agent mcp login upsy` once to sign in from the terminal.

### Can I connect two Slack workspaces to Cursor?

With Upsy, yes: connect up to five and allow each for Cursor. Slack's plugin signs in to one workspace.

---

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.
