Session-based Slack MCP for Claude and MCP clients: local-first workflows, secure-default HTTP.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
claude mcp add slack -- npx -y @jtalk22/slack-mcp{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@jtalk22/slack-mcp"]
}
}
}MCP Servers overview
# Slack MCP Server
[](https://www.npmjs.com/package/@jtalk22/slack-mcp)
[](https://github.com/jtalk22/slack-mcp-server/actions/workflows/ci.yml)
[](https://registry.modelcontextprotocol.io)
[](https://opensource.org/licenses/MIT)
Give your AI agent full Slack access — and structured workflow output the AI can actually use. No app registration, no admin approval, no OAuth. One command, 21 tools, works with any MCP client.
```bash
npx -y @jtalk22/slack-mcp --setup
```
[](https://jtalk22.github.io/slack-mcp-server/public/demo-video.html)
**[▶ Watch the demo](https://jtalk22.github.io/slack-mcp-server/public/demo-video.html)** — 7 scenarios, from 47 unreads to inbox zero, without opening Slack.
> **Ask your AI to catch you up on #engineering from the last 24 hours.** Search for that deployment thread from last week. Find the printer admin PIN nobody can remember. Send a reply. All from your editor.
[Interactive demo](https://jtalk22.github.io/slack-mcp-server/public/demo-slack-mcp.html) · [Latest release](https://github.com/jtalk22/slack-mcp-server/releases/latest)
## Why This Exists
Slack's official MCP server is OAuth-first and can require a registered app, admin approval, or client compatibility workarounds. See the tracked [Claude Code/GitHub Copilot compatibility discussion](https://github.com/anthropics/claude-code/issues/30564). Screenshotting messages is not a workflow.
This server uses your browser's session tokens instead. If you can see it in Slack, your AI agent can see it too. No app install, no scopes, no admin.
**Session-token transport:** No bot user appears in the workspace admin panel, no app install shows up, no audit trail entry is created. Your AI agent operates with the same workspace footprint as your browser tab — nothing more, nothing less.

| | Slack Official MCP | This Server |
|---|---|---|
| OAuth app required | Yes | **No** |
| Admin approval | Yes | **No** |
| Works with Claude Code | No (DCR incompatible) | **Yes** |
| Works with Cursor | No | **Yes** |
| Works with Copilot | No | **Yes** |
| Works with Windsurf | No | **Yes** |
| Works with Gemini CLI | No | **Yes** |
| Works with Codex CLI | No | **Yes** |
| Setup time | ~30 min | **~2 min** |
| Tools | Limited | **21** |
| Visible to admins | Yes | **No — session-token transport** |
## Workflow Primitives
Introduced in 4.2. Save a workflow profile that binds a `workflow_kind` to channels + priority people + retention + cadence. Stored locally at `~/.slack-mcp-workflows.json`. The hosted brain at [mcp.revasserlabs.com](https://mcp.revasserlabs.com) reads these profiles and returns **structured JSON per workflow_kind** — downstream automation (Linear, Notion, status dashboards) consumes the JSON directly.
| `workflow_kind` | Returns (structured JSON) |
|---|---|
| `incident_room` | `{incident_summary, timeline, open_risks, owner_gaps, next_actions}` |
| `exec_brief` | `{summary, decisions, risks, asks, action_items}` |
| `support_inbox` | `{open_threads, ack_lag, owner_gaps, escalations, next_actions}` |
| `product_launch_watch` | `{launch_signals, feedback_themes, blockers, metrics, next_actions}` |
| `custom` | `{summary, highlights, open_questions, next_actions}` |
Six prebuilt templates ship with the package:
```bash
npx -y @jtalk22/slack-mcp --apply-template oncall-handoff --channels C012345,C067890
```
Available templates: `oncall-handoff`, `support-triage`, `exec-monday`, `sprint-tracker`, `customer-feedback`, `incident-room`. The structural primitives (`slack_workflow_save`, `slack_workflows`) are free forever in OSS; the hosted brain is `$0` to start (no card) and `$19/mo` Pro for unlimited AI tools.
## Quick Start per Client
<details>
<summary><strong>Claude Desktop / Claude Code</strong></summary>
Add to `~/.claude.json` or Claude Desktop settings:
```json
{
"mcpServers": {
"slack": { "command": "npx", "args": ["-y", "@jtalk22/slack-mcp"] }
}
}
```
</details>
<details>
<summary><strong>Cursor</strong></summary>
Add to `.cursor/mcp.json`:
```json
{
"mcpServers": {
"slack": { "command": "npx", "args": ["-y", "@jtalk22/slack-mcp"] }
}
}
```
</details>
<details>
<summary><strong>Windsurf</strong></summary>
Add to `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"slack": { "command": "npx", "args": ["-y", "@jtalk22/slack-mcp"] }
}
}
```
</details>
<details>
<summary><strong>Gemini CLI</strong></summary>
Add to `~/.gemini/settings.json`:
```json
{
"mcpServers": {
"slack": { "command": "npx", "args": ["-y", "@jtalk22/slack-mcp"] }
}
}
```
</details>
<details>
<summary><strong>Codex CLI</strong></summary>
Add to `~/.codex/config.toml`:
```toml
[mcp_servers.slack]
command = "npx"
args = ["-y", "@jtalk22/slack-mcp"]
```
Or via CLI: `codex mcp add slack -- npx -y @jtalk22/slack-mcp`
</details>
## Multiple Workspaces
Run work and personal Slack side-by-side — each server instance gets its own credential namespace (token file, Keychain entries, metadata), so setup or refresh in one never touches the other:
```json
{
"mcpServers": {
"slack-work": { "command": "npx", "args": ["-y", "@jtalk22/slack-mcp"], "env": { "SLACK_MCP_PROFILE": "work" } },
"slack-personal": { "command": "npx", "args": ["-y", "@jtalk22/slack-mcp"], "env": { "SLACK_MCP_PROFILE": "personal" } }
}
}
```
Set each profile up once: `npx -y @jtalk22/slack-mcp --setup --profile work`. If the workspaces live in different Chrome profiles, add `SLACK_MCP_CHROME_PROFILE` to point each one's extraction at the right browser profile. Invalid profile names fail closed at startup — same discipline as every other credential setting here.
## Tools
| Tool | Description | Safety |
|------|-------------|--------|
| `slack_health_check` | Verify token validity and workspace info | read-only |
| `slack_token_status` | Token age, health, and cache stats | read-only |
| `slack_refresh_tokens` | Auto-extract fresh tokens from Chrome | read-only* |
| `slack_list_conversations` | List DMs and channels | read-only |
| `slack_conversations_history` ‡ | Get messages from a channel or DM | read-only |
| `slack_get_full_conversation` ‡ | Export full history with threads | read-only |
| `slack_search_messages` ‡ | Search across workspace | read-only |
| `slack_get_thread` ‡ | Get thread replies | read-only |
| `slack_users_info` | Get user details | read-only |
| `slack_list_users` | List workspace users (paginated, 500+) | read-only |
| `slack_users_search` | Search users by name, display name, or email | read-only |
| `slack_conversations_unreads` | Get channels/DMs with unread messages | read-only |
| `slack_send_message` | Send a message to any conversation | **destructive** |
| `slack_add_reaction` | Add an emoji reaction to a message | **destructive** |
| `slack_remove_reaction` | Remove an emoji reaction from a message | **destructive** |
| `slack_conversations_mark` | Mark a conversation as read | **destructive** |
| `slack_workflow_save` | Save a workflow profile (channels, kind, retention, cadence) to `~/.slack-mcp-workflows.json` | local-write |
| `slack_workflows` | List saved workflow profiles | read-only |
| `slack_smart_search` | Semantic search across indexed channels — hosted brain | hosted-stub† |
| `slack_catch_me_up` | AI-summarized digest of unreads + priority threads — hosted brain | hosted-stub† |
| `slack_triage` | Prioritized action queue across channels — hosted brain | hosted-stub† |
21 tools total: 12 read-only Slack, 4 write-path Slack, 2 workflow profile primitives (1 local-write, 1 read-only), 3 hosted stubs. All carry [MCP safety annotations](https://modelcontextprotocol.io/specification/2025-03-26/server/tools#annotations).
\* `slack_refresh_tokens` modifies local token file only.
† Hosted stubs return a structured upgrade payload (`signup_url`, `free_tier_quota`, `pro_value_prop`) — no Slack write occurs from OSS. Activate the brain at [mcp.revasserlabs.com](https://mcp.revasserlabs.com) (free tier, no card).
‡ Also accepts `include_rich_message_fields` to return attachments, blocks, files, reactions, and metadata — see [Rich Message Fields](#rich-message-fields).
## Install
**Node.js 20+**
```bash
npx -y @jtalk22/slack-mcp --setup
```
The setup wizard handles token extraction and validation.
After setup, have your client run `slack_health_check` — a workspace name in the response confirms you are connected.
<details>
<summary><strong>Claude Desktop (macOS)</strong></summary>
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@jtalk22/slack-mcp"]
}
}
}
```
</details>
<details>
<summary><strong>Claude Desktop (Windows/Linux)</strong></summary>
Edit `%APPDATA%\Claude\claude_desktop_config.json`:
```json
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@jtalk22/slack-mcp"],
"env": {
"SLACK_TOKEN": "xoxc-your-token",
"SLACK_COOKIE": "xoxd-your-cookie"
}
}
}
}
```
> Windows/Linux users must provide tokens via `env` since auto-refresh is macOS-only.
</details>
<details>
<summary><strong>Claude Code</strong></summary>
Add to `~/.claude.json`:
```json
{
"mcpServers": {
"slack": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@jtalk22/slack-mcp"]
}
}
}
```
Or via CLI: `claude mcp add slack -- npx -y @jtalk22/slack-mcp`
</details>
<details>
<summary><strong>Cursor / Copilot / Other MCP clients</strong></summary>
Any client that suppWhat people ask about slack-mcp-server
What is jtalk22/slack-mcp-server?
+
jtalk22/slack-mcp-server is mcp servers for the Claude AI ecosystem. Session-based Slack MCP for Claude and MCP clients: local-first workflows, secure-default HTTP. It has 29 GitHub stars and was last updated today.
How do I install slack-mcp-server?
+
You can install slack-mcp-server by cloning the repository (https://github.com/jtalk22/slack-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is jtalk22/slack-mcp-server safe to use?
+
Our security agent has analyzed jtalk22/slack-mcp-server and assigned a Trust Score of 82/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.
Who maintains jtalk22/slack-mcp-server?
+
jtalk22/slack-mcp-server is maintained by jtalk22. The last recorded GitHub activity is from today, with 1 open issues.
Are there alternatives to slack-mcp-server?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy slack-mcp-server to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/jtalk22-slack-mcp-server)<a href="https://claudewave.com/repo/jtalk22-slack-mcp-server"><img src="https://claudewave.com/api/badge/jtalk22-slack-mcp-server" alt="Featured on ClaudeWave: jtalk22/slack-mcp-server" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface