slack-desktop-mcp
Enables Slack integration by using the session from the Slack desktop app, allowing access to Slack MCP tools without requiring API tokens.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@slack-desktop-mcpwhat's the latest message in #general?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
slack-desktop-mcp
Runs korotovsky/slack-mcp-server
against the session your Slack desktop app is already signed into. No Slack
API tokens to create, store, or rotate.
Prerequisite: bunx (Bun). The MCP server binary is
downloaded on first use.
Register it
SLACK_WORKSPACE_MATCH selects the workspace when you're signed into several;
omit it and the last-active one wins.
Claude Code
claude mcp add slack --env SLACK_WORKSPACE_MATCH=acme -- bunx slack-desktop-mcpClaude Desktop — edit its config, then fully quit and relaunch it (the file is read only at startup):
OS | Path |
macOS |
|
Windows |
|
Linux |
|
{
"mcpServers": {
"slack": {
"command": "bunx",
"args": ["slack-desktop-mcp"],
"env": { "SLACK_WORKSPACE_MATCH": "acme" }
}
}
}Spawn/ENOENT error means the GUI-launched app didn't inherit a PATH containing
bunx; use its absolute path (which bunx) as command.
slack-desktop-mcp --help lists the flags.
Related MCP server: slack-mcp-claude-auth
How it works
A cached session that still passes
auth.testis used as-is — Slack is never touched.Otherwise Slack is launched with
--remote-debugging-pipeand CDP over the inherited fds (no TCP port) reads thedcookie and the xoxc token out oflocalStorage, then the launched instance is closed again. Both reads are polled: the page target exists before the client has written its session.slack-mcp-serveris fetched from GitHub Releases, cached per version, and exec'd with the tokens in its environment — it becomes the MCP server on this process's stdio, which is why all logging here goes to stderr.
Slack already running elsewhere owns its single-instance lock, so step 2 fails fast rather than disturbing that window; quit Slack and retry.
It relaunches itself once under bun --use-system-ca, so step 1 trusts the
machine's certificate store; a TLS-intercepting proxy fails it otherwise. If
step 1 can't complete at all, the cached session is used unverified rather
than treated as expired — relaunching Slack can't fix an unreachable slack.com.
Step 2 costs a Slack launch plus its sign-in, which can exceed an MCP client's
connect timeout; Claude Code takes MCP_TIMEOUT (ms) if a cold start trips it.
Failures also raise a native dialog, because MCP clients don't surface a stdio
server's stderr. --no-ui keeps it headless.
~/.cache/slack-desktop-mcp/ holds session.json (mode 600), the downloaded
binaries, and refresh.lock. Only one process may drive Slack at a time: the
holder clears the cached session on acquire and keeps the lock while its dialog
is up, so the cache only ever holds a session some refresh completed. Anyone who
blocks on the lock never launches Slack itself — it re-reads the cache when the
lock frees, and exits nonzero on stderr alone if the holder produced nothing. A
lock older than 120s is treated as abandoned.
This server cannot be deployed
Maintenance
Related MCP Connectors
Host your MCP tool over streamable HTTP in one command.
MCP server to assist with JxBrowser development.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Security research canary remote MCP server for owned-account testing.
Related MCP Servers
- AlicenseBqualityDmaintenanceThe most powerful MCP server for Slack Workspaces. This integration supports both Stdio and SSE transports, proxy settings and does not require any permissions or bots being created or approved by Workspace admins 😏.21,814MIT
- FlicenseNot gradedqualityBmaintenanceLocal stdio MCP proxy for the official Slack MCP endpoint, using Claude's Slack plugin for authentication to enable Slack integration via MCP without needing a custom Slack app.-
- AlicenseNot gradedqualityAmaintenanceLocal MCP stdio bridge to Slack's hosted MCP server, enabling agents to use Slack tools (send messages, search, history, canvas, etc.) via local OAuth and token refresh.41 npmMIT
- AlicenseAqualityCmaintenanceMCP server that reads Slack through your own browser session, authenticating as you rather than a bot. Provides tools to search messages, retrieve channel/DM/thread history, resolve users, and post messages (write disabled by default).10MIT