# Slack [Health: Active]

**Category:** 💬 Communication  
**Repository:** https://github.com/aaronsb/slack-mcp  
**GitHub Stars:** 2  
**npm Downloads (last month):** 846  
**Views:** 1  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/slack

## Description
Read and write Slack with session tokens — no OAuth, no bot, no admin approval.

## Tools
Capabilities this server exposes over MCP:

- **inbox** — What needs you: `view='new'` (since your last dismiss), `'unreads'`, `'mentions'
- **messages** — Conversation content: `target=` reads in full, `+around=` context, `+since=` time window, `query=` raw Slack search syntax (passed as written) plus resolved filters `in`, `from`, `after`, `before`, `has` (link, pin, :emoji:), `thread`; `scheduled=true` lists your pending scheduled messages, soonest…
- **estate** — Workspace shape and relationships: `view='about'\
- **batch** — Run a held plan of reads in one call: `commands=[{tool, params}...]`; playbooks via `save=`/`run=`/`list=`/`delete=
- **say** — Contribute content (Slack-visible): a message (a thread reply can also go to the channel with `broadcast=true`), files from the exchange directory (`files=['report.pdf']`, bare names, at most 10, shared as one message with `text` as the comment), or an emoji reaction; `at=` schedules a message for…
- **dismiss** — Mark inbox items handled — private watermark, invisible to Slack
- **mark-read** — Fire read receipts — the one visibly-public read signal; refused at a quarantined destination, and never opens a DM
- **auth** — Interactive token setup (localhost only)
- **download** — Download a shared file into the exchange directory (`filename=` is a bare name, not a path; a taken name is saved as `name (n).ext` and the result says so)
- **put** — Write a new file into the exchange directory for `say files=` to attach, for clients whose file tools cannot reach the server's filesystem: `name=` (bare name) and exactly one of `content=` (text) or `base64=` (standard alphabet, padding optional); at most 5 MiB; never overwrites (a taken name is s…
- **unlock** — Open a local page in your browser to review and clear quarantines and the strike lock; the page clears, the tool returns no link and never reports what was cleared (ADR-013)

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "slack": {
    "command": "npx",
    "args": ["-y","@aaronsb/slack-mcp"],
    "env": {
      "SLACK_MCP_XOXC_TOKEN": "",
      "SLACK_MCP_XOXD_TOKEN": "",
      "SLACK_MCP_PERSONALITY": "",
      "SLACK_MCP_NO_BROWSER": "",
      "SLACK_MCP_DEPLOYMENT": "",
      "SLACK_MCP_IDLE_TIMEOUT": ""
    }
  }
}
```

**Requires environment variables:** `SLACK_MCP_XOXC_TOKEN`, `SLACK_MCP_XOXD_TOKEN`, `SLACK_MCP_PERSONALITY`, `SLACK_MCP_NO_BROWSER`, `SLACK_MCP_DEPLOYMENT`, `SLACK_MCP_IDLE_TIMEOUT` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What Slack MCP server does

The Slack MCP server connects an MCP client to Slack using the authenticated user's existing browser session. It can inspect inbox items, unread messages, mentions, conversations, threads, scheduled messages, channels, people, and workspace relationships. It can also send messages, reply in threads, broadcast a reply to the channel, add emoji reactions, upload files, schedule messages, and download shared files.

Workspace analysis is available through the `estate` tool. Its views describe workspace structure and relationships, including people, channels, families, initiatives, and convergence. The server builds relationship information when requested from local ledgers that do not contain message content. Selected views can be rendered as a static HTML graph for local viewing.

## How it works

Authentication uses Slack's `xoxc` and `xoxd` browser session tokens. The interactive `auth` tool and the `slack-mcp setup` command can detect supported browsers, select a profile, extract tokens, validate them, and save them. Chrome must be fully closed during automatic extraction. Firefox uses a temporary extension-assisted flow; a localhost page provides manual DevTools instructions if automatic extraction is unavailable.

Reads are normally invisible to other Slack users. Only `mark-read` creates a visible read receipt. `dismiss` stores a private watermark for inbox handling and does not alter Slack. Outgoing messages, files, reactions, and scheduled posts are visible Slack actions and are checked and gated before sending.

## Setup and configuration

For Claude Code, add the server with `claude mcp add slack-mcp -- npx -y @aaronsb/slack-mcp`. Claude Desktop can use a platform-specific `.mcpb` release file. A standalone binary can run over stdio, or with `--transport sse` for SSE. npm installation is also available through `npm install -g @aaronsb/slack-mcp`.

The required token variables are `SLACK_MCP_XOXC_TOKEN` and `SLACK_MCP_XOXD_TOKEN`. They can be supplied directly in the MCP client's environment, or obtained through setup. A working directory `.env` may set only the documented personality and browser-related settings; other undeclared keys cause startup to stop. Remote SSH deployment is experimental and requires explicit deployment configuration.

## Tools and capabilities

The Slack MCP server exposes these main operations:

- `inbox` reads new items, unreads, or mentions.
- `messages` reads conversations, context windows, threads, search results, and scheduled messages.
- `estate` examines workspace structure and relationship views.
- `batch` executes a held set of read commands and manages saved playbooks.
- `say` sends messages, replies, reactions, files, and scheduled posts.
- `dismiss` marks inbox items handled privately; `mark-read` sends a Slack read receipt.
- `download` retrieves shared files, while `put` creates attachment files for clients that cannot access the server filesystem.
- `auth` manages interactive token setup, and `unlock` opens the local quarantine-management page.

File transfers use an exchange directory. `put` accepts text or base64 content, does not overwrite an existing name, and has a 5 MiB limit. `say` can attach up to 10 files in one message.

## Limitations and notes

This Slack MCP server requires an active browser session and depends on session-token access rather than an official OAuth or bot installation. `mark-read` does not open direct messages and is refused at quarantined destinations. Scheduled messages support times from two minutes to 120 days ahead, and timezone mismatches can cause a request to be refused.

SSE and remote deployment should be treated separately: remote deployment is experimental, and idle-timeout settings apply only to supported remote stdio arrangements. On Windows, the npm wrapper may terminate the process forcefully, preventing normal shutdown cleanup. The server is intended for authenticated workspaces where the session owner has the necessary Slack access.

_Full upstream README: https://allmcps.com/mcp/slack/readme_

