# Slack MCP connector

The Slack connector lets Claude, ChatGPT, Cursor and other MCP clients read channels and threads, post and edit messages, search conversations, share files and look up people in Slack, with each person acting under their own Slack access.

Source: https://elaichi.ai/connectors/slack/

## Facts

| | |
| --- | --- |
| Application | Slack |
| Category | IM |
| AI tools | 23 |
| Authentication | Connects over OAuth |
| Needs your own OAuth app | Yes |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | Yes |

## What you can ask once Slack is connected

- Summarize the last 50 messages in #support-escalations.
- Which channels did the design team join this month?
- Post the release note to #product-announcements.

## Connect Slack in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Slack.
2. Optionally set Share with, then press Connect.
3. Supply your own Slack app, then approve. Slack needs an OAuth app you register yourself, so bring its client ID and secret. One person does this once for the organization.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Slack tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Slack to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Slack to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Slack to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Slack to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Slack tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Slack through Elaichi

### Catch up on an escalation thread

Support. Ask for the full reply chain in a customer escalation channel and get a plain summary of what was promised, by whom, and what is still open before you answer the customer.

### Post the call recap to the deal channel

Sales. Dictate the notes from a discovery call and have them posted to the account's Slack channel as a tidy message, then fix a wrong figure by editing the message rather than reposting.

### Find where a decision was made

Operations. Search Slack for the conversation where the team agreed on the new vendor, pull the relevant messages, and share the answer with someone who was not in the channel.

### Reach a teammate from an email address

People. Look up a new hire by the address in the HR system, confirm their Slack profile, and open a direct message to send them their first week schedule.

### Review who signed in and from where

IT. Pull the workspace access logs for the last week, list sign-ins from unfamiliar locations, and drop the summary and a supporting file into the security channel.

### Check who is on a paid seat

Finance. List the workspace's billable members against the current headcount so the monthly Slack invoice can be reconciled without asking an admin to export anything.

## Frequently asked questions

### How do I connect Slack to Claude?

First connect Slack inside Elaichi, then in Claude go to Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. Slack requires an OAuth application registered in your own Slack workspace, so an admin brings a client ID and secret once, and after that everyone signs in with the normal Slack authorization screen. Once that is done, each person approves Slack for themselves and no one else touches a credential.

### Does Slack work with ChatGPT and Cursor as well as Claude?

Yes. Slack is connected once in Elaichi and the same endpoint, https://api.elaichi.ai/mcp, is pasted into Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. There is nothing separate to set up for each client.

### What can an AI agent actually do with my Slack data?

Through Elaichi, an agent can read the history and replies in Slack channels you belong to, search across your Slack messages, post new messages, edit or delete ones it posted, join channels and open direct messages. It can also look up people by name or email, list and upload files, and for admins, read workspace access logs and billing information. In everyday terms, it can summarize a thread, draft and post an update, find who said what, and share a file.

### Does connecting Slack give the AI access to every channel in my workspace?

No. Every request to Slack runs as the person who signed in, so the agent sees only the channels, direct messages and files that person can already see in Slack. Elaichi can narrow that further by hiding actions or restricting a team, but it can never grant access to a private Slack channel the person was not already in.

### Can my team share one Slack connection?

Yes. One person registers the Slack application and connects it in Elaichi, then shares the connection with a team, so nobody else ever handles the client ID or secret. Each teammate still signs into Slack as themselves, so their messages post under their own name and the audit log records exactly who did what.

### Can I stop an agent from deleting or changing messages in Slack?

Yes. In Elaichi, restrictions on the Slack connector are set per action, so you can allow reading channels and posting messages while blocking editing, deleting, or uploading files. A blocked action is never shown to Claude, ChatGPT or Cursor at all, so no prompt, however worded, can reach it.

### What happens to a Slack connection when someone leaves the company?

When a person is offboarded in Elaichi, their access to Slack through every connected client ends immediately. A Slack connection shared with a team keeps working for everyone else, and if the company wants to remove Slack entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client at the same time.

## All 23 Slack tools

Every tool below is callable through https://api.elaichi.ai/mcp once Slack is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Slack users** (List). Get a list of all users in the Slack workspace.  Returns user objects including id, team_id, name, deleted status, real_name, timezone info, profile with email and images, admin and bot flags. 
- **Get single Slack user by ID** (Get). Get information about a specific user in Slack by user id. Returns user fields including id, team_id, name, real_name, timezone info, profile details (avatar, status, email, images), and admin/owner flags.
- **List all Slack team billable info** (List). Get billable users information for the current team in Slack. Returns billing_active status for each user indicating billing eligibility per Slack's Fair Billing policy.
- **Get single Slack team billable info by ID** (Get). Get billable users information for the current team in Slack. Returns billing_active status per user indicating eligibility for billing under Slack's Fair Billing policy.
- **List all Slack team access logs** (List). Get access logs for the current team in Slack. Returns user_id, username, date_first, date_last, count, ip, user_agent, isp, country, and region for each access log entry.
- **List all Slack search** (List). Search messages and files matching query in Slack. Requires query parameter. Returns matches with details like channel, user, text, timestamp, and file info if applicable.
- **List all Slack me** (List). Use this endpoint to retrieve profile information for the authenticated user in Slack. It returns details such as user ID, name, email, timezone, and profile metadata. This is typically used to display or manage the current user's information.
- **List all Slack conversations** (List). Get a list of all channel-like conversations in Slack. Returns channels with fields like id, name, is_channel, is_group, is_im, created, creator, is_archived, is_general, topic, purpose, and num_members.
- **Slack conversations join** (Join). Join an existing conversation by channel in Slack. Requires channel. Returns the conversation object including id, name, is_channel, is_member, topic, and purpose fields.
- **Create a Slack chat** (Create). Send a message to a channel in Slack. Requires channel and at least one of text, attachments, or blocks. Returns message object including text, username, attachments, type, subtype, and timestamp (ts).
- **Delete a Slack chat by ID** (Delete). Delete a message in Slack by specifying channel and ts. Returns channel and ts of the deleted message.
- **Update a Slack chat by ID** (Update). Update a message in Slack channel using channel and ts. Returns updated message text, user, channel, and timestamp.
- **List all Slack conversation replies** (List). Get a thread of messages in a conversation in Slack by channel and ts. Returns messages array with fields like type, user, text, thread_ts, reply_count, subscribed, last_read, unread_count, and ts.
- **List all Slack conversation history** (List). Get message history for a conversation in Slack by channel. Requires channel. Returns messages array with message type, user, text, and timestamp fields.
- **List all Slack teams** (List). Get information about the current team in Slack. Requires token. Returns team id, name, domain, email_domain, icon images, enterprise_id, and enterprise_name.
- **List all Slack team billing info** (List). Get workspace billing plan information in Slack. Returns the plan type in the response under the 'plan' field, indicating the workspace's billing plan such as free, pro, or enterprise.
- **Create a Slack conversations open** (Create). Open or resume a direct message or multi-person direct message in Slack. Requires token. Returns channel id and, if return_im is true, full channel details including created, is_im, user, last_read, unread_count, and is_open.
- **List all Slack files** (List). List files filtered by channel, user, team_id, types, ts_from, ts_to, and show_files_hidden_by_limit in Slack. Returns file objects including id, name, mimetype, user, size, url_private, permalink, and channels.
- **Get single Slack file by ID** (Get). Get information about a specific file in Slack by file. Returns file object with id, name, mimetype, user, size, url_private, permalink, comments_count, and shares.
- **Slack files get upload URL external** (Get). Get an external upload URL and file ID for uploading a file in Slack. Requires filename and length. Returns upload_url for file upload and file_id identifying the file.
- **Slack files complete upload external** (Complete). Complete upload of external files with required files array in Slack. Returns file id and title in response. If channel_id is omitted, file remains private. This method finalizes upload started with files.getUploadURLExternal and can only be called once.
- **Create a Slack file** (Create). Use this endpoint to upload and create a file in Slack, making it available for sharing within the workspace.
- **List all Slack lookup by email** (List). Get user information by email in Slack. Requires email. Returns user fields including id, team_id, name, real_name, profile with email and images, is_admin, and other status flags.
